Browse Source

Sep 21: [ADD] Initial commit 'barcode_capturing_sale_purchase'

pull/254/merge
Cybrosys Technologies 7 months ago
parent
commit
4ec72364f5
  1. 47
      barcode_capturing_sale_purchase/README.rst
  2. 22
      barcode_capturing_sale_purchase/__init__.py
  3. 52
      barcode_capturing_sale_purchase/__manifest__.py
  4. 6
      barcode_capturing_sale_purchase/doc/RELEASE_NOTES.md
  5. 23
      barcode_capturing_sale_purchase/models/__init__.py
  6. 50
      barcode_capturing_sale_purchase/models/purchase_order.py
  7. 49
      barcode_capturing_sale_purchase/models/sale_order.py
  8. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/check.png
  9. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/chevron.png
  10. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/cogs.png
  11. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/consultation.png
  12. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/ecom-black.png
  13. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/education-black.png
  14. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/hotel-black.png
  15. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/license.png
  16. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/lifebuoy.png
  17. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/logo.png
  18. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/manufacturing-black.png
  19. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/pos-black.png
  20. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/puzzle.png
  21. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/restaurant-black.png
  22. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/service-black.png
  23. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/trading-black.png
  24. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/training.png
  25. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/update.png
  26. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/user.png
  27. BIN
      barcode_capturing_sale_purchase/static/description/assets/icons/wrench.png
  28. BIN
      barcode_capturing_sale_purchase/static/description/assets/misc/categories.png
  29. BIN
      barcode_capturing_sale_purchase/static/description/assets/misc/check-box.png
  30. BIN
      barcode_capturing_sale_purchase/static/description/assets/misc/compass.png
  31. BIN
      barcode_capturing_sale_purchase/static/description/assets/misc/corporate.png
  32. BIN
      barcode_capturing_sale_purchase/static/description/assets/misc/customer-support.png
  33. BIN
      barcode_capturing_sale_purchase/static/description/assets/misc/cybrosys-logo.png
  34. BIN
      barcode_capturing_sale_purchase/static/description/assets/misc/features.png
  35. BIN
      barcode_capturing_sale_purchase/static/description/assets/misc/logo.png
  36. BIN
      barcode_capturing_sale_purchase/static/description/assets/misc/pictures.png
  37. BIN
      barcode_capturing_sale_purchase/static/description/assets/misc/pie-chart.png
  38. BIN
      barcode_capturing_sale_purchase/static/description/assets/misc/right-arrow.png
  39. BIN
      barcode_capturing_sale_purchase/static/description/assets/misc/star.png
  40. BIN
      barcode_capturing_sale_purchase/static/description/assets/misc/support.png
  41. BIN
      barcode_capturing_sale_purchase/static/description/assets/misc/whatsapp.png
  42. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/1.png
  43. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/2.png
  44. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/3.png
  45. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/4.png
  46. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/5.png
  47. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/6.gif
  48. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/budget_image.png
  49. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/credit_image.png
  50. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/employee_image.png
  51. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/export_image.png
  52. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/gantt_image.png
  53. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/m1.png
  54. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/m2.png
  55. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/m3.jpg
  56. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/m4.png
  57. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/m5.png
  58. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/m6.png
  59. BIN
      barcode_capturing_sale_purchase/static/description/assets/modules/quotation_image.png
  60. BIN
      barcode_capturing_sale_purchase/static/description/assets/screenshots/barcodde_162.png
  61. BIN
      barcode_capturing_sale_purchase/static/description/assets/screenshots/barcode_16.png
  62. BIN
      barcode_capturing_sale_purchase/static/description/assets/screenshots/barcode_163.png
  63. BIN
      barcode_capturing_sale_purchase/static/description/assets/screenshots/hero.gif
  64. BIN
      barcode_capturing_sale_purchase/static/description/assets/screenshots/image-3.1.png
  65. BIN
      barcode_capturing_sale_purchase/static/description/assets/screenshots/image-3.png
  66. BIN
      barcode_capturing_sale_purchase/static/description/assets/screenshots/image_1.png
  67. BIN
      barcode_capturing_sale_purchase/static/description/assets/screenshots/image_2.png
  68. BIN
      barcode_capturing_sale_purchase/static/description/assets/screenshots/image_4.png
  69. BIN
      barcode_capturing_sale_purchase/static/description/assets/screenshots/img-5.png
  70. BIN
      barcode_capturing_sale_purchase/static/description/banner.png
  71. BIN
      barcode_capturing_sale_purchase/static/description/cybro_logo.png
  72. BIN
      barcode_capturing_sale_purchase/static/description/icon.png
  73. 613
      barcode_capturing_sale_purchase/static/description/index.html
  74. BIN
      barcode_capturing_sale_purchase/static/src/audio/beep_scan.mp3
  75. 24
      barcode_capturing_sale_purchase/static/src/css/styles.css
  76. 128
      barcode_capturing_sale_purchase/static/src/js/purchase_barcode.js
  77. 11584
      barcode_capturing_sale_purchase/static/src/js/quagga.js
  78. 11
      barcode_capturing_sale_purchase/static/src/js/registry_barcode_purchase.js
  79. 11
      barcode_capturing_sale_purchase/static/src/js/registry_barcode_sale.js
  80. 133
      barcode_capturing_sale_purchase/static/src/js/sale_barcode.js
  81. 14
      barcode_capturing_sale_purchase/views/purchase_order_views.xml
  82. 14
      barcode_capturing_sale_purchase/views/sale_order_views.xml

47
barcode_capturing_sale_purchase/README.rst

@ -0,0 +1,47 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
Scan Product Barcode for Sale & Purchase
========================================
This module captures barcode of products through system camera and add product to order line.
Installation
============
- www.odoo.com/documentation/15.0/setup/install.html
- Install our custom addon
Company
=======
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
License
=======
GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3)
(http://www.gnu.org/licenses/agpl.html)
Credits
=======
* Developer: (V15) Subina, 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 https://www.cybrosys.com.
Further information
===================
HTML Description: `<static/description/index.html>`__

22
barcode_capturing_sale_purchase/__init__.py

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Subina (<https://www.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

52
barcode_capturing_sale_purchase/__manifest__.py

@ -0,0 +1,52 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Subina (<https://www.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': "Scan Product Barcode for Sale & Purchase",
'version': '15.0.1.0.0',
'category': 'Extra Tools',
'summary': """Scan Barcode from Camera.""",
'description': """Products can be added to sale or purchase orders by
scanning barcode of products through system camera. Products will be
automatically added to order line once the barcode is identified.""",
'author': "Cybrosys Techno Solutions",
'company': "Cybrosys Techno Solutions",
'maintainer': "Cybrosys Techno Solutions",
'website': "https://www.cybrosys.com",
'depends': ['base', 'sale_management', 'purchase'],
'data': [
'views/sale_order_views.xml',
'views/purchase_order_views.xml'
],
'assets': {
'web.assets_backend': [
'barcode_capturing_sale_purchase/static/src/js/sale_barcode.js',
'barcode_capturing_sale_purchase/static/src/js/purchase_barcode.js',
'barcode_capturing_sale_purchase/static/src/js/quagga.js',
'barcode_capturing_sale_purchase/static/src/css/styles.css'
],
},
'images': ['static/description/banner.png'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

6
barcode_capturing_sale_purchase/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <barcode_capturing_sale_purchase>
#### 21.09.2024
#### Version 15.0.1.0.0
#### ADD
- Initial commit for Scan Product Barcode for Sale & Purchase

23
barcode_capturing_sale_purchase/models/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Subina (<https://www.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 purchase_order
from . import sale_order

50
barcode_capturing_sale_purchase/models/purchase_order.py

@ -0,0 +1,50 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Subina (<https://www.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 api, models
class PurchaseOrder(models.Model):
"""Purchase Order is inherited to add the product to order line which
is scanned using barcode"""
_inherit = 'purchase.order'
@api.model
def barcode_search(self, args):
"""Purchase Order line is created and product is added by checking
the barcode"""
product = self.env['product.product'].search([('barcode', '=',
args[0])])
if not product:
return True
else:
purchase_order = self.browse(args[1])
if purchase_order.order_line:
for rec in purchase_order.order_line:
if rec.product_id == product:
rec.product_qty += 1
return
purchase_order.order_line.create({
'order_id': purchase_order.id,
'product_id': product.id,
'product_uom_qty': 1
})

49
barcode_capturing_sale_purchase/models/sale_order.py

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<http://www.cybrosys.com>).
# Author: Subina (<https://www.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 api, fields, models
class SaleOrder(models.Model):
"""Sale Order is inherited to add the product to order line which
is scanned using barcode."""
_inherit = 'sale.order'
@api.model
def barcode_search(self, args):
"""Sale Order line is created and product is added by checking the
barcode"""
product = self.env['product.product'].search([('barcode', '=',
args[0])])
if not product:
return True
else:
sale_order = self.browse(args[1])
if sale_order.order_line:
for rec in sale_order.order_line:
if rec.product_id == product:
rec.product_uom_qty += 1
return
sale_order.order_line.create({
'order_id': sale_order.id,
'product_id': product.id,
'product_uom_qty': 1
})

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/misc/categories.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/misc/check-box.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/misc/compass.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/misc/corporate.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/misc/customer-support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/misc/cybrosys-logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/misc/features.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

BIN
barcode_capturing_sale_purchase/static/description/assets/misc/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/misc/pictures.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/misc/pie-chart.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/misc/right-arrow.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

BIN
barcode_capturing_sale_purchase/static/description/assets/misc/star.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/misc/support.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/misc/whatsapp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/6.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1006 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/credit_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/employee_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/gantt_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/m1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/m2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/m3.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/m4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/m5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/m6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/modules/quotation_image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/screenshots/barcodde_162.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 667 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/screenshots/barcode_16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/screenshots/barcode_163.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/screenshots/hero.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/screenshots/image-3.1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/screenshots/image-3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/screenshots/image_1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/screenshots/image_2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/screenshots/image_4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 458 KiB

BIN
barcode_capturing_sale_purchase/static/description/assets/screenshots/img-5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

BIN
barcode_capturing_sale_purchase/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
barcode_capturing_sale_purchase/static/description/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
barcode_capturing_sale_purchase/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

613
barcode_capturing_sale_purchase/static/description/index.html

@ -0,0 +1,613 @@
<div class="container" style="padding: 1rem !important; margin-bottom: 1rem !important;">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12 d-flex justify-content-between"
style="border-bottom: 1px solid #d5d5d5;">
<div class="my-3">
<img src="./assets/icons/logo.png" style="width: auto !important; height: 40px !important;">
</div>
<div class="my-3 d-flex align-items-center">
<div
style="background-color: #7C7BAD !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;">
<i class="fa fa-check mr-1"></i>Community
</div>
<div
style="background-color: #875A7B !important; color: #fff !important; font-weight: 600 !important; padding: 5px 15px 8px !important; margin: 0 5px !important;">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
</div>
</div>
</div>
</div>
<div class="container" style="padding: 0rem 1.5rem 4rem !important">
<div class="row" style="height: 900px !important;">
<div class="col-sm-12 col-md-12 col-lg-12"
style="padding: 4rem 1rem !important; background-color: #714B67 !important; height: 600px !important; border-radius: 20px !important;">
<h1
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #FFFFFF !important; font-size: 3.5rem !important; text-align: center !important;">
Scan Product Barcode for Sale & Purchase</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;">
Scan barcode of products through camera in sale and purchase
</p>
<img src="./assets/screenshots/hero.gif" class="img-responsive" width="100%" height="auto" />
</div>
</div>
<div class="row">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin-bottom: 2rem !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-compass mr-2"></i>Explore this module
</h2>
</div>
<div class="col-md-6">
<a href="#overview" style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Overview</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
Learn more about this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#features" style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Features</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
View features of this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#screenshots" style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Screenshots</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
See key screenshots of this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
<div class="col-md-6">
<a href="#video" style="text-decoration: none !important;">
<div class="row"
style="background-color: #f5f2f5 !important; border-radius: 10px !important; margin: 1rem !important; padding: 1.5em !important; height: 100px !important;">
<div class="col-8">
<h3
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.2rem !important;">
Video</h3>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #714B67 !important; font-size: 0.9rem !important;">
Watch tutorial video on this module</p>
</div>
<div class="col-4 text-right d-flex justify-content-end align-items-center">
<i class="fa fa-chevron-right" style="color: #714B67 !important;"></i>
</div>
</div>
</a>
</div>
</div>
<div class="row" id="overview">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-pie-chart mr-2"></i>Overview
</h2>
</div>
<div class="col-mg-12 pl-3">
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important; line-height: 30px !important;">
This module captures barcode of products through system camera and add product to order line.
</p>
</div>
</div>
<div class="row" id="features">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-star mr-2"></i>Features
</h2>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Community &amp; Enterprise Support</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Available in Odoo 15.0 Community and Enterprise.</p>
</div>
</div>
<div class="col-md-6 pl-3 py-3 d-flex">
<div>
<img src="assets/icons/check.png">
</div>
<div>
<h4
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Barcode Capturing in Sale and Purchase</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Products can be effortlessly added to the order line by scanning barcode.</p>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Barcode can be scanned through camera without the help of barcode scanner.</p>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Barcode of product can be set in product form.</p>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
'Scan Barcode' button will be available in sale and purchase order.</p>
</div>
</div>
</div>
<div class="row" id="screenshots">
<div class="col-md-12" style="border-bottom: 1px solid #d5d5d5 !important; margin: 2rem 0 !important">
<h2
style="font-family: 'Montserrat', sans-serif !important; font-weight: 600 !important; color: #714B67 !important; font-size: 1.5rem !important;">
<i class="fa fa-image mr-2"></i>Screenshots
</h2>
</div>
<div class="col-lg-12 my-2">
<h4 class="mt-2"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Product Form</h4>
<img src="assets/screenshots/image_1.png" class="img-responsive img-thumbnail border"
width="100%" height="auto" />
</div>
<div class="col-lg-12 my-3">
<h4 class="mt-2"
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1.3rem !important;">
The label of barcode is printed by clicking the 'print labels' button.</h4>
<img src="assets/screenshots/image_2.png" class="img-responsive img-thumbnail border"
width="100%" height="auto" />
</div>
<div class="col-lg-12 my-2">
<h4 class="mt-2"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Sale Order</h4>
<h4 class="mt-2"
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1.3rem !important;">
A new button is added in Sales and Purchase to scan barcode.</h4>
<img src="assets/screenshots/image-3.png" class="img-responsive img-thumbnail border"
width="100%" height="auto" />
<img src="assets/screenshots/image-3.1.png" class="img-responsive img-thumbnail border"
width="100%" height="auto" />
</div>
<div class="col-lg-12 my-2">
<h4 class="mt-2"
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1.3rem !important;">
When the barcode button is clicked a window with a video screen pops out. Show the barcode image on the camera to scan it.</h4>
<img src="assets/screenshots/image_4.png" class="img-responsive img-thumbnail border"
width="100%" height="auto" />
</div>
<div class="col-lg-12 my-2">
<h4 class="mt-2"
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1.3rem !important;">
The scanned product will be added to the order line.</h4>
<img src="assets/screenshots/img-5.png" class="img-responsive img-thumbnail border"
width="100%" height="auto" />
</div>
</div>
<!-- SUGGESTED PRODUCTS -->
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center"
style="text-align: center; padding: 2.5rem 1rem !important;">
<h2 style="color: #212529 !important;">Suggested Products</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner">
<div class="carousel-item active" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/base_account_budget/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/budget_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/sales_credit_limit/" 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/credit_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/employee_documents_expiry/"
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/employee_image.png">
</div>
</a>
</div>
</div>
<div class="carousel-item" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/export_stockinfo_xls/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/export_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/custom_gantt_view/" 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/gantt_image.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/product_to_quotation/" 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/quotation_image.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev"
style="left:-25px;width: 35px;color: #000;"> <span class="carousel-control-prev-icon"><i
class="fa fa-chevron-left" style="font-size:24px"></i></span> </a> <a
class="carousel-control-next" href="#demo1" data-slide="next"
style="right:-25px;width: 35px;color: #000;">
<span class="carousel-control-next-icon"><i class="fa fa-chevron-right"
style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF SUGGESTED PRODUCTS -->
<!-- OUR SERVICES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Our Services</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Customization</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Support</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire
Odoo
Developer</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Integration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Migration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Consultancy</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px">
</div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Licensing Consultancy</h6>
</div>
</div>
</section>
<!-- END OF END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<section class="container" style="margin-top: 6rem !important;">
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Our Industries</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/education-black.png" class="img-responsive mb-3" height="48px"
width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px"
width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Mobile
friendly,
awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px"
width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 10px; padding: 2rem !important; height: 250px !important;">
<img src="./assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5
style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</section>
<!-- END OF OUR INDUSTRIES -->
<!-- FOOTER -->
<!-- Footer Section -->
<section class="container" style="margin: 5rem auto 2rem;">
<div class="row" style="max-width:1540px;">
<div class="col-lg-12 d-flex flex-column justify-content-center align-items-center">
<h2 style="color: #212529 !important;">Need Help?</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;" />
</div>
</div>
<!-- Contact Cards -->
<div class="row d-flex justify-content-center align-items-center"
style="max-width:1540px; margin: 0 auto 2rem auto;">
<div class="col-lg-12" style="padding: 0rem 3rem 2rem; border-radius: 10px; margin-right: 3rem; ">
<div class="row mt-4">
<div class="col-lg-6">
<a href="mailto:odoo@cybrosys.com" target="_blank" class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #4d4d4d; color: #FFF; border-radius: 4px;"><i
class="fa fa-envelope mr-2"></i>odoo@cybrosys.com</a>
</div>
<div class="col-lg-6">
<a href="https://api.whatsapp.com/send?phone=918606827707" target="_blank"
class="btn btn-block mb-2 deep_hover"
style="text-decoration: none; background-color: #25D366; color: #FFF; border-radius: 4px;"><i
class="fa fa-whatsapp mr-2"></i>WhatsApp</a>
</div>
</div>
</div>
</div>
<!-- End of Contact Cards -->
</section>
<!-- Footer -->
<section class="oe_container" style="padding: 2rem 3rem 1rem;">
<div class="row" style="max-width:1540px; margin: 0 auto; margin-right: 3rem; ">
<!-- Logo -->
<div class="col-lg-12 d-flex justify-content-center align-items-center" style="margin-top: 3rem;">
<img src="https://www.cybrosys.com/images/logo.png" width="200px" height="auto" />
</div>
<!-- End of Logo -->
<div class="col-lg-12">
<hr
style="margin-top: 3rem;background: linear-gradient(90deg, rgba(2,0,36,0) 0%, rgba(229,229,229,1) 33%, rgba(229,229,229,1) 58%, rgba(0,212,255,0) 100%); height: 2px; border-style: none;">
<!-- End of Footer Section -->
</div>
</div>
</section>
<!-- END OF FOOTER -->
</div>

BIN
barcode_capturing_sale_purchase/static/src/audio/beep_scan.mp3

Binary file not shown.

24
barcode_capturing_sale_purchase/static/src/css/styles.css

@ -0,0 +1,24 @@
/*.btn-close {
display:none;
}*/
.i_class_barcode {
font-size: 34px; /* Size of the barcode icon */
color: #007bff; /* Icon color */
margin-right: 10px; /* Add some spacing between icon and button */
}
.purchase_barcode_btn_new {
background-color: #28a745; /* Button background color */
color: white; /* Button text color */
border: none; /* Remove border */
padding: 10px 20px; /* Add padding for a nicer look */
font-size: 16px; /* Text size */
border-radius: 5px; /* Rounded corners */
cursor: pointer; /* Change cursor to pointer */
margin-left: 10px; /* Add spacing to the left of the button */
}
.purchase_barcode_btn_new:hover {
background-color: #218838; /* Darker green on hover */
}

128
barcode_capturing_sale_purchase/static/src/js/purchase_barcode.js

@ -0,0 +1,128 @@
odoo.define('barcode_capturing_sale_purchase.purchase_barcode', function (require) {
var Widget= require('web.Widget');
var widgetRegistry = require('web.widget_registry');
var FieldManagerMixin = require('web.FieldManagerMixin');
const Dialog = require('web.Dialog');
var core = require('web.core');
const _t = core._t;
var rpc = require('web.rpc');
var beep = new Audio('/barcode_capturing_sale_purchase/static/src/audio/beep_scan.mp3');
var PurchaseOrderBarcode = Widget.extend(FieldManagerMixin, {
init: function (parent, model, context) {
this._super(parent);
FieldManagerMixin.init.call(this);
this._super.apply(this, arguments);
},
start: function () {
this._super.apply(this, arguments);
const iElement = document.createElement('i')
iElement.classList.add("fa", "fa-barcode", "i_class_barcode")
this.el.append(iElement)
const buttonEl = document.createElement('button')
buttonEl.classList.add('purchase_barcode_btn_new')
buttonEl.innerText = 'Scan Barcode'
this.el.append(buttonEl)
buttonEl.addEventListener('click', this._onClickGlobal.bind(this))
},
/* Onclick of the barcode button this function is executed which creates a new window with video capture using
/* quagga function, which will capture barcode shown to it.
/* The result of barcode will be added to the corresponding purchase order.
*/
_onClickGlobal(ev){
var self = this;
var target = ev.target;
if(true){
var allFieldWidget = this.__parentedParent.allFieldWidgets;
var key=Object.keys(allFieldWidget)
var res_key = key[0]
var res_id = this.__parentedParent.allFieldWidgets[res_key][0].res_id
if(!res_id)
{
alert("Save the order before scanning the product")
return;
}
else
{
var video = document.createElement('video');
video.setAttribute('id', 'barcode_id')
navigator.mediaDevices.getUserMedia({ video: true })
.then(function (stream) {
video.srcObject = stream;
video.play();
const dialog = new Dialog(this, {
title: 'Barcode Scanner',
buttons:
[{
text: _t('close'), classes: 'btn-primary', close: true, click: function () {
Quagga.stop();
dialog.close();
var tracks = video.srcObject.getTracks();
tracks.forEach(function(track) {
track.stop();
});
}
}],
size: 'medium',
$content: video,
});
dialog.open();
Quagga.init({
inputStream : {
name : "Live",
type : "LiveStream",
constraints: {
video: {
facingMode: {
exact: "environment"
}
}
},
numOfWorkers : navigator.hardwareConcurrency,
target : video
},
decoder: {
readers : ['code_128_reader']
}
},
function(err){
if(err){
console.log(err);
return
}
Quagga.start();
}
);
var last_result=[];
Quagga.onDetected(function(result){
var last_code = result.codeResult.code;
last_result.push(last_code);
last_result=[];
beep.play();
Quagga.stop();
dialog.close();
var tracks = video.srcObject.getTracks();
tracks.forEach(function(track) {
track.stop();
});
rpc.query({model: "purchase.order", method: "barcode_search", args: [[last_code, res_id]]
})
.then(function (data) {
if(data == true){
alert("Product with the scanned Barcode Not Found in the system")
return;
}
else{
window.location.reload();
}
});
});
});
}
}
},
});
widgetRegistry.add(
'purchase_barcode', PurchaseOrderBarcode
);
});

11584
barcode_capturing_sale_purchase/static/src/js/quagga.js

File diff suppressed because one or more lines are too long

11
barcode_capturing_sale_purchase/static/src/js/registry_barcode_purchase.js

@ -0,0 +1,11 @@
/** @odoo-module **/
var FormView = require('web.FormView');
import { registry } from "@web/core/registry";
import { ComPurchaseOrderRender } from '@barcode_capturing_sale_purchase/js/purchase_barcode';
//JsClassBarcodePurchase constant is added to views registry
export const JsClassBarcodePurchase = {
...FormView,
Renderer: ComPurchaseOrderRender,
};
registry.category("views").add("purchase_order_barcode", JsClassBarcodePurchase);

11
barcode_capturing_sale_purchase/static/src/js/registry_barcode_sale.js

@ -0,0 +1,11 @@
/** @odoo-module **/
var FormView = require('web.FormView');
import { registry } from "@web/core/registry";
import { ComSaleOrderRender } from '@barcode_capturing_sale_purchase/js/sale_barcode';
//JsClassBarcodeSale constant is added to views registry
export const JsClassBarcodeSale = {
...FormView,
Renderer: ComSaleOrderRender,
};
registry.category("views").add("sale_order_barcode", JsClassBarcodeSale);

133
barcode_capturing_sale_purchase/static/src/js/sale_barcode.js

@ -0,0 +1,133 @@
odoo.define('barcode_capturing_sale_purchase.sale_barcode', function (require) {
'use strict';
var Widget= require('web.Widget');
var widgetRegistry = require('web.widget_registry');
var FieldManagerMixin = require('web.FieldManagerMixin');
const Dialog = require('web.Dialog');
var core = require('web.core');
const _t = core._t;
var rpc = require('web.rpc');
var beep = new Audio('/barcode_capturing_sale_purchase/static/src/audio/beep_scan.mp3');
var SaleOrderBarcode = Widget.extend(FieldManagerMixin, {
init: function (parent, model, context) {
this._super(parent);
FieldManagerMixin.init.call(this);
this._super.apply(this, arguments);
},
start: function () {
this._super.apply(this, arguments);
const iElement = document.createElement('i');
iElement.classList.add("fa", "fa-barcode", "i_class_barcode");
this.el.append(iElement);
const buttonEl = document.createElement('button');
buttonEl.classList.add('purchase_barcode_btn_new');
buttonEl.innerText = 'Scan Barcode';
this.el.append(buttonEl);
buttonEl.addEventListener('click', this._onClickGlobal.bind(this));
},
/* Onclick of the barcode button this function is executed which creates a new window with video capture using
/* quagga function, which will capture barcode shown to it.
/* The result of barcode will be added to the corresponding sale order.
*/
_onClickGlobal(ev){
var self = this;
var target = ev.target;
if(true){
var allFieldWidget = this.__parentedParent.allFieldWidgets;
var key=Object.keys(allFieldWidget)
var res_key = key[0]
var res_id = this.__parentedParent.allFieldWidgets[res_key][0].res_id
if(!res_id)
{
alert("Save the order before scanning the product")
return;
}
else
{
var video = document.createElement('video');
video.setAttribute('id', 'barcode_id')
navigator.mediaDevices.getUserMedia({ video: true })
.then(function (stream) {
video.srcObject = stream;
video.play();
const dialog = new Dialog(this, {
title: 'Barcode Scanner',
buttons:
[{
text: _t('close'), classes: 'btn-primary', close: true, click: function () {
Quagga.stop();
dialog.close();
var tracks = video.srcObject.getTracks();
tracks.forEach(function(track) {
track.stop();
});
}
}],
size: 'medium',
$content: video,
});
dialog.open();
Quagga.init({
inputStream : {
name : "Live",
type : "LiveStream",
constraints: {
video: {
facingMode: {
exact: "environment"
}
}
},
numOfWorkers : navigator.hardwareConcurrency,
target : video
},
decoder: {
readers : ['code_128_reader']
}
},
function(err){
if(err){
return
}
Quagga.start();
}
);
var last_result=[];
Quagga.onDetected(function(result){
var last_code = result.codeResult.code;
last_result.push(last_code);
last_result=[];
beep.play();
Quagga.stop();
dialog.close();
var tracks = video.srcObject.getTracks();
tracks.forEach(function(track) {
track.stop();
});
rpc.query({model: "sale.order", method: "barcode_search", args: [[last_code, res_id]]
})
.then(function (data) {
if(data == true){
alert("Product with the scanned Barcode Not Found in the system")
return;
}
else{
window.location.reload();
}
});
});
});
}
}
},
});
widgetRegistry.add(
'sale_barcode', SaleOrderBarcode
);
});

14
barcode_capturing_sale_purchase/views/purchase_order_views.xml

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Barcode button is added in purchase order form-->
<record id="purchase_order_form" model="ir.ui.view">
<field name="name">purchase.order.view.form.inherit.barcode.capturing.sale.purchase</field>
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.purchase_order_form"/>
<field name="arch" type="xml">
<xpath expr="//sheet" position="inside">
<widget name="purchase_barcode">Scan Barcode</widget>
</xpath>
</field>
</record>
</odoo>

14
barcode_capturing_sale_purchase/views/sale_order_views.xml

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Barcode button is added in sale order form-->
<record id="view_order_form" model="ir.ui.view">
<field name="name">sale.order.view.form.inherit.barcode.capturing.sale.purchase</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//sheet" position="inside">
<widget name="sale_barcode">Scan Barcode</widget>
</xpath>
</field>
</record>
</odoo>
Loading…
Cancel
Save