Browse Source

Jun 13 [ADD] : Initial Commit 'multi_barcode_for_products'

pull/275/head
AjmalCybro 2 years ago
parent
commit
f9b2db38fb
  1. 43
      multi_barcode_for_products/README.rst
  2. 22
      multi_barcode_for_products/__init__.py
  3. 48
      multi_barcode_for_products/__manifest__.py
  4. 6
      multi_barcode_for_products/doc/RELEASE_NOTES.md
  5. 28
      multi_barcode_for_products/models/__init__.py
  6. 56
      multi_barcode_for_products/models/account_move_line.py
  7. 76
      multi_barcode_for_products/models/product_multiple_barcodes.py
  8. 121
      multi_barcode_for_products/models/product_product.py
  9. 79
      multi_barcode_for_products/models/product_template.py
  10. 47
      multi_barcode_for_products/models/purchase_order_line.py
  11. 48
      multi_barcode_for_products/models/sale_order_line.py
  12. 46
      multi_barcode_for_products/models/stock_move.py
  13. 2
      multi_barcode_for_products/security/ir.model.access.csv
  14. BIN
      multi_barcode_for_products/static/description/assets/icons/check.png
  15. BIN
      multi_barcode_for_products/static/description/assets/icons/chevron.png
  16. BIN
      multi_barcode_for_products/static/description/assets/icons/cogs.png
  17. BIN
      multi_barcode_for_products/static/description/assets/icons/consultation.png
  18. BIN
      multi_barcode_for_products/static/description/assets/icons/ecom-black.png
  19. BIN
      multi_barcode_for_products/static/description/assets/icons/education-black.png
  20. BIN
      multi_barcode_for_products/static/description/assets/icons/hotel-black.png
  21. BIN
      multi_barcode_for_products/static/description/assets/icons/license.png
  22. BIN
      multi_barcode_for_products/static/description/assets/icons/lifebuoy.png
  23. BIN
      multi_barcode_for_products/static/description/assets/icons/logo.png
  24. BIN
      multi_barcode_for_products/static/description/assets/icons/manufacturing-black.png
  25. BIN
      multi_barcode_for_products/static/description/assets/icons/pos-black.png
  26. BIN
      multi_barcode_for_products/static/description/assets/icons/puzzle.png
  27. BIN
      multi_barcode_for_products/static/description/assets/icons/restaurant-black.png
  28. BIN
      multi_barcode_for_products/static/description/assets/icons/service-black.png
  29. BIN
      multi_barcode_for_products/static/description/assets/icons/trading-black.png
  30. BIN
      multi_barcode_for_products/static/description/assets/icons/training.png
  31. BIN
      multi_barcode_for_products/static/description/assets/icons/update.png
  32. BIN
      multi_barcode_for_products/static/description/assets/icons/user.png
  33. BIN
      multi_barcode_for_products/static/description/assets/icons/wrench.png
  34. BIN
      multi_barcode_for_products/static/description/assets/misc/categories.png
  35. BIN
      multi_barcode_for_products/static/description/assets/misc/check-box.png
  36. BIN
      multi_barcode_for_products/static/description/assets/misc/compass.png
  37. BIN
      multi_barcode_for_products/static/description/assets/misc/corporate.png
  38. BIN
      multi_barcode_for_products/static/description/assets/misc/customer-support.png
  39. BIN
      multi_barcode_for_products/static/description/assets/misc/cybrosys-logo.png
  40. BIN
      multi_barcode_for_products/static/description/assets/misc/features.png
  41. BIN
      multi_barcode_for_products/static/description/assets/misc/logo.png
  42. BIN
      multi_barcode_for_products/static/description/assets/misc/pictures.png
  43. BIN
      multi_barcode_for_products/static/description/assets/misc/pie-chart.png
  44. BIN
      multi_barcode_for_products/static/description/assets/misc/right-arrow.png
  45. BIN
      multi_barcode_for_products/static/description/assets/misc/star.png
  46. BIN
      multi_barcode_for_products/static/description/assets/misc/support.png
  47. BIN
      multi_barcode_for_products/static/description/assets/misc/whatsapp.png
  48. BIN
      multi_barcode_for_products/static/description/assets/modules/1.png
  49. BIN
      multi_barcode_for_products/static/description/assets/modules/2.png
  50. BIN
      multi_barcode_for_products/static/description/assets/modules/3.gif
  51. BIN
      multi_barcode_for_products/static/description/assets/modules/4.png
  52. BIN
      multi_barcode_for_products/static/description/assets/modules/5.png
  53. BIN
      multi_barcode_for_products/static/description/assets/modules/6.png
  54. BIN
      multi_barcode_for_products/static/description/assets/screenshots/hero.gif
  55. BIN
      multi_barcode_for_products/static/description/assets/screenshots/multi1.png
  56. BIN
      multi_barcode_for_products/static/description/assets/screenshots/multi2.png
  57. BIN
      multi_barcode_for_products/static/description/assets/screenshots/multi3..png
  58. BIN
      multi_barcode_for_products/static/description/assets/screenshots/multi3.png
  59. BIN
      multi_barcode_for_products/static/description/assets/screenshots/multi4.png
  60. BIN
      multi_barcode_for_products/static/description/assets/screenshots/multi5.png
  61. BIN
      multi_barcode_for_products/static/description/assets/screenshots/multi6.png
  62. BIN
      multi_barcode_for_products/static/description/assets/screenshots/multi7.png
  63. BIN
      multi_barcode_for_products/static/description/assets/screenshots/multi8.png
  64. BIN
      multi_barcode_for_products/static/description/assets/screenshots/multi9.png
  65. BIN
      multi_barcode_for_products/static/description/banner.jpg
  66. BIN
      multi_barcode_for_products/static/description/icon.png
  67. 618
      multi_barcode_for_products/static/description/index.html
  68. 15
      multi_barcode_for_products/views/account_move_views.xml
  69. 22
      multi_barcode_for_products/views/product_product_views.xml
  70. 24
      multi_barcode_for_products/views/product_template_search.xml
  71. 24
      multi_barcode_for_products/views/product_template_views.xml
  72. 16
      multi_barcode_for_products/views/purchase_order_views.xml
  73. 16
      multi_barcode_for_products/views/sale_order_views.xml
  74. 15
      multi_barcode_for_products/views/stock_picking_views.xml

43
multi_barcode_for_products/README.rst

@ -0,0 +1,43 @@
.. 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
Multi Barcode for Products
==========================
Multi Barcode for Products helps to assign multiple barcodes for products
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
License
-------
General Public License, Version 3 (AGPL v3).
(https://www.odoo.com/documentation/user/16.0/legal/licenses/licenses.html)
Credits
-------
Developers: Ammu Raj @cybrosys, Contact: odoo@cybrosys.com
Version 14:Mruthul Raj @cybrosys
Contacts
--------
* Mail Contact : odoo@cybrosys.com
* Website : https://cybrosys.com
Bug Tracker
-----------
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Maintainer
==========
.. image:: https://cybrosys.com/images/logo.png
:target: https://cybrosys.com
This module is maintained by Cybrosys Technologies.
For support and more information, please visit `Our Website <https://cybrosys.com/>`__
Further information
===================
HTML Description: `<static/description/index.html>`__

22
multi_barcode_for_products/__init__.py

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

48
multi_barcode_for_products/__manifest__.py

@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mruthul Raj (odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
{
'name': 'Multi Barcode For Products',
'version': '14.0.1.0.0',
'summary': """Allows to create multiple barcode for a single product""",
'description': """Allows to create Product multi barcode for Sales, Purchase, Inventory and Invoicing""",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': 'https://www.cybrosys.com/',
'license': 'AGPL-3',
'category': 'Inventory',
'depends': ['stock', 'sale_management', 'purchase', 'account'],
'data': [
'security/ir.model.access.csv',
'views/account_move_views.xml',
'views/product_product_views.xml',
'views/product_template_views.xml',
'views/product_template_search.xml',
'views/purchase_order_views.xml',
'views/sale_order_views.xml',
'views/stock_picking_views.xml',
],
'images': ['static/description/banner.jpg'],
'installable': True,
'application': False,
'auto_install': False
}

6
multi_barcode_for_products/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <multi_barcode_for_products>
#### 08.05.2023
#### Version 14.0.1.0.0
#### ADD
- Initial commit for Multi Barcode for Products

28
multi_barcode_for_products/models/__init__.py

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

56
multi_barcode_for_products/models/account_move_line.py

@ -0,0 +1,56 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mruthul Raj (odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from odoo import api, fields, models
class AccountMoveLine(models.Model):
"""Inherits Invoice Lines
This model inherits from the `account.move.line` model and adds a new
field `scan_barcode` for scanning product barcodes. The `_onchange_scan
_barcode` method is triggered whenever the `scan_barcode` field is
changed, and it searches for a `product.multiple.barcodes` record
that matches the scanned barcode. If a matching record is found, it sets
the `product_id` field to the corresponding product barcode ID.
Attributes:
_inherit (str): Name of the parent model to inherit from.
scan_barcode (fields.Char): Field for scanning product barcodes.
"""
_inherit = 'account.move.line'
scan_barcode = fields.Char(string='Product Barcode',
help="You can scan the barcode here")
@api.onchange('scan_barcode')
def _onchange_scan_barcode(self):
"""For getting the scanned barcode product
This method is triggered whenever the `scan_barcode` field is changed.
It searches for a `product.multiple.barcodes` record that matches the
scanned barcode. If a matching record is found, it sets the
`product_id` field to the corresponding product barcode ID.
"""
if self.scan_barcode:
self.product_id = self.env['product.multiple.barcodes'].search(
[('product_multi_barcode', '=',
self.scan_barcode)]).product_barcode_id

76
multi_barcode_for_products/models/product_multiple_barcodes.py

@ -0,0 +1,76 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mruthul Raj (odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from odoo import fields, models
class ProductMultiBarcode(models.Model):
"""Model for creating multiple Barcodes per product.
This model is used to store alternate barcodes for a product. It includes
fields for the barcode value, the corresponding product and template
barcodes, and a constraint to ensure that each barcode is unique.
Attributes:
_name (str): Technical name of the model.
_rec_name (str): Name of the field to use as the record name.
product_multi_barcode (fields.Char): Field for storing the barcode value.
product_barcode_id (fields.Many2one): Field for linking to the
corresponding `product.product` record.
template_barcode_id (fields.Many2one): Field for linking to the
corresponding `product.template` record.
_sql_constraints (list): List of SQL constraints to apply to the model.
"""
_name = 'product.multiple.barcodes'
_rec_name = 'product_multi_barcode'
_description = 'Model for managing multiple barcodes for products,'
product_multi_barcode = fields.Char(string="Barcode",
help="Provide alternate "
"barcodes for this product")
product_barcode_id = fields.Many2one('product.product',
string='Product Barcode',
help='Select the product associated'
' with this barcode.')
template_barcode_id = fields.Many2one('product.template',
string='Template Barcode',
help='Select the product template '
'associated with this barcode.')
_sql_constraints = [
('field_unique', 'unique(product_multi_barcode)',
'Existing barcode is not allowed !'),
]
def get_barcode_val(self, product):
"""Get the barcode value and corresponding product ID.
This method returns a tuple with the barcode value and the ID of the corresponding
`product.product` record.
Args:
product (product.product): The product to get the barcode value for.
Returns:
tuple: A tuple containing the barcode value and the product ID.
"""
return self.product_multi_barcode, product

121
multi_barcode_for_products/models/product_product.py

@ -0,0 +1,121 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mruthul Raj (odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from odoo import api, fields, models
class ProductProduct(models.Model):
"""
This class inherits the `product.product`model and adds the functionality to
set multiple barcodes for a product.
"""
_inherit = 'product.product'
multi_barcodes_ids = fields.One2many('product.multiple.barcodes',
'product_barcode_id', string='Barcodes',
help='Set multiple barcode')
def _check_multi_barcode(self, domain):
"""
Private method that checks if the product has multiple barcodes and
returns the product id.
Args:
domain (list): A list of tuples containing the search criteria.
Returns:
int or None: The ID of the product if multiple barcodes are found,
None otherwise.
"""
product_id = None
if len(domain) > 1:
if 'barcode' in domain[0]:
barcode = domain[0][2]
product_multi_barcode = self.env['product.multiple.barcodes'].search(
[('product_multi_barcode', '=', barcode)])
if product_multi_barcode:
product_id = product_multi_barcode.product_barcode_id.id
return product_id
@api.model
def search_read(self, domain=None, fields=None, offset=0, limit=None,
order=None):
"""
This method overrides the `search_read` method of the `product.product`
model to search for products with alternate barcodes.
Args:
domain (list): A list of tuples containing the search criteria.
fields (list): A list of fields to include in the search results.
offset (int): The starting index of the search results.
limit (int): The maximum number of search results to return.
order (str): The order in which to return the search results.
Returns:
list: A list of dictionaries representing the search results.
"""
product_id = self._check_multi_barcode(domain)
if product_id:
domain = [('id', '=', product_id)]
res = super().search_read(domain=domain, fields=fields, offset=offset,
limit=limit, order=order)
return res
@api.model
def create(self, vals):
"""
This method overrides the `create` method of the `product.product`
model to add the product template ID to the alternate barcodes.
Args:
vals (dict): A dictionary containing the values to create the
product with.
Returns:
product.product: The created product.
"""
res = super(ProductProduct, self).create(vals)
res.multi_barcodes_ids.update({
'template_barcode_id': res.product_tmpl_id.id
})
return res
def write(self, vals):
"""
This method overrides the `write` method of the `product.product` model
to update the product template ID in the alternate barcodes.
Args:
vals (dict): A dictionary containing the values to update the
product with.
Returns:
bool: True if the write operation is successful, False otherwise.
"""
res = super(ProductProduct, self).write(vals)
if self.multi_barcodes_ids:
self.multi_barcodes_ids.update({
'template_barcode_id': self.product_tmpl_id.id
})
return res

79
multi_barcode_for_products/models/product_template.py

@ -0,0 +1,79 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mruthul Raj (odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from odoo import api, fields, models
class ProductTemplate(models.Model):
"""
Model for managing product templates.
Inherits:
product.template (product.template): The default Odoo product template
model.
"""
_inherit = 'product.template'
template_multi_barcodes_ids = fields.One2many('product.multiple.barcodes',
'template_barcode_id',
string='Barcodes',
help='Set multiple'
' barcodes for this '
'product template')
def write(self, vals):
"""
Overrides the write method of the Odoo model.
Args:
vals (dict): A dictionary of field names and their new values to
write to the record.
Returns:
object: A reference to the updated record.
"""
res = super(ProductTemplate, self).write(vals)
if self.template_multi_barcodes_ids:
self.template_multi_barcodes_ids.update({
'product_barcode_id': self.product_variant_id.id
})
return res
@api.model
def create(self, vals):
"""
Overrides the create method of the Odoo model.
Args:
vals (dict): A dictionary of field names and their values to create
the new record with.
Returns:
object: A reference to the newly created record.
"""
res = super(ProductTemplate, self).create(vals)
res.template_multi_barcodes_ids.update({
'product_barcode_id ': res.product_variant_id.id
})
return res

47
multi_barcode_for_products/models/purchase_order_line.py

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mruthul Raj (odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from odoo import api, fields, models
class PurchaseOrderLines(models.Model):
_inherit = "purchase.order.line"
"""
This model inherits 'purchase.order.line' model to extend its functionality
with a new field 'scan_barcode'.
"""
scan_barcode = fields.Char(string='Product Barcode',
help="Here you can provide the barcode for the "
"product")
@api.onchange('scan_barcode')
def _onchange_scan_barcode(self):
"""
This function is called when the 'scan_barcode' field is changed. It
searches for the product with the scanned barcode in the
'product.multiple.barcodes' model and sets the 'product_id' field
of the current record to the found product.
"""
if self.scan_barcode:
self.product_id = self.env['product.multiple.barcodes'].search(
[('product_multi_barcode', '=',
self.scan_barcode)]).product_barcode_id

48
multi_barcode_for_products/models/sale_order_line.py

@ -0,0 +1,48 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mruthul Raj (odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from odoo import api, fields, models
class SaleOrderLines(models.Model):
"""
This class is used to inherit Sale Order Line and add a new field
"scan_barcode" which can be used to scan the barcode of a product and
set the corresponding product in the sale order line.
"""
_inherit = 'sale.order.line'
scan_barcode = fields.Char(string='Product Barcode',
help="Enter the barcode for the product to "
"add it to the sale order line")
@api.onchange('scan_barcode')
def _onchange_scan_barcode(self):
"""
This method is triggered when the value of the "scan_barcode" field
changes. It searches the product with the given barcode in the
"product.multiple.barcodes" model and sets the corresponding product in
the sale order line.
"""
if self.scan_barcode:
self.product_id = self.env['product.multiple.barcodes'].search(
[('product_multi_barcode', '=',
self.scan_barcode)]).product_barcode_id

46
multi_barcode_for_products/models/stock_move.py

@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Mruthul Raj (odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
from odoo import api, fields, models
class StockMove(models.Model):
"""Extends the Stock Move model to add a new field for scanning barcodes."""
_inherit = 'stock.move'
scan_barcode = fields.Char(string='Product Barcode',
help="Scan the barcode of the product to"
" automatically set its ID.")
@api.onchange('scan_barcode')
def _onchange_scan_barcode(self):
"""Updates the product_id field when a barcode is scanned.
This method searches for a product with the scanned barcode using the
product.multiple.barcodes model, and sets the product_id field to the
product_barcode_id of the matching product.
"""
if self.scan_barcode:
self.product_id = self.env['product.multiple.barcodes'].search(
[('product_multi_barcode', '=',
self.scan_barcode)]).product_barcode_id

2
multi_barcode_for_products/security/ir.model.access.csv

@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
multiple_barcode_products_id,product.multiple.barcodes,model_product_multiple_barcodes,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 multiple_barcode_products_id product.multiple.barcodes model_product_multiple_barcodes base.group_user 1 1 1 1

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
multi_barcode_for_products/static/description/assets/modules/3.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
multi_barcode_for_products/static/description/assets/modules/6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 KiB

BIN
multi_barcode_for_products/static/description/assets/screenshots/multi1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

BIN
multi_barcode_for_products/static/description/assets/screenshots/multi2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

BIN
multi_barcode_for_products/static/description/assets/screenshots/multi3..png

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

BIN
multi_barcode_for_products/static/description/assets/screenshots/multi3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

BIN
multi_barcode_for_products/static/description/assets/screenshots/multi4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

BIN
multi_barcode_for_products/static/description/assets/screenshots/multi5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
multi_barcode_for_products/static/description/assets/screenshots/multi6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

BIN
multi_barcode_for_products/static/description/assets/screenshots/multi7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

BIN
multi_barcode_for_products/static/description/assets/screenshots/multi8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

BIN
multi_barcode_for_products/static/description/assets/screenshots/multi9.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

BIN
multi_barcode_for_products/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
multi_barcode_for_products/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

618
multi_barcode_for_products/static/description/index.html

@ -0,0 +1,618 @@
<div style="background-color: #714B67; min-height: 600px; width: 100%; padding: 15px; position: relative;">
<!-- TITLE BAR -->
<div
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;">
<img src="./assets/misc/cybrosys-logo.png" width="42" height="42" style="width: 42px; height: 42px;" />
<div>
<div style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Community
</div>
<div style="color: #875A7B; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
</div>
</div>
<!-- END OF TITLE BAR -->
<!-- APP HERO -->
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">
Multi Barcode for Products</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">Product Multiple Barcode Odoo App is allowed to create unique multiple barcodes for products and their variants under the 'Barcodes' tab. You can search the products based on the multi barcode. By scanning this multi barcode you can choose the required product from sales, purchase, inventory operation, and invoicing.</p>
<!-- END OF APP HERO -->
<img src="./assets/screenshots/hero.gif"
style="width: 75%; height: auto; position: absolute; margin-left: auto; margin-right: auto; top: 45%; left: 12%; right: auto;" />
</div>
<!-- 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">
This module allows you to create unique multiple barcode per product and product variants.
</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-start" style="margin-top: 40px; margin-bottom: 40px">
<img src="./assets/misc/check-box.png" class="mr-2" />
<div>
<span
style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Unique multiple barcodes</span>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 12px;">Easy to create unique multiple barcodes for products.</span>
</div>
</div>
<div class="d-flex align-items-start" style="margin-top: 30px; margin-bottom: 30px">
<img src="./assets/misc/check-box.png" class="mr-2" />
<div>
<span
style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Searching of products</span>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Easy to search the products in the basis of multi barcode in product page.</span>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-start" style="margin-top: 30px; margin-bottom: 30px">
<img src="./assets/misc/check-box.png" class="mr-2" />
<div>
<span
style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Direct scanning</span>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Direct scanning of multi barcode of a product for searching.
</span>
</div>
</div>
<div class="d-flex align-items-start" style="margin-top: 30px; margin-bottom: 30px">
<img src="./assets/misc/check-box.png" class="mr-2" />
<div>
<span
style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Multi Barcode in Sales,Purchase, Operations and Invoicing
</span>
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Easy to select the product having multi barcode from sales,purchase,operations and invoices.</span>
</div>
</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;">Multiple barcode for products</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Under the "Barcode" tab we can create unique multi barcode for a product.</p>
<img src="./assets/screenshots/multi1.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;">Multiple barcode for product variants</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Also we can create multi barcodes per product variants Under the "Barcodes" tab.</p>
<img src="./assets/screenshots/multi2.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;">Searching of products</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">We can search product having multi barcode.</p>
<img src="./assets/screenshots/multi3.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<img src="./assets/screenshots/multi4.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;">Direct Scanning of multi barcode</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Also we can scan the multi barcode for searching the product.</p>
<img src="./assets/screenshots/multi5.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;">Selection of product having multi barcode in Sale Order Line</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">We can scan the multi barcode in the field "Product Barcode",then the product having that barcode will appear in Sales.</p>
<img src="./assets/screenshots/multi6.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;">Selection of product having multi barcode in Purchase Order Line</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">We can scan the multi barcode in the field "Product Barcode",then the product having that barcode will appear in Purchase</p>
<img src="./assets/screenshots/multi7.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;">Selection of product having multi barcode in Operations</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">We can scan the multi barcode in the field "Product Barcode",then the product having that barcode will appear in every operations in Inventory module</p>
<img src="./assets/screenshots/multi8.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;">Selection of product having multi barcode in Invoices</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">We can scan the multi barcode in the field "Product Barcode",then the product having that barcode will appear in Invoicing module</p>
<img src="./assets/screenshots/multi9.png" class="img-thumbnail">
</div>
</div>
</div>
<!-- END OF SCREENSHOTS SECTION -->
<!-- SUGGESTED PRODUCTS -->
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center"
style="text-align: center; padding: 2.5rem 1rem !important;">
<h2 style="color: #212529 !important;">Suggested Products</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/>
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner">
<div class="carousel-item active" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/customer_sequence/"
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.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/barcode_scanning_sale_purchase/"
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/14.0/base_accounting_kit/"
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.gif">
</div>
</a>
</div>
</div>
<div class="carousel-item" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/product_return_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/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/14.0/point_of_sale_logo"
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/14.0/invoice_format_editor/"
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 SUGGESTED 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 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 &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: 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 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 -->

15
multi_barcode_for_products/views/account_move_views.xml

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Adds a field to scan barcodes in the account move form -->
<record id="account_move_multi_barcode_view" model="ir.ui.view">
<field name="name">account.move.view.form.inherit.multi.barcode</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='invoice_line_ids']/tree/field[@name='product_id']"
position="before">
<field name="scan_barcode"/>
</xpath>
</field>
</record>
</odoo>

22
multi_barcode_for_products/views/product_product_views.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Define a new view for the product.product model to display multiple barcodes -->
<record id="product_product_multi_barcode_view" model="ir.ui.view">
<field name="name">
product.product.view.form.inherit.multi.barcode
</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='general_information']" position="after">
<page string="Barcodes">
<field name="multi_barcodes_ids">
<tree editable="bottom">
<field name="product_multi_barcode"/>
</tree>
</field>
</page>
</xpath>
</field>
</record>
</odoo>

24
multi_barcode_for_products/views/product_template_search.xml

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Define new view for product.template model to search for products
by barcode -->
<record id="product_template_search_multi_barcode_view" model="ir.ui.view">
<field name="name">product.template.search.inherit.multi.barcode</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_search_view"/>
<field name="arch" type="xml">
<field name="name" position="replace">
<field name="name" string="Product"
filter_domain="['|', '|', '|',
('default_code', 'ilike', self),
('product_variant_ids.default_code', 'ilike', self),
('name', 'ilike', self),
('template_multi_barcodes_ids', 'ilike', self)]"/>
</field>
<field name="name" position="after">
<field name="template_multi_barcodes_ids"
string="Multi Barcodes"/>
</field>
</field>
</record>
</odoo>

24
multi_barcode_for_products/views/product_template_views.xml

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Define new view for product.template model to display multiple barcodes -->
<record id="product_template_multi_barcode_view" model="ir.ui.view">
<field name="name">product.template.form.inherit.multi.barcode</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='general_information']//field[@name='barcode']"
position="replace">
</xpath>
<xpath expr="//page[@name='general_information']" position="after">
<page string="Barcodes"
attrs="{'invisible':[('product_variant_count', '>', 1),]}">
<field name="template_multi_barcodes_ids">
<tree editable="bottom">
<field name="product_multi_barcode"/>
</tree>
</field>
</page>
</xpath>
</field>
</record>
</odoo>

16
multi_barcode_for_products/views/purchase_order_views.xml

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Define new view for purchase.order model to add a field for scanning barcodes -->
<record id="purchase_order_multi_barcode_view" model="ir.ui.view">
<field name="name">purchase.order.view.form.inherit.multi.barcode
</field>
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.purchase_order_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='order_line']/tree/field[@name='product_id']"
position="before">
<field name="scan_barcode"/>
</xpath>
</field>
</record>
</odoo>

16
multi_barcode_for_products/views/sale_order_views.xml

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Define new view for sale.order model to add a field for scanning barcodes -->
<record id="sale_order_multi_barcode_view" model="ir.ui.view">
<field name="name">sale.order.view.form.inherit.multi.barcode
</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='order_line']/tree/field[@name='product_id']"
position="before">
<field name="scan_barcode"/>
</xpath>
</field>
</record>
</odoo>

15
multi_barcode_for_products/views/stock_picking_views.xml

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Define new view for stock.picking model to add a field for scanning barcodes -->
<record id="stock_picking_multi_barcode_view" model="ir.ui.view">
<field name="name">stock.picking.view.form.inherit.multi.barcode</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='move_ids_without_package']/tree/field[@name='product_id']"
position="before">
<field name="scan_barcode"/>
</xpath>
</field>
</record>
</odoo>
Loading…
Cancel
Save