Browse Source

May 23: [ADD] Initital Commit 'product_management_system'

pull/320/head
RisvanaCybro 1 year ago
parent
commit
7488b8c933
  1. 44
      product_management_system/README.rst
  2. 22
      product_management_system/__init__.py
  3. 73
      product_management_system/__manifest__.py
  4. 7
      product_management_system/doc/RELEASE_NOTES.md
  5. 23
      product_management_system/security/ir.model.access.csv
  6. 8
      product_management_system/security/product_management_system_groups.xml
  7. BIN
      product_management_system/static/description/assets/icons/cogs.png
  8. BIN
      product_management_system/static/description/assets/icons/consultation.png
  9. BIN
      product_management_system/static/description/assets/icons/ecom-black.png
  10. BIN
      product_management_system/static/description/assets/icons/education-black.png
  11. BIN
      product_management_system/static/description/assets/icons/hotel-black.png
  12. BIN
      product_management_system/static/description/assets/icons/license.png
  13. BIN
      product_management_system/static/description/assets/icons/lifebuoy.png
  14. BIN
      product_management_system/static/description/assets/icons/manufacturing-black.png
  15. BIN
      product_management_system/static/description/assets/icons/pos-black.png
  16. BIN
      product_management_system/static/description/assets/icons/puzzle.png
  17. BIN
      product_management_system/static/description/assets/icons/restaurant-black.png
  18. BIN
      product_management_system/static/description/assets/icons/service-black.png
  19. BIN
      product_management_system/static/description/assets/icons/trading-black.png
  20. BIN
      product_management_system/static/description/assets/icons/training.png
  21. BIN
      product_management_system/static/description/assets/icons/update.png
  22. BIN
      product_management_system/static/description/assets/icons/user.png
  23. BIN
      product_management_system/static/description/assets/icons/wrench.png
  24. BIN
      product_management_system/static/description/assets/misc/categories.png
  25. BIN
      product_management_system/static/description/assets/misc/check-box.png
  26. BIN
      product_management_system/static/description/assets/misc/compass.png
  27. BIN
      product_management_system/static/description/assets/misc/config.png
  28. BIN
      product_management_system/static/description/assets/misc/corporate.png
  29. BIN
      product_management_system/static/description/assets/misc/customer-support.png
  30. BIN
      product_management_system/static/description/assets/misc/features.png
  31. BIN
      product_management_system/static/description/assets/misc/logo.png
  32. BIN
      product_management_system/static/description/assets/misc/pictures.png
  33. BIN
      product_management_system/static/description/assets/misc/pie-chart.png
  34. BIN
      product_management_system/static/description/assets/misc/right-arrow.png
  35. BIN
      product_management_system/static/description/assets/misc/star.png
  36. BIN
      product_management_system/static/description/assets/misc/support.png
  37. BIN
      product_management_system/static/description/assets/misc/whatsapp.png
  38. BIN
      product_management_system/static/description/assets/modules/1.png
  39. BIN
      product_management_system/static/description/assets/modules/2.png
  40. BIN
      product_management_system/static/description/assets/modules/3.png
  41. BIN
      product_management_system/static/description/assets/modules/4.png
  42. BIN
      product_management_system/static/description/assets/modules/5.png
  43. BIN
      product_management_system/static/description/assets/modules/6.png
  44. BIN
      product_management_system/static/description/assets/screenshots/1.png
  45. BIN
      product_management_system/static/description/assets/screenshots/10.png
  46. BIN
      product_management_system/static/description/assets/screenshots/11.png
  47. BIN
      product_management_system/static/description/assets/screenshots/12.png
  48. BIN
      product_management_system/static/description/assets/screenshots/13.png
  49. BIN
      product_management_system/static/description/assets/screenshots/14.png
  50. BIN
      product_management_system/static/description/assets/screenshots/15.png
  51. BIN
      product_management_system/static/description/assets/screenshots/16.png
  52. BIN
      product_management_system/static/description/assets/screenshots/2.png
  53. BIN
      product_management_system/static/description/assets/screenshots/3.png
  54. BIN
      product_management_system/static/description/assets/screenshots/4.png
  55. BIN
      product_management_system/static/description/assets/screenshots/5.png
  56. BIN
      product_management_system/static/description/assets/screenshots/6.png
  57. BIN
      product_management_system/static/description/assets/screenshots/7.png
  58. BIN
      product_management_system/static/description/assets/screenshots/8.png
  59. BIN
      product_management_system/static/description/assets/screenshots/9.png
  60. BIN
      product_management_system/static/description/assets/screenshots/hero.png
  61. BIN
      product_management_system/static/description/banner.jpg
  62. BIN
      product_management_system/static/description/icon.png
  63. 786
      product_management_system/static/description/index.html
  64. 3
      product_management_system/static/src/css/product_management.css
  65. 364
      product_management_system/static/src/js/product_management_system.js
  66. 151
      product_management_system/static/src/xml/product_management_system.xml
  67. 13
      product_management_system/views/product_management_system_menus.xml
  68. 106
      product_management_system/views/product_management_system_views.xml
  69. 41
      product_management_system/wizard/__init__.py
  70. 47
      product_management_system/wizard/product_accessory.py
  71. 22
      product_management_system/wizard/product_accessory_views.xml
  72. 69
      product_management_system/wizard/product_add_attribute.py
  73. 31
      product_management_system/wizard/product_add_attribute_views.xml
  74. 68
      product_management_system/wizard/product_add_vendor.py
  75. 33
      product_management_system/wizard/product_add_vendor.xml
  76. 49
      product_management_system/wizard/product_alternative.py
  77. 22
      product_management_system/wizard/product_alternative_views.xml
  78. 44
      product_management_system/wizard/product_archive.py
  79. 22
      product_management_system/wizard/product_archive_views.xml
  80. 47
      product_management_system/wizard/product_category_change.py
  81. 26
      product_management_system/wizard/product_category_change_views.xml
  82. 46
      product_management_system/wizard/product_category_website.py
  83. 22
      product_management_system/wizard/product_category_website_views.xml
  84. 49
      product_management_system/wizard/product_change_tracking.py
  85. 22
      product_management_system/wizard/product_change_tracking_views.xml
  86. 44
      product_management_system/wizard/product_customer_lead_time.py
  87. 22
      product_management_system/wizard/product_customer_lead_time_views.xml
  88. 47
      product_management_system/wizard/product_customer_tax.py
  89. 26
      product_management_system/wizard/product_customer_tax_views.xml
  90. 42
      product_management_system/wizard/product_delete.py
  91. 22
      product_management_system/wizard/product_delete_views.xml
  92. 47
      product_management_system/wizard/product_inventory_location.py
  93. 23
      product_management_system/wizard/product_inventory_location_views.xml
  94. 47
      product_management_system/wizard/product_invoice.py
  95. 22
      product_management_system/wizard/product_invoice_views.xml
  96. 54
      product_management_system/wizard/product_make_purchasable.py
  97. 24
      product_management_system/wizard/product_make_purchasable_views.xml
  98. 54
      product_management_system/wizard/product_make_salable.py
  99. 24
      product_management_system/wizard/product_make_salable_views.xml
  100. 49
      product_management_system/wizard/product_optional.py

44
product_management_system/README.rst

@ -0,0 +1,44 @@
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
Product Management System
==========================
* This module helps in product management system.
Configuration
============
- No additional configuration required
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
License
-------
General Public License, Version 3 (AGPL v3).
(https://www.gnu.org/licenses/agpl-3.0-standalone.html)
Credits
-------
* Developer: (V16) Amaya Aravind EV, Ashwin A
* Contact: odoo@cybrosys.com
Contacts
--------
* Mail Contact : odoo@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
==========
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
product_management_system/__init__.py

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

73
product_management_system/__manifest__.py

@ -0,0 +1,73 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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': 'Product Management System',
'version': '16.0.1.0.0',
'category': 'Warehouse , Extra Tools',
'summary': """This module helps in product management system.""",
'description': """ Mass actions are operations that might be proceeded for
a number of product templates in batch. The tool offers multiple default
actions, among which you can select the required ones.""",
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'depends': ['product', 'website_sale', 'purchase', 'stock'],
'data': [
'security/product_management_system_groups.xml',
'security/ir.model.access.csv',
'views/product_management_system_views.xml',
'views/product_management_system_menus.xml',
'wizard/product_add_vendor.xml',
'wizard/product_category_change_views.xml',
'wizard/product_update_price_views.xml',
'wizard/product_make_purchasable_views.xml',
'wizard/product_make_salable_views.xml',
'wizard/product_delete_views.xml',
'wizard/product_alternative_views.xml',
'wizard/product_archive_views.xml',
'wizard/product_accessory_views.xml',
'wizard/product_optional_views.xml',
'wizard/product_invoice_views.xml',
'wizard/product_customer_tax_views.xml',
'wizard/product_vendor_tax_views.xml',
'wizard/product_publish_views.xml',
'wizard/product_category_website_views.xml',
'wizard/product_add_attribute_views.xml',
'wizard/product_change_tracking_views.xml',
'wizard/product_production_location_views.xml',
'wizard/product_inventory_location_views.xml',
'wizard/product_customer_lead_time_views.xml',
],
'assets': {
'web.assets_backend': [
'product_management_system/static/src/css/**.css',
'product_management_system/static/src/xml/**.xml',
'product_management_system/static/src/js/**.js',
]
},
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': True,
}

7
product_management_system/doc/RELEASE_NOTES.md

@ -0,0 +1,7 @@
## Module <product_management_system>
#### 04.05.2024
#### Version 16.0.1.0.0
#### ADD
- Initial Commit for Product Management System

23
product_management_system/security/ir.model.access.csv

@ -0,0 +1,23 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_product_delete,product.delete,model_product_delete,base.group_user,1,1,1,1
access_product_category_change,product.category.change,model_product_category_change,base.group_user,1,1,1,1
access_product_update_price,product.update.price,model_product_update_price,base.group_user,1,1,1,1
access_product_vendor,product.vendor,model_product_vendor,base.group_user,1,1,1,1
access_product_add_vendor,product.add.vendor,model_product_add_vendor,base.group_user,1,1,1,1
access_product_make_purchasable,product.make.purchasable,model_product_make_purchasable,base.group_user,1,1,1,1
access_product_make_salable,product.make.salable,model_product_make_salable,base.group_user,1,1,1,1
access_product_archive,product.archive,model_product_archive,base.group_user,1,1,1,1
access_product_alternative,product.alternative,model_product_alternative,base.group_user,1,1,1,1
access_product_accessory,product.accessory,model_product_accessory,base.group_user,1,1,1,1
access_product_optional,product.optional,model_product_optional,base.group_user,1,1,1,1
access_product_invoice,product.invoice,model_product_invoice,base.group_user,1,1,1,1
access_product_customer_tax,product.customer.tax,model_product_customer_tax,base.group_user,1,1,1,1
access_product_vendor_tax,product.vendor.tax,model_product_vendor_tax,base.group_user,1,1,1,1
access_product_publish,product.publish,model_product_publish,base.group_user,1,1,1,1
access_product_category_website,product.category.website,model_product_category_website,base.group_user,1,1,1,1
access_product_add_attribute,product.add.attribute,model_product_add_attribute,base.group_user,1,1,1,1
access_product_management_attribute,product.management.attribute,model_product_management_attribute,base.group_user,1,1,1,1
access_product_change_tracking,product.change.tracking,model_product_change_tracking,base.group_user,1,1,1,1
access_product_production_location,product.production.location,model_product_production_location,base.group_user,1,1,1,1
access_product_inventory_location,product.inventory.location,model_product_inventory_location,base.group_user,1,1,1,1
access_product_customer_lead_time,product.customer.lead.time,model_product_customer_lead_time,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 access_product_delete product.delete model_product_delete base.group_user 1 1 1 1
3 access_product_category_change product.category.change model_product_category_change base.group_user 1 1 1 1
4 access_product_update_price product.update.price model_product_update_price base.group_user 1 1 1 1
5 access_product_vendor product.vendor model_product_vendor base.group_user 1 1 1 1
6 access_product_add_vendor product.add.vendor model_product_add_vendor base.group_user 1 1 1 1
7 access_product_make_purchasable product.make.purchasable model_product_make_purchasable base.group_user 1 1 1 1
8 access_product_make_salable product.make.salable model_product_make_salable base.group_user 1 1 1 1
9 access_product_archive product.archive model_product_archive base.group_user 1 1 1 1
10 access_product_alternative product.alternative model_product_alternative base.group_user 1 1 1 1
11 access_product_accessory product.accessory model_product_accessory base.group_user 1 1 1 1
12 access_product_optional product.optional model_product_optional base.group_user 1 1 1 1
13 access_product_invoice product.invoice model_product_invoice base.group_user 1 1 1 1
14 access_product_customer_tax product.customer.tax model_product_customer_tax base.group_user 1 1 1 1
15 access_product_vendor_tax product.vendor.tax model_product_vendor_tax base.group_user 1 1 1 1
16 access_product_publish product.publish model_product_publish base.group_user 1 1 1 1
17 access_product_category_website product.category.website model_product_category_website base.group_user 1 1 1 1
18 access_product_add_attribute product.add.attribute model_product_add_attribute base.group_user 1 1 1 1
19 access_product_management_attribute product.management.attribute model_product_management_attribute base.group_user 1 1 1 1
20 access_product_change_tracking product.change.tracking model_product_change_tracking base.group_user 1 1 1 1
21 access_product_production_location product.production.location model_product_production_location base.group_user 1 1 1 1
22 access_product_inventory_location product.inventory.location model_product_inventory_location base.group_user 1 1 1 1
23 access_product_customer_lead_time product.customer.lead.time model_product_customer_lead_time base.group_user 1 1 1 1

8
product_management_system/security/product_management_system_groups.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- New user group created for product management-->
<record id="user_product_management" model="res.groups">
<field name="name">Product Management</field>
<field name="category_id" ref="base.module_category_usability"/>
</record>
</odoo>

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
product_management_system/static/description/assets/misc/config.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

BIN
product_management_system/static/description/assets/screenshots/1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

BIN
product_management_system/static/description/assets/screenshots/10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

BIN
product_management_system/static/description/assets/screenshots/11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

BIN
product_management_system/static/description/assets/screenshots/12.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

BIN
product_management_system/static/description/assets/screenshots/13.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

BIN
product_management_system/static/description/assets/screenshots/14.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

BIN
product_management_system/static/description/assets/screenshots/15.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

BIN
product_management_system/static/description/assets/screenshots/16.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

BIN
product_management_system/static/description/assets/screenshots/2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

BIN
product_management_system/static/description/assets/screenshots/3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

BIN
product_management_system/static/description/assets/screenshots/4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

BIN
product_management_system/static/description/assets/screenshots/5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

BIN
product_management_system/static/description/assets/screenshots/6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

BIN
product_management_system/static/description/assets/screenshots/7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

BIN
product_management_system/static/description/assets/screenshots/8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

BIN
product_management_system/static/description/assets/screenshots/9.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

BIN
product_management_system/static/description/assets/screenshots/hero.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 830 KiB

BIN
product_management_system/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

BIN
product_management_system/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

786
product_management_system/static/description/index.html

@ -0,0 +1,786 @@
<div style="background-color: #714B67; min-height: 600px; width: 100%; padding: 15px; position: relative;">
<!-- TITLE BAR -->
<div class="d-flex align-items-center justify-content-between"
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;">
<img src="assets/misc/logo.png" width="162" height="60"
style="width:auto !important; height:60px !important"/>
<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: #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>Enterprise
</div>
</div>
</div>
<!-- END OF TITLE BAR -->
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<!-- APP HERO -->
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">
Product Management System
</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">This module helps in product management system.</p>
<!-- END OF APP HERO -->
<img src="./assets/screenshots/hero.png"
style="width: 75%; height: auto; position: absolute; margin-left: auto; margin-right: auto; top: 45%; left: 12%; right: auto;"/>
</div>
</div>
</div>
</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">
Mass actions and operations that might be proceeded for a number of
product templates in batch.
The tool offers multiple default actions, among which you can select the
required ones.
</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;">Change the product category of all selected items.</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;">Change the product customer lead time of all selected items.</span>
</div>
</div>
<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;">Archive products in bulk.</span>
</div>
</div>
<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;">Update the product sales price of all selected items.</span>
</div>
</div>
<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;">Add product vendors for all selected items.</span>
</div>
</div>
<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;">Make product salable and purchasable for all selected items.</span>
</div>
</div>
<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;">Delete all selected products.</span>
</div>
</div>
<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;">Publish or unpublish products in batch.</span>
</div>
</div>
<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;">Add Alternative products for all selected items.</span>
</div>
</div>
<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;">Add Accessory products for all selected items.</span>
</div>
</div>
<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;">Add Optional products for all selected items.</span>
</div>
</div>
<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;">Change invoice policy of all selected items.</span>
</div>
</div>
<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;">Add Customer/Vendor taxes for all selected items.</span>
</div>
</div>
<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;">Change website product category of all selected items.</span>
</div>
</div>
<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;">Add Attribute & Variants for all selected items.</span>
</div>
</div>
<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;">Change product tracking for all selected items.</span>
</div>
</div>
<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;">Change Production/Inventory location for all selected items.</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;">
User Configuration</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Settings -> Users -> Turn on Product Management </p>
<img src="assets/screenshots/16.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;">
Kanban View Of Products</h3>
<img src="assets/screenshots/1.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
By selecting Products in kanban view a new list of buttons will be shown</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
We can perform different actions for the selected products.</p>
<img src="assets/screenshots/2.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Change Product Category</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
By clicking the change category button a wizard appear for changing category of selected products.</p>
<img src="assets/screenshots/3.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;">
Change Customer Lead Time</h3>
<img src="assets/screenshots/4.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;">
Archive Products</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
<img src="assets/screenshots/5.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;">
Update Sale Price Of Selected Products</h3>
<img src="assets/screenshots/6.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;">
Add Vendors For Selected Products</h3>
<img src="assets/screenshots/7.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;">
Make Product Salable</h3>
<img src="assets/screenshots/8.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;">
Add Alternative Products For Selected Products</h3>
<img src="assets/screenshots/9.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;">
Edit Invoice Policy Of Selected Products</h3>
<img src="assets/screenshots/10.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;">
Change Customer Tax Of Selected Products</h3>
<img src="assets/screenshots/11.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;">
Change Website Category Of Selected Products</h3>
<img src="assets/screenshots/12.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;">
Add Product Attributes</h3>
<img src="assets/screenshots/13.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;">
Change Product Tracking Method Of Selected Products</h3>
<img src="assets/screenshots/14.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;">
Change Production Location Of Selected Products</h3>
<img src="assets/screenshots/15.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" style="padding: 30px;">
<div class="carousel-item active"
style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/low_stocks_product_alert/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
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="/home/cybrosys/Downloads/low_stocks_product_alert-16.0.1.0.0/low_stocks_product_alert/static/description/banner.png"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
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/16.0/stock_intercompany_transfer/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/3.png">
</div>
</a>
</div>
</div>
<div class="carousel-item active"
style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/automatic_invoice_and_post/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
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/16.0/hide_all_print_button/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/5.png">
</div>
</a>
</div>
<div class="carousel-item active"
style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/16.0/merge_picking_orders/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-radius: 0px;"
src="./assets/modules/6.png">
</div>
</a>
</div>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1"
data-slide="prev" style="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="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 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 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 -->

3
product_management_system/static/src/css/product_management.css

@ -0,0 +1,3 @@
.o_cp_bottom_right{
height: fit-content;
}

364
product_management_system/static/src/js/product_management_system.js

@ -0,0 +1,364 @@
/** @odoo-module **/
var KanbanController = require('web.KanbanController');
var KanbanView = require('web.KanbanView');
var viewRegistry = require('web.view_registry');
var products_selected = [];
var KanbanButton = KanbanController.extend({
// Extending KanbanController and Creating buttons and its functions
buttons_template: 'button_in_kanban.button',
events: _.extend({}, KanbanController.prototype.events, {
'click .product_check_box': '_onSelectDocs',
'click .on_change_category': '_onChangeCategory',
'click .on_customer_lead_time_products': '_onCustLeadTimeProducts',
'click .on_archive_products': '_onArchiveProducts',
'click .on_update_price': '_onUpdatePrice',
'click .on_add_vendor': '_onAddVendor',
'click .on_make_salable': '_onMakeSalable',
'click .on_make_purchasable': '_onMakePurchasable',
'click .on_delete_products': '_onDeleteProducts',
'click .on_alternative_products': '_onAlternativeProducts',
'click .on_accessory_products': '_onAccessoryProducts',
'click .on_optional_products': '_onOptionalProducts',
'click .on_edit_invoice_policy_products': '_onEditInvoicePolicyProducts',
'click .on_add_cust_tax_products': '_onAddCustomerTaxProducts',
'click .on_add_vendor_tax_products': '_onAddVendorTaxProducts',
'click .on_publish_products': '_onPublishProducts',
'click .on_change_web_category_products': '_onWebCategChangeProducts',
'click .on_add_attribute_products': '_onAddAttributeProducts',
'click .on_change_tracking_products': '_onChangeTrackingProducts',
'click .change_production_location_products': '_onChangeProductionLocation',
'click .change_inventory_location_products': '_onChangeInventoryLocation',
}),
start: function(){
return this._super().then(function() {})
},
_onSelectDocs: function(ev){
// Function for selecting products and appending in the products_selected list
var toast = $('.toast')
var checked = $(ev.target).is(':checked');
var record_id =parseInt($(ev.target).data('id'));
if (checked){
toast.addClass('show');
toast.css("display","inline");
products_selected.push(record_id);
}
else{
let index = products_selected.indexOf(record_id);
products_selected.splice(index, 1)
if ( products_selected.length == 0){
toast.css("display","");
toast.removeClass('show');
}
}
},
_onChangeCategory: function(ev){
// Function for changing category of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Change Category',
res_model: 'product.category.change',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onCustLeadTimeProducts: function(ev){
// Function for changing Customer Lead Time of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Change Customer Lead Time',
res_model: 'product.customer.lead.time',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onArchiveProducts: function(ev){
// Function for changing Archive Product of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Archive Product',
res_model: 'product.archive',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onUpdatePrice: function(ev){
// Function for changing Update Price of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Update Price',
res_model: 'product.update.price',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onAddVendor: function(ev){
// Function for changing Add Vendor of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Add Vendor',
res_model: 'product.add.vendor',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onMakeSalable: function(ev){
// Function for Make Salable of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Make Products Salable',
res_model: 'product.make.salable',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onMakePurchasable: function(ev){
// Function for Make Purchasable of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Make Products Purchasable',
res_model: 'product.make.purchasable',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onDeleteProducts: function(ev){
// Function for Deleting the selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Delete Product',
res_model: 'product.delete',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onPublishProducts : function(ev){
// Function for Publish On Website of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Publish On Website',
res_model: 'product.publish',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onAlternativeProducts: function(ev){
// Function for Adding Alternative Product of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Add Alternative Product',
res_model: 'product.alternative',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onAccessoryProducts: function(ev){
// Function for Adding Accessory Product of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Add Accessory Product',
res_model: 'product.accessory',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onOptionalProducts: function(ev){
// Function for Adding Optional Product of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Add Optional Product',
res_model: 'product.optional',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onEditInvoicePolicyProducts:function(ev){
// Function for Editing Invoice Policy of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Edit Invoice Policy',
res_model: 'product.invoice',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onAddCustomerTaxProducts: function(ev){
// Function for Changing Customer Tax of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Change Customer Tax',
res_model: 'product.customer.tax',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onAddVendorTaxProducts: function(ev){
// Function for Changing Vendor Tax of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Change Vendor Tax',
res_model: 'product.vendor.tax',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onWebCategChangeProducts: function(ev){
// Function for Changing Category On Website of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Change Category On Website',
res_model: 'product.category.website',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onAddAttributeProducts : function(ev){
// Function for Adding Product Attributes of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Add Product Attributes',
res_model: 'product.add.attribute',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onChangeTrackingProducts: function(ev){
// Function for Changing Product Tracking of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Change Product Tracking',
res_model: 'product.change.tracking',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onChangeProductionLocation: function(ev){
// Function for Changing Production Location of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Change Production Location',
res_model: 'product.production.location',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
_onChangeInventoryLocation: function(ev){
// Function for Changing Inventory Location of selected products
this.do_action({
type: 'ir.actions.act_window',
name: 'Change Inventory Location',
res_model: 'product.inventory.location',
view_mode: 'form',
views: [[false, 'form']],
target: 'new',
context: {
'default_product_ids': products_selected,
},
});
},
});
var ProductKanbanView = KanbanView.extend({
config: _.extend({}, KanbanView.prototype.config, {
Controller: KanbanButton,
}),
});
viewRegistry.add('product_management_kanban_view', ProductKanbanView);

151
product_management_system/static/src/xml/product_management_system.xml

@ -0,0 +1,151 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-name="button_in_kanban.button">
<div class="new_container toast">
<div style="padding-top:25px; display:flex;">
<!-- Change Category Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_change_category"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Change Category</button>
<!-- Customer Lead Time Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_customer_lead_time_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Customer Lead Time</button>
<!-- Archive Products Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_archive_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Archive Products</button>
<!-- Update Sales Price Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_update_price"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Update Sales Price</button>
<!-- Add Vendor Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_add_vendor"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Add Vendor</button>
<!-- Make Salable Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_make_salable"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Make Salable</button>
<!-- Make Purchasable Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_make_purchasable"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Make Purchasable</button>
<!-- Delete Products Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_delete_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Delete Products</button>
<!-- Publish On Website Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_publish_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Publish On Website</button>
<!-- Add Alternative Products Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_alternative_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Add Alternative Products</button>
<!-- Add Accessory Products Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_accessory_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Add Accessory Products</button>
<!-- Add Optional Products Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_optional_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Add Optional Products</button>
<!-- Edit Invoice Policy Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_edit_invoice_policy_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Edit Invoice Policy</button>
<!-- Add Customer Taxes Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_add_cust_tax_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Add Customer Taxes</button>
<!-- Add Vendor Taxes Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_add_vendor_tax_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Add Vendor Taxes</button>
<!-- Change Website Category Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_change_web_category_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Change Website Category</button>
<!-- Add Attributes & Variants Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_add_attribute_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Add Attributes &amp; Variants</button>
<!-- Change Product Tracking Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm on_change_tracking_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Change Product Tracking</button>
<!-- Change Production Location Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm change_production_location_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Change Production Location</button>
<!-- Change Inventory Location Button -->
<button name="cl" type="object"
class="btn btn-secondary btn-sm change_inventory_location_products"
style="width: 90px; padding-top: 10px; padding-left: 9px;
padding-right: 13px; padding-bottom: 5px;
border-radius: 11px; background: #714b67;
color: white; font-size: 11px;">Change Inventory Location</button>
<!-- Change Category Button -->
</div>
</div>
</t>
</templates>

13
product_management_system/views/product_management_system_menus.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Root Menu for the module -->
<menuitem id="product_management_system_menu_root"
groups="product_management_system.user_product_management"
web_icon="product_management_system,static/description/icon.png"
name="Product Management" sequence="190"/>
<!-- Menus and submenus for the module -->
<menuitem id="product_template_menu_root" name="Product Management"
parent="product_management_system.product_management_system_menu_root"
action="product_management_system.product_template_action"
sequence="1"/>
</odoo>

106
product_management_system/views/product_management_system_views.xml

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Search Panel -->
<record id="product_template_view_search" model="ir.ui.view">
<field name="name">product.template.search</field>
<field name="model">product.template</field>
<field name="arch" type="xml">
<search string="Product Management">
<searchpanel>
<field name="company_id" select="multi" string="Company"
icon="fa-cutlery" color="#875A7B"
enable_counters="1"/>
<field name="type" select="multi" string="Types"
icon="fa-th-large" color="#875A7B"
enable_counters="1"/>
<field name="categ_id" select="multi" string="Categories"
icon="fa-th-list" color="#875A7B"
enable_counters="1"/>
</searchpanel>
</search>
</field>
</record>
<!-- Kanban View -->
<record id="product_template_view_kanban" model="ir.ui.view">
<field name="name">Product.template.view.kanban</field>
<field name="model">product.template</field>
<field name="arch" type="xml">
<kanban sample="1" js_class="product_management_kanban_view">
<field name="id"/>
<field name="product_variant_count"/>
<field name="currency_id"/>
<field name="activity_state"/>
<progressbar field="activity_state"
colors='{"planned": "success", "today": "warning", "overdue": "danger"}'/>
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_card oe_kanban_global_click" style="width:430px;">
<div class="o_kanban_image me-1">
<img t-att-src="kanban_image('product.template', 'image_128', record.id.raw_value)"
alt="Product" class="o_image_64_contain"/>
</div>
<div class="oe_kanban_details">
<div class="o_kanban_record_top mb-0">
<div class="o_kanban_record_headings">
<strong class="o_kanban_record_title" style="font-size:large;">
<field name="priority"
widget="priority"/>
<field name="name" />
</strong>
<t t-if="record.default_code.value">
[<field name="default_code"/>]
</t>
</div>
<input type="checkbox" class="product_check_box"
t-attf-id="{{record.id.value}}"
t-att-data-id="record.id.value" style="height:20px;width:20px;"/>
</div>
<br/>
Category: <strong><field name="categ_id"/></strong>
<div t-if="record.product_variant_count.value &gt; 1"
groups="product.group_product_variant">
<strong>
<t t-esc="record.product_variant_count.value"/>
Variants
</strong>
</div>
<div name="product_lst_price" class="mt-1">
Price:<strong>
<field name="list_price" widget="monetary"
options="{'currency_field': 'currency_id', 'field_digits': True}"/>
</strong>
</div>
<div>
Type : <strong><field name="type"/></strong><br/>
Invoice Policy : <strong><field name="invoice_policy"/> </strong><br/>
<strong><field name="sale_ok"/></strong>
Can be sold<br/>
<strong><field name="purchase_ok"/></strong>
Can be Purchased<br/>
<strong><field name="is_published"/></strong>
Website Published
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<!-- Kanban View Action -->
<record id="product_template_action" model="ir.actions.act_window">
<field name="name">Product Management</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.template</field>
<field name="view_mode">kanban</field>
<field name="view_id"
ref="product_management_system.product_template_view_kanban"/>
<field name="search_view_id"
ref="product_management_system.product_template_view_search"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new product
</p>
</field>
</record>
</odoo>

41
product_management_system/wizard/__init__.py

@ -0,0 +1,41 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 product_accessory
from . import product_add_attribute
from . import product_add_vendor
from . import product_alternative
from . import product_archive
from . import product_category_change
from . import product_category_website
from . import product_change_tracking
from . import product_customer_lead_time
from . import product_customer_tax
from . import product_delete
from . import product_inventory_location
from . import product_invoice
from . import product_make_purchasable
from . import product_make_salable
from . import product_optional
from . import product_production_location
from . import product_publish
from . import product_update_price
from . import product_vendor_tax

47
product_management_system/wizard/product_accessory.py

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductAccessory(models.TransientModel):
"""
Model for adding Accessory Products
"""
_name = 'product.accessory'
_description = 'Product Accessory'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
accessory_ids = fields.Many2many('product.product',
string="Accessory Products",
help='Products wanted to added as Accessory Products')
def action_add_accessory_products(self):
"""
Function for adding Accessory Products for the selected products
"""
if self.product_ids and self.accessory_ids:
for products in self.product_ids:
for items in self.accessory_ids:
products.accessory_product_ids = [
fields.Command.link(items.id)]

22
product_management_system/wizard/product_accessory_views.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Product Accessory Form View -->
<record id="product_accessory_view_form" model="ir.ui.view">
<field name="name">product.accessory.view.form</field>
<field name="model">product.accessory</field>
<field name="arch" type="xml">
<form string="Accessory Product">
<group>
<field name="product_ids" widget="many2many_tags"/>
<field name="accessory_ids" widget="many2many_tags"/>
</group>
<footer>
<button name="action_add_accessory_products" string="SAVE"
class="btn-primary" type="object"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

69
product_management_system/wizard/product_add_attribute.py

@ -0,0 +1,69 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductAddAttribute(models.TransientModel):
"""
Model for adding Attributes and Variants
"""
_name = 'product.add.attribute'
_description = 'Product Add Attribute'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
attribute_line_ids = fields.One2many('product.management.attribute',
'wizard_id',
string="Product Attributes",
help='Attribute Lines')
def action_add_product_attributes(self):
"""
Function for adding Attributes and Variants for Selected Products
"""
if self.product_ids and self.attribute_line_ids:
for products in self.product_ids:
for line in self.attribute_line_ids:
products.attribute_line_ids = [fields.Command.create({
'attribute_id': line.attribute_id.id,
'value_ids': line.value_ids,
})]
class ProductAttribute(models.TransientModel):
"""
Model for attribute_lines for the model product.add.attribute
"""
_name = 'product.management.attribute'
_description = 'Product Attributes'
attribute_id = fields.Many2one('product.attribute',
string='Attribute',
help='Attribute ID')
value_ids = fields.Many2many('product.attribute.value',
string='Values',
help='Attribute Values',
domain="[('attribute_id','=',attribute_id)]")
wizard_id = fields.Many2one('product.add.attribute',
string='ID',
help='Wizard ID')

31
product_management_system/wizard/product_add_attribute_views.xml

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Product Add Attribute Form View-->
<record id="product_add_attribute_view_form" model="ir.ui.view">
<field name="name">product.add.attribute.view.form</field>
<field name="model">product.add.attribute</field>
<field name="arch" type="xml">
<form string="Product Attributes">
<group>
<field name="product_ids" widget="many2many_tags"/>
</group>
<notebook>
<page string="Attributes">
<field name="attribute_line_ids" widget="one2many">
<tree editable="bottom">
<field name="attribute_id"/>
<field name="value_ids" widget="many2many_tags"/>
</tree>
</field>
</page>
</notebook>
<footer>
<button name="action_add_product_attributes" string="SAVE"
class="btn-primary" type="object"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

68
product_management_system/wizard/product_add_vendor.py

@ -0,0 +1,68 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductAddVendor(models.TransientModel):
"""
Model for adding seller_ids (product vendors)
"""
_name = 'product.add.vendor'
_description = 'Product Add Vendors'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
vendor_ids = fields.One2many('product.vendor', 'wizard_id',
string="Product Attributes",
help='Product Vendors')
def action_add_product_vendors(self):
"""
Function for adding seller_ids (product vendors) for Selected Products
"""
if self.product_ids and self.vendor_ids:
for products in self.product_ids:
for vendor in self.vendor_ids:
products.seller_ids = [fields.Command.create({
'partner_id': vendor.partner_id.id,
'price': vendor.price,
'currency_id': vendor.currency_id.id,
'delay': vendor.delay,
})]
class ProductAttribute(models.TransientModel):
_name = 'product.vendor'
_description = 'Product Vendors'
partner_id = fields.Many2one('res.partner',
string='Vendor',
help='Partner ID')
price = fields.Float(string='Price', help='Price',
required=True)
delay = fields.Integer(string='Delivery Lead Time',
help='Delivery Lead Time', required=True)
currency_id = fields.Many2one('res.currency', string='Currency',
help='Currency', required=True)
wizard_id = fields.Many2one('product.add.vendor', string='ID',
help='Wizard ID')

33
product_management_system/wizard/product_add_vendor.xml

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Product Add Vendor Form View -->
<record id="product_add_vendor_view_form" model="ir.ui.view">
<field name="name">product.add.vendor.view.form</field>
<field name="model">product.add.vendor</field>
<field name="arch" type="xml">
<form string="Product Add Vendor">
<group>
<field name="product_ids" widget="many2many_tags"/>
</group>
<notebook>
<page string="Vendors">
<field name="vendor_ids" widget="one2many">
<tree editable="bottom">
<field name="partner_id"/>
<field name="currency_id"/>
<field name="price"/>
<field name="delay"/>
</tree>
</field>
</page>
</notebook>
<footer>
<button name="action_add_product_vendors" string="SAVE"
class="btn-primary" type="object"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

49
product_management_system/wizard/product_alternative.py

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductAlternative(models.TransientModel):
"""
Model for adding alternative products
"""
_name = 'product.alternative'
_description = 'Alternative Product'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
alternative_ids = fields.Many2many('product.template',
'product_management_alternative_rel',
string="Alternative Products",
help='Alternative Products',
domain="[('id', 'not in', product_ids)]")
def action_add_alternative_products(self):
"""
Function for adding alternative products for Selected Products
"""
if self.product_ids and self.alternative_ids:
for products in self.product_ids:
for items in self.alternative_ids:
products.alternative_product_ids = [
fields.Command.link(items.id)]

22
product_management_system/wizard/product_alternative_views.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Product Alternative Form View-->
<record id="product_alternative_view_form" model="ir.ui.view">
<field name="name">product.alternative.view.form</field>
<field name="model">product.alternative</field>
<field name="arch" type="xml">
<form string="Alternative Product">
<group>
<field name="product_ids" widget="many2many_tags"/>
<field name="alternative_ids" widget="many2many_tags"/>
</group>
<footer>
<button name="action_add_alternative_products" string="SAVE"
class="btn-primary" type="object"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

44
product_management_system/wizard/product_archive.py

@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductArchive(models.TransientModel):
"""
Model for archiving products
"""
_name = 'product.archive'
_description = 'Archive Products'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
def action_archive_product(self):
"""
Function for archiving Selected Products
"""
if self.product_ids:
for products in self.product_ids:
products.write({
'active': False
})

22
product_management_system/wizard/product_archive_views.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Product Archive Form View -->
<record id="product_archive_view_form" model="ir.ui.view">
<field name="name">product.archive.view.form</field>
<field name="model">product.archive</field>
<field name="arch" type="xml">
<form string="Archive Product">
<group>
<field name="product_ids" widget="many2many_tags"/>
</group>
<h3>Do you want to make these products Archive?</h3>
<footer>
<button name="action_archive_product" string="YES"
class="btn-primary" type="object"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

47
product_management_system/wizard/product_category_change.py

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductCategoryChange(models.TransientModel):
"""
Model for changing category
"""
_name = 'product.category.change'
_description = 'Change Product Category'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
category_id = fields.Many2one('product.category',
string='New Category',
help='Category')
def action_product_category_change_confirm(self):
"""
Function for changing category of Selected Products
"""
if self.product_ids and self.category_id:
for rec in self.product_ids:
rec.write({
'categ_id': self.category_id
})

26
product_management_system/wizard/product_category_change_views.xml

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Product Category Change Form View -->
<record id="product_category_change_view_form" model="ir.ui.view">
<field name="name">product.category.change.view.form</field>
<field name="model">product.category.change</field>
<field name="arch" type="xml">
<form string="Change Category">
<group>
<group>
<field name="product_ids" widget="many2many_tags"/>
</group>
<group>
<field name="category_id"/>
</group>
</group>
<footer>
<button name="action_product_category_change_confirm" string="Confirm"
class="btn-primary" type="object"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

46
product_management_system/wizard/product_category_website.py

@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductWebsiteCategory(models.TransientModel):
"""
Model for changing public_categ_ids (Website Category)
"""
_name = 'product.category.website'
_description = 'Product Website Category'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
public_categ_ids = fields.Many2many('product.public.category',
string="Website Product Category",
help='Select Product Category In Website')
def action_change_website_category(self):
"""
Function for changing public_categ_ids (Website Category) of Selected Products
"""
if self.product_ids and self.public_categ_ids:
for products in self.product_ids:
for items in self.public_categ_ids:
products.public_categ_ids = [fields.Command.link(items.id)]

22
product_management_system/wizard/product_category_website_views.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Product Category Website Form View -->
<record id="product_category_website_view_form" model="ir.ui.view">
<field name="name">product.category.website.view.form</field>
<field name="model">product.category.website</field>
<field name="arch" type="xml">
<form string="Website Category Product">
<group>
<field name="product_ids" widget="many2many_tags"/>
<field name="public_categ_ids" widget="many2many_tags"/>
</group>
<footer>
<button name="action_change_website_category" string="SAVE"
class="btn-primary" type="object"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

49
product_management_system/wizard/product_change_tracking.py

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductChangeTracking(models.TransientModel):
"""
Model for changing tracking method
"""
_name = 'product.change.tracking'
_description = 'Change Product Tracking Method'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
tracking = fields.Selection([
('serial', 'By Unique Serial Number'),
('lot', 'By Lots'),
('none', 'No Tracking')],
string='Tracking',
help='Select a tracking type',
default='none', required=True)
def action_change_product_tracking(self):
"""
Function for changing tracking method of selected products
"""
if self.product_ids:
for products in self.product_ids:
products.write({'tracking': self.tracking})

22
product_management_system/wizard/product_change_tracking_views.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Product Change Tracking Form View -->
<record id="product_change_tracking_view_form" model="ir.ui.view">
<field name="name">product.change.tracking.view.form</field>
<field name="model">product.change.tracking</field>
<field name="arch" type="xml">
<form string="Change Product Invoice Policy">
<group>
<field name="product_ids" widget="many2many_tags"/>
<field name="tracking"/>
</group>
<footer>
<button name="action_change_product_tracking" string="SAVE"
class="btn-primary" type="object"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

44
product_management_system/wizard/product_customer_lead_time.py

@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductCustomerLeadTime(models.TransientModel):
"""
Model for changing sale_delay (Customer Lead Time)
"""
_name = 'product.customer.lead.time'
_description = 'Product Customer Lead Time'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
sale_delay = fields.Float(string='Customer Lead Time',
help='Delivery lead time in days')
def action_change_customer_lead_time(self):
"""
Function for changing sale_delay (Customer Lead Time) of Selected Products
"""
if self.product_ids and self.sale_delay != 0:
for products in self.product_ids:
products.write({'sale_delay': self.sale_delay})

22
product_management_system/wizard/product_customer_lead_time_views.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Product Customer Lead Time Form View -->
<record id="product_customer_lead_time_view_form" model="ir.ui.view">
<field name="name">product.customer.lead.time.view.form</field>
<field name="model">product.customer.lead.time</field>
<field name="arch" type="xml">
<form string="Change Customer Lead Time">
<group>
<field name="product_ids" widget="many2many_tags"/>
<field name="sale_delay"/>
</group>
<footer>
<button name="action_change_customer_lead_time" string="YES"
class="btn-primary" type="object"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

47
product_management_system/wizard/product_customer_tax.py

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductCustomerTax(models.TransientModel):
"""
Model for changing tax_ids (Customer Tax)
"""
_name = 'product.customer.tax'
_description = 'Product Customer Tax'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
tax_ids = fields.Many2many('account.tax',
domain="[('type_tax_use', '=', 'sale')]",
string="Customer Tax",
help='Customer Tax')
def action_change_customer_tax(self):
"""
Function for changing tax_ids (Customer Tax) of selected products
"""
if self.product_ids and self.tax_ids:
for products in self.product_ids:
for items in self.tax_ids:
products.taxes_id = [fields.Command.link(items.id)]

26
product_management_system/wizard/product_customer_tax_views.xml

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Product Category Tax Form View -->
<record id="product_customer_tax_view_form" model="ir.ui.view">
<field name="name">product.customer.tax.view.form</field>
<field name="model">product.customer.tax</field>
<field name="arch" type="xml">
<form string="Change Category">
<group>
<group>
<field name="product_ids" widget="many2many_tags"/>
</group>
<group>
<field name="tax_ids" widget="many2many_tags"/>
</group>
</group>
<footer>
<button name="action_change_customer_tax" string="Confirm"
class="btn-primary" type="object"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

42
product_management_system/wizard/product_delete.py

@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductDelete(models.TransientModel):
"""
Model for deleting products
"""
_name = 'product.delete'
_description = 'Product Delete'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
def action_delete_product(self):
"""
Function for deleting selected products
"""
if self.product_ids:
for products in self.product_ids:
products.unlink()

22
product_management_system/wizard/product_delete_views.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Product Delete Form View -->
<record id="product_delete_view_form" model="ir.ui.view">
<field name="name">product.delete.view.form</field>
<field name="model">product.delete</field>
<field name="arch" type="xml">
<form string="Delete Product">
<group>
<field name="product_ids" widget="many2many_tags"/>
</group>
<h3>Do you want to make these products Delete?</h3>
<footer>
<button name="action_delete_product" string="YES"
class="btn-primary" type="object"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

47
product_management_system/wizard/product_inventory_location.py

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductInventoryLocation(models.TransientModel):
"""
Model for changing product inventory location
"""
_name = 'product.inventory.location'
_description = 'Product Inventory Location'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
inventory_location_id = fields.Many2one('stock.location',
string='Inventory Location',
help='Inventory location of the products',
domain="[('usage','=','inventory')]")
def action_change_inventory_location(self):
"""
Function for changing product inventory location of selected products
"""
if self.product_ids and self.inventory_location_id:
for products in self.product_ids:
products.write(
{'property_stock_inventory': self.inventory_location_id})

23
product_management_system/wizard/product_inventory_location_views.xml

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Product Inventory Location Form View -->
<record id="product_inventory_location_view_form" model="ir.ui.view">
<field name="name">product.inventory.location.view.form</field>
<field name="model">product.inventory.location</field>
<field name="arch" type="xml">
<form string="Change Product Inventory Location">
<group>
<field name="product_ids" widget="many2many_tags"/>
<field name="inventory_location_id"/>
</group>
<footer>
<button name="action_change_inventory_location" string="SAVE"
class="btn-primary" type="object"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

47
product_management_system/wizard/product_invoice.py

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductInvoice(models.TransientModel):
"""
Model for changing invoice policy
"""
_name = 'product.invoice'
_description = 'Product Invoice'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
invoice_policy = fields.Selection([
('order', 'Ordered Quantities'),
('delivery', 'Delivered Quantities')],
string='Invoicing Policy', help='Invoice policy of the product',
default='order', required=True)
def action_change_invoice_policy_products(self):
"""
Function for changing invoice policy of selected products
"""
if self.product_ids:
for products in self.product_ids:
products.write({'invoice_policy': self.invoice_policy})

22
product_management_system/wizard/product_invoice_views.xml

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Product Invoice Form View -->
<record id="product_invoice_view_form" model="ir.ui.view">
<field name="name">product.invoice.view.form</field>
<field name="model">product.invoice</field>
<field name="arch" type="xml">
<form string="Change Product Invoice Policy">
<group>
<field name="product_ids" widget="many2many_tags"/>
<field name="invoice_policy"/>
</group>
<footer>
<button name="action_change_invoice_policy_products" string="SAVE"
class="btn-primary" type="object"/>
<button string="Cancel" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

54
product_management_system/wizard/product_make_purchasable.py

@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductMakePurchasable(models.TransientModel):
"""
Model for making product purchasable
"""
_name = 'product.make.purchasable'
_description = 'Make Product Purchasable'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
def action_product_make_purchasable_confirm(self):
"""
Function for making product purchasable
"""
if self.product_ids:
for rec in self.product_ids:
rec.write({
'purchase_ok': True
})
def action_product_make_purchasable_false(self):
"""
Function for making product not purchasable
"""
if self.product_ids:
for rec in self.product_ids:
rec.write({
'purchase_ok': False
})

24
product_management_system/wizard/product_make_purchasable_views.xml

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Make Product Purchasable Form View -->
<record id="product_make_purchasable_view_form" model="ir.ui.view">
<field name="name">product.make.purchasable.view.form</field>
<field name="model">product.make.purchasable</field>
<field name="arch" type="xml">
<form string="Product Purchasable">
<group>
<field name="product_ids" widget="many2many_tags"/>
</group>
<h3>Do you want to make these products purchasable?</h3>
<footer>
<button name="action_product_make_purchasable_confirm" string="Yes"
class="btn-primary" type="object"/>
<button name="action_product_make_purchasable_false" string="NO"
class="btn-primary" type="object"/>
<button string="CLOSE" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

54
product_management_system/wizard/product_make_salable.py

@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductMakeSaleable(models.TransientModel):
"""
Model for making product Salable
"""
_name = 'product.make.salable'
_description = 'Make Product Salable'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
def action_product_make_salable_confirm(self):
"""
Function for making product Salable
"""
if self.product_ids:
for rec in self.product_ids:
rec.write({
'sale_ok': True
})
def action_product_make_salable_false(self):
"""
Function for making product not Salable
"""
if self.product_ids:
for rec in self.product_ids:
rec.write({
'sale_ok': False
})

24
product_management_system/wizard/product_make_salable_views.xml

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<!-- Make Product Salable Form View -->
<record id="product_make_salable_view_form" model="ir.ui.view">
<field name="name">product.make.salable.view.form</field>
<field name="model">product.make.salable</field>
<field name="arch" type="xml">
<form string="Product Salable">
<group>
<field name="product_ids" widget="many2many_tags"/>
</group>
<h3>Do you want to make these products salable?</h3>
<footer>
<button name="action_product_make_salable_confirm" string="Yes"
class="btn-primary" type="object"/>
<button name="action_product_make_salable_false" string="NO"
class="btn-primary" type="object"/>
<button string="CLOSE" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>

49
product_management_system/wizard/product_optional.py

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Cybrosys Technologies (<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 fields, models
class ProductOptional(models.TransientModel):
"""
Model for adding optional products
"""
_name = 'product.optional'
_description = 'Optional Product'
product_ids = fields.Many2many('product.template',
string='Selected Products',
help='Products which are selected')
optional_ids = fields.Many2many('product.template',
string="Optional Products",
help='Optional Products',
relation="product_management_optional_rel",
domain="[('id', 'not in', product_ids)]")
def action_add_optional_products(self):
"""
Function for adding optional products for selected products
"""
if self.product_ids and self.optional_ids:
for products in self.product_ids:
for items in self.optional_ids:
products.optional_product_ids = [
fields.Command.link(items.id)]

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save