@ -0,0 +1,48 @@ |
|||
.. image:: https://img.shields.io/badge/licence-LGPL--3-green.svg |
|||
:target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html |
|||
:alt: License: LGPL-3 |
|||
|
|||
Find Products in Pos and Stock using Barcode |
|||
============================================ |
|||
Find the product using barcode in the pos and inventory |
|||
|
|||
Configuration |
|||
============= |
|||
No additional configuration required |
|||
|
|||
Company |
|||
------- |
|||
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
|||
|
|||
License |
|||
------- |
|||
General Public License, Version 3 (LGPL v3). |
|||
(https://www.gnu.org/licenses/lgpl-3.0-standalone.html) |
|||
|
|||
Credits |
|||
------- |
|||
Developer: (V15) Gayathri V, |
|||
(V16) Gokul P I , |
|||
Contact: 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,22 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V (odoo@cybrosys.com) |
|||
# |
|||
# You can modify it under the terms of the GNU LESSER |
|||
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
|||
# |
|||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
|||
# (LGPL v3) along with this program. |
|||
# If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################# |
|||
from . import models |
@ -0,0 +1,69 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V (odoo@cybrosys.com) |
|||
# |
|||
# You can modify it under the terms of the GNU LESSER |
|||
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
|||
# |
|||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
|||
# (LGPL v3) along with this program. |
|||
# If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################# |
|||
{ |
|||
'name': 'Find Products in Pos and Stock using Barcode', |
|||
'version': '15.0.1.0.0', |
|||
'category': 'Point of Sale', |
|||
'summary': 'Find Products in Pos and Stock using Barcode utilizes barcode' |
|||
' scanning to quickly identify and track items. Each product' |
|||
' is assigned a unique barcode,', |
|||
'description': 'Find Products in Pos and Stock using Barcode in the POS' |
|||
' and inventory modules brings numerous benefits to ' |
|||
'retailers.It enhances operational efficiency, reduces ' |
|||
'manual errors, improves customer service, and provides ' |
|||
'valuable insights for better inventory management and ' |
|||
'business decision-making.', |
|||
'author': 'Cybrosys Techno Solutions', |
|||
'company': 'Cybrosys Techno Solutions', |
|||
'maintainer': 'Cybrosys Techno Solutions', |
|||
'website': "https://www.cybrosys.com", |
|||
'depends': ['point_of_sale', 'stock'], |
|||
'data': [ |
|||
'views/stock_views.xml' |
|||
], |
|||
'assets': { |
|||
'point_of_sale.assets': [ |
|||
'product_detail_search/static/src/css/pos.css', |
|||
'product_detail_search/static/src/js/find_product_button.js', |
|||
'product_detail_search/static/src/js/find_product.js', |
|||
'product_detail_search/static/src/js/product_details.js', |
|||
], |
|||
'web.assets_qweb': [ |
|||
'/product_detail_search/static/src/xml/find_product_button_templates.xml', |
|||
'/product_detail_search/static/src/xml/find_product_screen_templates.xml', |
|||
'/product_detail_search/static/src/xml/product_details_templates.xml', |
|||
'/product_detail_search/static/src/xml/chrome_templates.xml', |
|||
'/product_detail_search/static/src/xml/dashboard_templates.xml', |
|||
], |
|||
'web.assets_backend': [ |
|||
'/product_detail_search/static/src/css/barcode.css', |
|||
'/product_detail_search/static/src/js/dashboard.js', |
|||
], |
|||
}, |
|||
'images': [ |
|||
'static/description/banner.png', |
|||
], |
|||
'license': 'LGPL-3', |
|||
'installable': True, |
|||
'application': False, |
|||
'auto_install': False, |
|||
} |
@ -0,0 +1,6 @@ |
|||
## Module <product_detail_search> |
|||
|
|||
#### 06.07.2024 |
|||
#### Version 15.0.1.0.0 |
|||
#### ADD |
|||
- Initial commit for Find Products in Pos and Stock using Barcode |
@ -0,0 +1,22 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V (odoo@cybrosys.com) |
|||
# |
|||
# You can modify it under the terms of the GNU LESSER |
|||
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
|||
# |
|||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
|||
# (LGPL v3) along with this program. |
|||
# If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################# |
|||
from . import product_template |
@ -0,0 +1,57 @@ |
|||
# -*- coding: utf-8 -*- |
|||
############################################################################# |
|||
# |
|||
# Cybrosys Technologies Pvt. Ltd. |
|||
# |
|||
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) |
|||
# Author: Gayathri V (odoo@cybrosys.com) |
|||
# |
|||
# You can modify it under the terms of the GNU LESSER |
|||
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. |
|||
# |
|||
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE |
|||
# (LGPL v3) along with this program. |
|||
# If not, see <http://www.gnu.org/licenses/>. |
|||
# |
|||
############################################################################# |
|||
from odoo import models |
|||
|
|||
|
|||
class ProductTemplate(models.Model): |
|||
"""Inheriting The product template for adding the product_detail_search |
|||
method""" |
|||
_inherit = 'product.template' |
|||
|
|||
def product_detail_search(self, barcode): |
|||
"""Find the details for the product When the barcode Scan is |
|||
Detected""" |
|||
product = self.env['product.product'].search( |
|||
[('barcode', '=', barcode)]) |
|||
if product: |
|||
product_details = product.read() |
|||
specification = [color.strip() for color in |
|||
product_details[0]['display_name'].split("(")[ |
|||
-1].split(")")[0].split(",")] |
|||
symbol = self.env['res.currency'].browse( |
|||
int(product_details[0]['currency_id'][0])) |
|||
extra_details = {'symbol': str(symbol.symbol)} |
|||
if product_details[0]['taxes_id']: |
|||
extra_details.update({'tax_amount': str( |
|||
self.env['account.tax'].browse( |
|||
int(product_details[0]['taxes_id'][0])).name)}) |
|||
else: |
|||
extra_details.update({'tax_amount': 'No tax', |
|||
'specification': specification}) |
|||
product_type = dict(self._fields['detailed_type'].selection).get(product.detailed_type) |
|||
extra_details.update({'product_type': product_type}) |
|||
product_details[0].update(extra_details) |
|||
|
|||
return product_details |
|||
else: |
|||
product_details = False |
|||
return product_details |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 310 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 878 B |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 427 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 589 B |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 967 B |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 126 KiB |
After Width: | Height: | Size: 92 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 124 KiB |
After Width: | Height: | Size: 158 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 8.4 KiB |
@ -0,0 +1,664 @@ |
|||
<div class="container" |
|||
style="padding: 1rem !important; margin-bottom: 1rem !important;"> |
|||
<div class="row"> |
|||
<div class="col-sm-12 col-md-12 col-lg-12 d-flex justify-content-between" |
|||
style="border-bottom: 1px solid #d5d5d5;"> |
|||
<div class="my-3"> |
|||
<img src="./assets/icons/logo.png" |
|||
style="width: auto !important; height: 40px !important;"> |
|||
</div> |
|||
<div class="my-3 d-flex align-items-center"> |
|||
<div |
|||
style="background-color: #7C7BAD !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;"> |
|||
<i class="fa fa-check mr-1"></i>Community |
|||
</div> |
|||
<div |
|||
style="background-color: #875A7B !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;"> |
|||
<i class="fa fa-check mr-1"></i>Enterprise |
|||
</div> |
|||
<div |
|||
style="background-color: #185A7B !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;"> |
|||
<i class="fa fa-check mr-1"></i>Odoo.sh |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF TITLE BAR --> |
|||
|
|||
<!-- APP HERO --> |
|||
<div class="container" style="padding: 0rem 1.5rem 4rem !important"> |
|||
<div class="row" style="height: 900px !important;"> |
|||
<div class="col-sm-12 col-md-12 col-lg-12" |
|||
style="padding: 4rem 1rem !important; background-color: #714B67 !important; height: 600px !important; border-radius: 20px !important;"> |
|||
<h1 |
|||
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #FFFFFF !important; font-size: 3.5rem !important; text-align: center !important;"> |
|||
Find Products in Pos and Stock using Barcode</h1> |
|||
<p |
|||
style="font-family: 'Montserrat', sans-serif !important; font-weight: 300 !important; color: #FFFFFF !important; font-size: 1.4rem !important; text-align: center !important;"> |
|||
Find Products Using Barcode In The Inventory and POS. |
|||
</p> |
|||
<img src="./assets/screenshots/hero.gif" class="img-responsive" |
|||
width="100%" height="auto"/> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF APP HERO --> |
|||
|
|||
<!-- NAVIGATION SECTION --> |
|||
<div class="d-flex align-items-center" |
|||
style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;"> |
|||
<div class="d-flex justify-content-center align-items-center mr-2" |
|||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
|||
<img src="assets/misc/compass.png"/> |
|||
</div> |
|||
<h2 class="mt-2" |
|||
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
|||
Explore This |
|||
Module</h2> |
|||
</div> |
|||
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;"> |
|||
<div class="col-sm-12 col-md-6 my-3"> |
|||
<a href="#overview"> |
|||
<div class="d-flex justify-content-between align-items-center" |
|||
style="background-color: #f5f5f5; padding: 30px; width: 100%;"> |
|||
<div> |
|||
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span> |
|||
<span |
|||
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn |
|||
more about this |
|||
module</span> |
|||
</div> |
|||
<img src="assets/misc/right-arrow.png" width="36" height="36"/> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-sm-12 col-md-6 my-3"> |
|||
<a href="#features"> |
|||
<div class="d-flex justify-content-between align-items-center" |
|||
style="background-color: #f5f5f5; padding: 30px; width: 100%;"> |
|||
<div> |
|||
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span> |
|||
<span |
|||
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View |
|||
features of this |
|||
module</span> |
|||
</div> |
|||
<img src="assets/misc/right-arrow.png" width="36" height="36"/> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-sm-12 col-md-6 my-3"> |
|||
<a href="#screenshots"> |
|||
<div class="d-flex justify-content-between align-items-center" |
|||
style="background-color: #f5f5f5; padding: 30px; width: 100%;"> |
|||
<div> |
|||
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span> |
|||
<span |
|||
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View |
|||
screenshots for this |
|||
module</span> |
|||
</div> |
|||
<img src="assets/misc/right-arrow.png" width="36" height="36"/> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<!-- END OF NAVIGATION SECTION --> |
|||
|
|||
<!-- OVERVIEW SECTION --> |
|||
<div class="d-flex align-items-center" |
|||
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" |
|||
id="overview"> |
|||
<div class="d-flex justify-content-center align-items-center mr-2" |
|||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
|||
<img src="assets/misc/pie-chart.png"/> |
|||
</div> |
|||
<h2 class="mt-2" |
|||
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
|||
Overview |
|||
</h2> |
|||
</div> |
|||
<div class="row" |
|||
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> |
|||
<div class="col-sm-12 py-4"> |
|||
Find Products in Pos and Stock using Barcode App for Odoo 15 is a |
|||
powerful tool designed to streamline and simplify the process of |
|||
retrieving product information by scanning barcodes. By harnessing the |
|||
power of barcode scanning technology, this feature enables businesses to |
|||
streamline operations and enhance efficiency. In the POS module, the |
|||
Find Products in POS and Stock using Barcode simplifies the checkout |
|||
experience for both cashiers and customers. Instead of manually |
|||
searching for products or entering item details, cashiers can quickly |
|||
scan the barcodes, which automatically add the products to the |
|||
transaction, calculate the total cost, and generate a receipt. |
|||
</div> |
|||
</div> |
|||
<!-- END OF OVERVIEW SECTION --> |
|||
|
|||
<!-- FEATURES SECTION --> |
|||
<div class="d-flex align-items-center" |
|||
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" |
|||
id="features"> |
|||
<div class="d-flex justify-content-center align-items-center mr-2" |
|||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
|||
<img src="assets/misc/features.png"/> |
|||
</div> |
|||
<h2 class="mt-2" |
|||
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
|||
Features |
|||
</h2> |
|||
</div> |
|||
<div class="row" |
|||
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> |
|||
<div class="col-sm-12 col-md-6"> |
|||
<div class="d-flex align-items-center" |
|||
style="margin-top: 40px; margin-bottom: 40px"> |
|||
<img src="assets/misc/check-box.png" class="mr-2"/> |
|||
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Efficient Product Identification: A barcode-based Find Products in Pos and Stock using Barcode in the Point of Sale (POS) and inventory module offers a quick and accurate way to identify products. By scanning the barcode, the system instantly retrieves the product information, eliminating the need for manual searching or data entry. </span> |
|||
</div> |
|||
<div class="d-flex align-items-center" |
|||
style="margin-top: 30px; margin-bottom: 30px"> |
|||
<img src="assets/misc/check-box.png" class="mr-2"/> |
|||
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Reduced Training Time: Barcode-based Find Products in Pos and Stock using Barcode simplify the training process for new employees. Instead of memorizing product codes or searching through a complex inventory system, they can quickly learn to use the barcode scanner.</span> |
|||
</div> |
|||
<div class="d-flex align-items-center" |
|||
style="margin-top: 30px; margin-bottom: 30px"> |
|||
<img src="assets/misc/check-box.png" class="mr-2"/> |
|||
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Compliance and Regulatory Requirements: Barcode-based systems can assist businesses in meeting compliance and regulatory requirements. For instance, in industries such as healthcare or pharmaceuticals, barcodes can be used to comply with track-and-trace regulations, ensuring the proper identification and tracing of products throughout the supply chain.</span> |
|||
</div> |
|||
<div class="d-flex align-items-center" |
|||
style="margin-top: 30px; margin-bottom: 30px"> |
|||
<img src="assets/misc/check-box.png" class="mr-2"/> |
|||
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Enhanced Product Traceability: With a barcode-based system, each product can be uniquely identified and tracked throughout its lifecycle. This enables businesses to monitor product movement, trace batches or lots, and facilitate recalls or warranty processes if necessary. It enhances transparency, quality control, and customer safety.</span> |
|||
</div> |
|||
<div class="d-flex align-items-center" |
|||
style="margin-top: 30px; margin-bottom: 30px"> |
|||
<img src="assets/misc/check-box.png" class="mr-2"/> |
|||
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Increased Operational Efficiency: By leveraging barcode scanning technology in the POS and inventory module, businesses can achieve higher operational efficiency. Employees spend less time manually searching for products, reconciling inventory, or correcting errors. This frees up time for more critical tasks, improves productivity, and contributes to a smoother overall workflow.</span> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF FEATURES SECTION --> |
|||
<!-- SCREENSHOTS SECTION --> |
|||
<div class="d-flex align-items-center" |
|||
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" |
|||
id="screenshots"> |
|||
<div class="d-flex justify-content-center align-items-center mr-2" |
|||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
|||
<img src="assets/misc/pictures.png"/> |
|||
</div> |
|||
<h2 class="mt-2" |
|||
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
|||
Screenshots |
|||
</h2> |
|||
</div> |
|||
<div class="row"> |
|||
<div class="col-sm-12"> |
|||
<div style="display: block; margin: 30px auto;"> |
|||
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
|||
Find Product Details in the Inventory </h3> |
|||
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |
|||
Navigate to the Inventory, where you'll find the 'Find Product' menu. Click on the menu and proceed to |
|||
scan the barcode into designated text field. </p> |
|||
<img src="assets/screenshots/screenshot 1.png" |
|||
class="img-thumbnail"> |
|||
</div> |
|||
<div style="display: block; margin: 30px auto;"> |
|||
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
|||
Once you scan the barcode, you will be able to view the corresponding product details below.</h3> |
|||
<img src="assets/screenshots/screenshot_2.png" |
|||
class="img-thumbnail"> |
|||
</div> |
|||
<div style="display: block; margin: 30px auto;"> |
|||
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
|||
Find Product Details in the POS </h3> |
|||
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |
|||
A new button called "Find Products" in POS.</p> |
|||
<img src="assets/screenshots/Screenshot3.png" |
|||
class="img-thumbnail"> |
|||
</div> |
|||
<div style="display: block; margin: 30px auto;"> |
|||
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
|||
On clicking "Find Products" button, will redirect to a window where you can scan your product barcode |
|||
.</h3> |
|||
<img src="assets/screenshots/Screenshot4.png" |
|||
class="img-thumbnail"> |
|||
</div> |
|||
<div style="display: block; margin: 30px auto;"> |
|||
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
|||
After scanning, you can see corresponding product details.</h3> |
|||
<img src="assets/screenshots/screenshot_5.png" |
|||
class="img-thumbnail"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF SCREENSHOTS SECTION --> |
|||
|
|||
<!-- RELATED PRODUCTS --> |
|||
<div class="d-flex align-items-center" |
|||
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |
|||
<div class="d-flex justify-content-center align-items-center mr-2" |
|||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
|||
<img src="assets/misc/categories.png"/> |
|||
</div> |
|||
<h2 class="mt-2" |
|||
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
|||
Related |
|||
Products |
|||
</h2> |
|||
</div> |
|||
<div class="row"> |
|||
<div class="col-lg-12 d-flex flex-column justify-content-center" |
|||
style="text-align: center; padding: 2.5rem 1rem !important;"> |
|||
<h2 style="color: #212529 !important;">Suggested Products</h2> |
|||
<hr |
|||
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/> |
|||
|
|||
<div id="demo1" class="row carousel slide" data-ride="carousel"> |
|||
<!-- The slideshow --> |
|||
<div class="carousel-inner"> |
|||
<div class="carousel-item active" |
|||
style="min-height:0px"> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
|||
style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/custom_receipts_for_pos/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="./assets/modules/1.jpg"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
|||
style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/dashboard_pos/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="./assets/modules/2.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
|||
style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/low_stocks_product_alert/#" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="./assets/modules/3.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
<div class="carousel-item" style="min-height:0px"> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
|||
style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/login_pos_direct/#" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="./assets/modules/4.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
|||
style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/pos_discount_manager/#" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="./assets/modules/5.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
|||
style="float:left"> |
|||
<a href="https://apps.odoo.com/apps/modules/15.0/pos_add_product_webcam_barcode/" |
|||
target="_blank"> |
|||
<div style="border-radius:10px"> |
|||
<img class="img img-responsive center-block" |
|||
style="border-top-left-radius:10px; border-top-right-radius:10px" |
|||
src="./assets/modules/6.png"> |
|||
</div> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- Left and right controls --> |
|||
<a class="carousel-control-prev" href="#demo1" |
|||
data-slide="prev" |
|||
style="left:-25px;width: 35px;color: #000;"> |
|||
<span class="carousel-control-prev-icon"><i |
|||
class="fa fa-chevron-left" |
|||
style="font-size:24px"></i></span> </a> |
|||
<a class="carousel-control-next" href="#demo1" |
|||
data-slide="next" |
|||
style="right:-25px;width: 35px;color: #000;"> |
|||
<span class="carousel-control-next-icon"><i |
|||
class="fa fa-chevron-right" |
|||
style="font-size:24px"></i></span> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF RELATED PRODUCTS --> |
|||
<!-- OUR SERVICES --> |
|||
<div class="d-flex align-items-center" |
|||
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |
|||
<div class="d-flex justify-content-center align-items-center mr-2" |
|||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
|||
<img src="assets/misc/star.png"/> |
|||
</div> |
|||
<h2 class="mt-2" |
|||
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
|||
Our Services |
|||
</h2> |
|||
</div> |
|||
<div class="container my-5"> |
|||
<div class="row"> |
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/cogs.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Customization</h6> |
|||
</div> |
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/wrench.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Implementation</h6> |
|||
</div> |
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/lifebuoy.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Support</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/user.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Hire |
|||
Odoo |
|||
Developer</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/puzzle.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Integration</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/update.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Migration</h6> |
|||
</div> |
|||
|
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/consultation.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Consultancy</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/training.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Implementation</h6> |
|||
</div> |
|||
|
|||
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
|||
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
|||
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
|||
<img src="assets/icons/license.png" class="img-responsive" |
|||
height="48px" width="48px"> |
|||
</div> |
|||
<h6 class="text-center" |
|||
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
|||
Odoo |
|||
Licensing Consultancy</h6> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<!-- END OF OUR SERVICES --> |
|||
<!-- OUR INDUSTRIES --> |
|||
|
|||
<div class="d-flex align-items-center" |
|||
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |
|||
<div class="d-flex justify-content-center align-items-center mr-2" |
|||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
|||
<img src="assets/misc/corporate.png"/> |
|||
</div> |
|||
<h2 class="mt-2" |
|||
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
|||
Our |
|||
Industries |
|||
</h2> |
|||
</div> |
|||
<div class="container my-5"> |
|||
<div class="row"> |
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="assets/icons/trading-black.png" |
|||
class="img-responsive mb-3" height="48px" width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Trading |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Easily procure |
|||
and |
|||
sell your products</p> |
|||
</div> |
|||
</div> |
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="assets/icons/pos-black.png" |
|||
class="img-responsive mb-3" height="48px" width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
POS |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Easy |
|||
configuration |
|||
and convivial experience</p> |
|||
</div> |
|||
</div> |
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="assets/icons/education-black.png" |
|||
class="img-responsive mb-3" height="48px" width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Education |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
A platform for |
|||
educational management</p> |
|||
</div> |
|||
</div> |
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="assets/icons/manufacturing-black.png" |
|||
class="img-responsive mb-3" height="48px" |
|||
width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Manufacturing |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Plan, track and |
|||
schedule your operations</p> |
|||
</div> |
|||
</div> |
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="assets/icons/ecom-black.png" |
|||
class="img-responsive mb-3" height="48px" width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
E-commerce & Website |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Mobile |
|||
friendly, |
|||
awe-inspiring product pages</p> |
|||
</div> |
|||
</div> |
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="assets/icons/service-black.png" |
|||
class="img-responsive mb-3" height="48px" width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Service Management |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Keep track of |
|||
services and invoice</p> |
|||
</div> |
|||
</div> |
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="assets/icons/restaurant-black.png" |
|||
class="img-responsive mb-3" height="48px" width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Restaurant |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
Run your bar or |
|||
restaurant methodically</p> |
|||
</div> |
|||
</div> |
|||
<div class="col-lg-3"> |
|||
<div class="my-4 d-flex flex-column justify-content-center" |
|||
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
|||
<img src="assets/icons/hotel-black.png" |
|||
class="img-responsive mb-3" height="48px" width="48px"> |
|||
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
|||
Hotel Management |
|||
</h5> |
|||
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
|||
An |
|||
all-inclusive |
|||
hotel management application</p> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF OUR INDUSTRIES --> |
|||
|
|||
<!-- SUPPORT --> |
|||
<div class="d-flex align-items-center" |
|||
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |
|||
<div class="d-flex justify-content-center align-items-center mr-2" |
|||
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
|||
<img src="assets/misc/customer-support.png"/> |
|||
</div> |
|||
<h2 class="mt-2" |
|||
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
|||
Support |
|||
</h2> |
|||
</div> |
|||
<div class="container mt-5"> |
|||
<div class="row"> |
|||
<div class="col-sm-12 col-md-6"> |
|||
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> |
|||
<div class="mr-4" |
|||
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> |
|||
<img src="assets/misc/support.png" height="48" width="48" |
|||
style="width: 42px; height: 42px;"/> |
|||
</div> |
|||
<div> |
|||
<h4>Need Help?</h4> |
|||
<p style="line-height: 100%;">Got questions or need help? |
|||
Get in touch.</p> |
|||
<a href="mailto:odoo@cybrosys.com"> |
|||
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> |
|||
odoo@cybrosys.com</p> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="col-sm-12 col-md-6"> |
|||
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> |
|||
<div class="mr-4" |
|||
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> |
|||
<img src="assets/misc/whatsapp.png" height="52" width="52" |
|||
style="width: 52px; height: 52px;"/> |
|||
</div> |
|||
<div> |
|||
<h4>WhatsApp</h4> |
|||
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p> |
|||
<a href="https://api.whatsapp.com/send?phone=918606827707"> |
|||
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> |
|||
+91 86068 |
|||
27707</p> |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="row"> |
|||
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center"> |
|||
<img src="assets/misc/logo.png" width="144" height="31" |
|||
style="width:144px; height: 31px; margin-top: 40px;"/> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<!-- END OF SUPPORT --> |
@ -0,0 +1,86 @@ |
|||
.barcode_inventory{ |
|||
justify-content:center; |
|||
} |
|||
.barcode_inventory header h2{ |
|||
width: 50%; |
|||
text-align:right; |
|||
padding-right:27px; |
|||
float: left; |
|||
} |
|||
.barcode_inventory header #barcode{ |
|||
float: left; |
|||
width: 40%; |
|||
} |
|||
.barcode_screen{ |
|||
margin-top: 80px; |
|||
} |
|||
.barcode_screen h1{ |
|||
margin: 29px 0px; |
|||
text-align: center; |
|||
} |
|||
.barcode_scan{ |
|||
display: flex; |
|||
justify-content: left; |
|||
margin-top: 31px; |
|||
|
|||
} |
|||
.container_product_info{ |
|||
align-items: center; |
|||
display: flex; |
|||
width: 100%; |
|||
justify-content: center; |
|||
} |
|||
.category-img{ |
|||
margin-right:21px; |
|||
background-color: #f7f7f7; |
|||
height: auto; |
|||
display: flex; |
|||
} |
|||
.category-img img{ |
|||
width:300px; |
|||
height:auto; |
|||
object-fit: cover; |
|||
} |
|||
. |
|||
.clientlist-screen h1 { |
|||
text-align: center; |
|||
} |
|||
|
|||
.clientlist-screen img { |
|||
display: block; |
|||
margin: 0 auto; |
|||
max-width: 300px; |
|||
height: auto; |
|||
margin-bottom: 20px; |
|||
} |
|||
|
|||
.clientlist-screen table { |
|||
width: 100%; |
|||
border-collapse: collapse; |
|||
} |
|||
|
|||
.clientlist-screen td.label { |
|||
font-weight: bold; |
|||
width: 200px; |
|||
padding: 10px; |
|||
vertical-align: top; |
|||
} |
|||
|
|||
.clientlist-screen td.value { |
|||
padding: 10px; |
|||
vertical-align: top; |
|||
max-width: 300px; |
|||
} |
|||
|
|||
@media (max-width: 600px) { |
|||
/* Responsive styles */ |
|||
.clientlist-screen td.label { |
|||
width: 100%; |
|||
text-align: left; |
|||
} |
|||
|
|||
.clientlist-screen td.value { |
|||
width: 100%; |
|||
text-align: left; |
|||
} |
|||
} |
@ -0,0 +1,66 @@ |
|||
.form_scan_product{ |
|||
text-align: center; |
|||
margin-top:80px; |
|||
} |
|||
.form_scan_product h2 |
|||
{ |
|||
font-size: 28px; |
|||
} |
|||
.form_scan_product h4{ |
|||
font-size: 18px; |
|||
} |
|||
.container_product_info{ |
|||
align-items: center; |
|||
display: flex; |
|||
width: 100%; |
|||
justify-content: center; |
|||
} |
|||
.category-img{ |
|||
margin-right:21px; |
|||
background-color: #f7f7f7; |
|||
height: auto; |
|||
width:500px; |
|||
display: flex; |
|||
} |
|||
.category-img img{ |
|||
width:300px; |
|||
height: auto; |
|||
object-fit: cover; |
|||
} |
|||
. |
|||
.clientlist-screen h1 { |
|||
text-align: center; |
|||
} |
|||
.clientlist-screen img { |
|||
display: block; |
|||
margin: 0 auto; |
|||
max-width: 300px; |
|||
height: auto; |
|||
margin-bottom: 20px; |
|||
} |
|||
.clientlist-screen table { |
|||
width: 100%; |
|||
border-collapse: collapse; |
|||
} |
|||
.clientlist-screen td.label { |
|||
font-weight: bold; |
|||
width: 200px; |
|||
padding: 10px; |
|||
vertical-align: top; |
|||
} |
|||
.clientlist-screen td.value { |
|||
padding: 10px; |
|||
vertical-align: top; |
|||
max-width: 300px; |
|||
} |
|||
@media (max-width: 600px) { |
|||
/* Responsive styles */ |
|||
.clientlist-screen td.label { |
|||
width: 100%; |
|||
text-align: left; |
|||
} |
|||
.clientlist-screen td.value { |
|||
width: 100%; |
|||
text-align: left; |
|||
} |
|||
} |
@ -0,0 +1,67 @@ |
|||
odoo.define('pos_restrict_product_stock.product_detail_search', function (require) { |
|||
"use strict"; |
|||
var AbstractAction = require('web.AbstractAction'); |
|||
var core = require('web.core'); |
|||
var rpc = require('web.rpc'); |
|||
//extending abstract actions for the dashboard
|
|||
var product_detail_search_barcode_dashboard = AbstractAction.extend({ |
|||
contentTemplate: 'CustomDashBoardFindProduct', |
|||
events: { |
|||
'keypress': '_onKeypress', |
|||
'change': '_onChange' |
|||
}, |
|||
//set up the dashboard template
|
|||
init: function(parent, context) { |
|||
var self = this; |
|||
this._super(parent, context); |
|||
this.dashboards_templates = ['product_detail_search_template']; |
|||
}, |
|||
//For getting the corresponding barcode of the product
|
|||
//when detect barcode scan
|
|||
_onKeypress: function(data) { |
|||
this.typed_into = true; |
|||
}, |
|||
//For detect the barcode scan after the keypress event and getting the
|
|||
//corresponding product details from the backend
|
|||
_onChange: function(data) { |
|||
var self=this; |
|||
var barcode_value = this.$("#" + data.target.id).val(); |
|||
if (this.typed_into) { |
|||
var def1 = self._rpc({ |
|||
model: 'product.template', |
|||
method: 'product_detail_search', |
|||
args: [[], barcode_value], |
|||
}).then(function(result) { |
|||
self.barcode_value = barcode_value; |
|||
if (result==false) { |
|||
self.product_details=false |
|||
} |
|||
else { |
|||
self.product_details = result |
|||
} |
|||
self.render_dashboards(); |
|||
}); |
|||
this.typed_into = false; |
|||
} |
|||
}, |
|||
//Used to call the render_dashboards when the start function called
|
|||
start: function() { |
|||
var self = this; |
|||
this.set("title", 'Dashboard'); |
|||
return this._super().then(function() { |
|||
self.render_dashboards(); |
|||
}); |
|||
}, |
|||
//Used to render the dashboard
|
|||
render_dashboards: function() { |
|||
var self = this; |
|||
_.each(this.dashboards_templates, function(template) { |
|||
self.$('.o_pj_dashboard').html(core.qweb.render(template, { |
|||
widget: self |
|||
})); |
|||
}); |
|||
}, |
|||
}); |
|||
core.action_registry.add('product_detail_search_barcode_main_menu', product_detail_search_barcode_dashboard); |
|||
return product_detail_search_barcode_dashboard; |
|||
}); |
@ -0,0 +1,42 @@ |
|||
/** @odoo-module **/ |
|||
|
|||
const PosComponent = require('point_of_sale.PosComponent'); |
|||
const Registries = require('point_of_sale.Registries'); |
|||
var rpc = require('web.rpc'); |
|||
const { useBarcodeReader } = require('point_of_sale.custom_hooks'); |
|||
class FindProductScreen extends PosComponent { |
|||
setup(){ |
|||
super.setup(); |
|||
useBarcodeReader({ |
|||
product: this._barcodeProductAction |
|||
}); |
|||
} |
|||
//Barcode scan detect function
|
|||
async _barcodeProductAction(code) { |
|||
var self = this; |
|||
rpc.query({ |
|||
model: 'product.template', |
|||
method: 'product_detail_search', |
|||
args: [[], code.base_code], |
|||
}).then(function(result) { |
|||
if (result==false) { |
|||
self.showScreen('ProductDetails', { |
|||
'product_details' : false, |
|||
}); |
|||
} |
|||
else { |
|||
self.product_details = result |
|||
self.showScreen('ProductDetails', { |
|||
'product_details' : self.product_details, |
|||
}); |
|||
} |
|||
}); |
|||
} |
|||
//Returning the Product Screen
|
|||
back() { |
|||
this.showScreen('ProductScreen'); |
|||
} |
|||
}; |
|||
FindProductScreen.template = 'FindProductScreen'; |
|||
Registries.Component.add(FindProductScreen); |
|||
return FindProductScreen; |
@ -0,0 +1,18 @@ |
|||
/** @odoo-module **/ |
|||
|
|||
const PosComponent = require('point_of_sale.PosComponent'); |
|||
const { useListener } = require("@web/core/utils/hooks"); |
|||
const Registries = require('point_of_sale.Registries'); |
|||
class FindProductButton extends PosComponent { |
|||
setup() { |
|||
super.setup(); |
|||
useListener('click', this.onClick); |
|||
} |
|||
//To see the Find Product Screen
|
|||
async onClick() { |
|||
this.showScreen('FindProductScreen'); |
|||
} |
|||
} |
|||
FindProductButton.template = 'FindProductButton'; |
|||
Registries.Component.add(FindProductButton); |
|||
return FindProductButton; |
@ -0,0 +1,23 @@ |
|||
/** @odoo-module **/ |
|||
|
|||
const PosComponent = require('point_of_sale.PosComponent'); |
|||
const Registries = require('point_of_sale.Registries'); |
|||
class ProductDetails extends PosComponent { |
|||
setup(){ |
|||
super.setup(); |
|||
if (this.props.product_details==false){ |
|||
this.product_details=false |
|||
} |
|||
else |
|||
{ |
|||
this.product_details = this.props.product_details; |
|||
} |
|||
} |
|||
//To see the Find product Screen
|
|||
back() { |
|||
this.showScreen('FindProductScreen'); |
|||
} |
|||
}; |
|||
ProductDetails.template = 'ProductDetails'; |
|||
Registries.Component.add(ProductDetails); |
|||
return ProductDetails; |
@ -0,0 +1,10 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!--For adding the Find product button in the top of the pos session--> |
|||
<templates id="template" xml:space="preserve"> |
|||
<t t-name="FindProductChrome" t-inherit="point_of_sale.Chrome" |
|||
t-inherit-mode="extension" owl="1"> |
|||
<xpath expr="//TicketButton" position="after"> |
|||
<FindProductButton/> |
|||
</xpath> |
|||
</t> |
|||
</templates> |
@ -0,0 +1,132 @@ |
|||
<?xml version="1.0" encoding="utf-8" ?> |
|||
<template id="template" xml:space="preserve"> |
|||
<!--Template for Find Product in the inventory --> |
|||
<t t-name="CustomDashBoardFindProduct"> |
|||
<div class="oh_dashboards container" |
|||
style="margin-top: 20px;"> |
|||
<div style="display:flex;" |
|||
class="container-fluid o_pj_dashboard barcode_inventory"> |
|||
</div> |
|||
</div> |
|||
</t> |
|||
<t t-name="product_detail_search_template"> |
|||
<header> |
|||
<div class="barcode_scan"> |
|||
<h3>Scan Your Barcode&nbsp;</h3> |
|||
<input type="text" id="barcode" name="barcode" |
|||
placeholder="Please Scan your barcode"/> |
|||
</div> |
|||
<t t-if="widget.barcode_value"> |
|||
<t t-if="widget.product_details==false"> |
|||
<h1 style="margin:100px">No Product Found</h1> |
|||
</t> |
|||
<t t-else=""> |
|||
<div class="clientlist-screen screen"> |
|||
<div class="screen-content barcode_screen"> |
|||
<h1>Product Information</h1> |
|||
<div class="container_product_info"> |
|||
<div class="category-img"> |
|||
<img style="width:300px;height:auto !important" |
|||
t-attf-src="/web/image?model=product.product&field=image_1920&id=#{widget.product_details[0].id}"/> |
|||
</div> |
|||
<div class="container-fluid" style=" |
|||
display: flex; |
|||
justify-content: center;"> |
|||
<table style="margin: 0 auto; |
|||
table-layout: fixed; |
|||
width: auto;font-size: 14px;"> |
|||
<tr> |
|||
<td class="label">Product Name: |
|||
</td> |
|||
<td class="value" |
|||
t-esc="widget.product_details[0].name"/> |
|||
</tr> |
|||
<tr> |
|||
<td class="label">Product |
|||
Specification: |
|||
</td> |
|||
<td class="value" |
|||
t-esc="widget.product_details[0].specification"/> |
|||
</tr> |
|||
<tr> |
|||
<td class="label">Product Type: |
|||
</td> |
|||
<td class="value" |
|||
t-esc="widget.product_details[0].product_type"/> |
|||
</tr> |
|||
<t t-if="widget.product_details[0].taxes_id"> |
|||
<tr> |
|||
<td class="label">Product Tax: |
|||
</td> |
|||
<td class="value" |
|||
t-esc="widget.product_details[0].tax_amount"/> |
|||
</tr> |
|||
</t> |
|||
<tr> |
|||
<td class="label">Barcode:</td> |
|||
<td class="value" |
|||
t-esc="widget.product_details[0].barcode"/> |
|||
</tr> |
|||
<tr> |
|||
<td class="label">Code:</td> |
|||
<t t-if="widget.product_details[0].default_code"> |
|||
<td class="value" |
|||
t-esc="widget.product_details[0].default_code"/> |
|||
</t> |
|||
<t t-else=""> |
|||
<td class="value">No code</td> |
|||
</t> |
|||
</tr> |
|||
<tr> |
|||
<td class="label">Product |
|||
Category: |
|||
</td> |
|||
<td class="value" |
|||
t-esc="widget.product_details[0].categ_id[1]"/> |
|||
</tr> |
|||
<tr> |
|||
<td class="label">Available |
|||
Stock: |
|||
</td> |
|||
<td class="value" |
|||
t-esc="widget.product_details[0].qty_available"/> |
|||
</tr> |
|||
<tr> |
|||
<td class="label">Sales Price:</td> |
|||
<td> |
|||
<table> |
|||
<tr> |
|||
<td class="value" |
|||
style="width: 10%; |
|||
max-width: 0px;" |
|||
t-esc="widget.product_details[0].symbol"> |
|||
</td> |
|||
<td class="value" |
|||
style="width: 95%; |
|||
padding: 10px 0px;" |
|||
t-esc="widget.product_details[0].list_price"/> |
|||
</tr> |
|||
</table> |
|||
</td> |
|||
</tr> |
|||
<tr> |
|||
<td class="label">Company:</td> |
|||
<t t-if="widget.product_details[0].company_id==false"> |
|||
<td class="value">No company |
|||
</td> |
|||
</t> |
|||
<t t-else=""> |
|||
<td class="value" |
|||
t-esc="widget.product_details[0].company_id[1]"/> |
|||
</t> |
|||
</tr> |
|||
</table> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</t> |
|||
</t> |
|||
</header> |
|||
</t> |
|||
</template> |
@ -0,0 +1,10 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!--Template for find product in the top of pos--> |
|||
<templates id="template" xml:space="preserve"> |
|||
<t t-name="FindProductButton" owl="1"> |
|||
<span class="cash-move-button"> |
|||
<i class="fa fa-product-hunt"/> |
|||
<span>Find Product</span> |
|||
</span> |
|||
</t> |
|||
</templates> |
@ -0,0 +1,19 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<!--Template for find product in the pos--> |
|||
<templates id="template" xml:space="preserve"> |
|||
<t t-name="FindProductScreen" owl="1"> |
|||
<div class="clientlist-screen screen"> |
|||
<div class="screen-content"> |
|||
<div class="top-content"> |
|||
<div class="button back" t-on-click="back"> |
|||
Back |
|||
</div> |
|||
</div> |
|||
<form class="form_scan_product"> |
|||
<h2>Scan Your Product</h2> |
|||
<h4>Please Scan a Product To get the details</h4> |
|||
</form> |
|||
</div> |
|||
</div> |
|||
</t> |
|||
</templates> |
@ -0,0 +1,115 @@ |
|||
<?xml version="1.0" encoding="UTF-8" ?> |
|||
<!--Template For getting the product details--> |
|||
<templates id="template" xml:space="preserve"> |
|||
<t t-name="ProductDetails" owl="1"> |
|||
<div class="clientlist-screen screen"> |
|||
<div class="screen-content"> |
|||
<div class="top-content"> |
|||
<div class="button back" t-on-click="back"> |
|||
Back |
|||
</div> |
|||
</div> |
|||
<h1 style="text-align: center; |
|||
font-size: 28px; |
|||
margin-bottom: 31px; |
|||
margin-top: 31px;">Product Information</h1> |
|||
<t t-if="product_details==false"> |
|||
<h2 style="margin-left: 600px;">No products Found</h2> |
|||
</t> |
|||
<t t-else=""> |
|||
<div class="container_product_info"> |
|||
<div class="category-img"> |
|||
<img t-attf-src="/web/image?model=product.product&field=image_1920&id={{product_details[0].id}}"/> |
|||
</div> |
|||
<div class="container-fluid pt-3"> |
|||
<table style="margin: 0 auto; |
|||
table-layout: fixed;width: auto;font-size:16px;"> |
|||
<tr> |
|||
<td class="label">Product Name:</td> |
|||
|
|||
<td class="value" |
|||
t-esc="product_details[0].name"/> |
|||
</tr> |
|||
<tr> |
|||
<td class="label">Product Specification: |
|||
</td> |
|||
<td class="value" |
|||
t-esc="product_details[0].specification"/> |
|||
</tr> |
|||
<tr> |
|||
<td class="label">Product Type: |
|||
</td> |
|||
<td class="value" |
|||
t-esc="product_details[0].product_type"/> |
|||
</tr> |
|||
<t t-if="product_details[0].taxes_id"> |
|||
<tr> |
|||
<td class="label">Product Tax: |
|||
</td> |
|||
<td class="value" |
|||
t-esc="product_details[0].tax_amount"/> |
|||
</tr> |
|||
</t> |
|||
<tr> |
|||
<td class="label">Barcode:</td> |
|||
<td class="value" |
|||
t-esc="product_details[0].barcode"/> |
|||
</tr> |
|||
<tr> |
|||
<td class="label">Code:</td> |
|||
<t t-if="product_details[0].default_code"> |
|||
<td class="value" |
|||
t-esc="product_details[0].default_code"/> |
|||
</t> |
|||
<t t-else=""> |
|||
<td class="value">No code</td> |
|||
</t> |
|||
</tr> |
|||
|
|||
<tr> |
|||
<td class="label">Product Category:</td> |
|||
<td class="value" |
|||
t-esc="product_details[0].categ_id[1]"/> |
|||
</tr> |
|||
<tr> |
|||
<td class="label">Available Stock:</td> |
|||
<td class="value" |
|||
t-esc="product_details[0].qty_available"/> |
|||
</tr> |
|||
<tr> |
|||
<td class="label">Sales Price:</td> |
|||
<td> |
|||
<table> |
|||
<tr> |
|||
<td class="value" style="width: 10%; |
|||
max-width: 0px;" |
|||
t-esc="product_details[0].symbol"> |
|||
</td> |
|||
<td class="value" style="width: 95%; |
|||
padding: 10px 0px;" |
|||
t-esc="product_details[0].list_price"/> |
|||
</tr> |
|||
</table> |
|||
</td> |
|||
</tr> |
|||
<tr> |
|||
<td class="label">Company:</td> |
|||
<t t-if="product_details[0].company_id==false"> |
|||
<td class="value"> |
|||
<td class="value" |
|||
style="padding-left: 0px;">No company</td> |
|||
</td> |
|||
</t> |
|||
<t t-else=""> |
|||
<td class="value" |
|||
t-esc="product_details[0].company_id[1]"/> |
|||
</t> |
|||
</tr> |
|||
</table> |
|||
</div> |
|||
</div> |
|||
</t> |
|||
</div> |
|||
</div> |
|||
</t> |
|||
</templates> |
@ -0,0 +1,15 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<odoo> |
|||
<!--Client action for the dashboard --> |
|||
<record id="product_detail_search_barcode_action_main_menu" |
|||
model="ir.actions.client"> |
|||
<field name="name">Find Product Barcode</field> |
|||
<field name="tag">product_detail_search_barcode_main_menu</field> |
|||
</record> |
|||
<!-- Menu item for the find product--> |
|||
<menuitem |
|||
id="product_detail_search_barcode_menu" |
|||
name="Find Product" |
|||
action="product_detail_search_barcode_action_main_menu" |
|||
parent="stock.menu_stock_root"/> |
|||
</odoo> |