diff --git a/product_management_system/README.rst b/product_management_system/README.rst new file mode 100644 index 000000000..3e14a64bd --- /dev/null +++ b/product_management_system/README.rst @@ -0,0 +1,51 @@ +.. 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 `__ + +License +------- +General Public License, Version 3 (AGPL v3). +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: (V17) Swaraj R, Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ \ No newline at end of file diff --git a/product_management_system/__init__.py b/product_management_system/__init__.py new file mode 100644 index 000000000..87d985e08 --- /dev/null +++ b/product_management_system/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +from . import wizard diff --git a/product_management_system/__manifest__.py b/product_management_system/__manifest__.py new file mode 100644 index 000000000..b59c8af68 --- /dev/null +++ b/product_management_system/__manifest__.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +{ + 'name': 'Product Management System', + 'version': '17.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_template_views.xml', + 'views/product_management_system_menus.xml', + 'wizard/product_add_vendor_views.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, +} diff --git a/product_management_system/doc/RELEASE_NOTES.md b/product_management_system/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..8e0382cfd --- /dev/null +++ b/product_management_system/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 19.08.2024 +#### Version 17.0.1.0.0 +#### ADD + +- Initial Commit for Product Management System diff --git a/product_management_system/security/ir.model.access.csv b/product_management_system/security/ir.model.access.csv new file mode 100644 index 000000000..c206d4e04 --- /dev/null +++ b/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 diff --git a/product_management_system/security/product_management_system_groups.xml b/product_management_system/security/product_management_system_groups.xml new file mode 100644 index 000000000..75f5e4924 --- /dev/null +++ b/product_management_system/security/product_management_system_groups.xml @@ -0,0 +1,10 @@ + + + + + + Product Management + + + + \ No newline at end of file diff --git a/product_management_system/static/description/assets/icons/capture (1).png b/product_management_system/static/description/assets/icons/capture (1).png new file mode 100644 index 000000000..8824deafc Binary files /dev/null and b/product_management_system/static/description/assets/icons/capture (1).png differ diff --git a/product_management_system/static/description/assets/icons/check.png b/product_management_system/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/product_management_system/static/description/assets/icons/check.png differ diff --git a/product_management_system/static/description/assets/icons/chevron.png b/product_management_system/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/product_management_system/static/description/assets/icons/chevron.png differ diff --git a/product_management_system/static/description/assets/icons/cogs.png b/product_management_system/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/product_management_system/static/description/assets/icons/cogs.png differ diff --git a/product_management_system/static/description/assets/icons/consultation.png b/product_management_system/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/product_management_system/static/description/assets/icons/consultation.png differ diff --git a/product_management_system/static/description/assets/icons/ecom-black.png b/product_management_system/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/product_management_system/static/description/assets/icons/ecom-black.png differ diff --git a/product_management_system/static/description/assets/icons/education-black.png b/product_management_system/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/product_management_system/static/description/assets/icons/education-black.png differ diff --git a/product_management_system/static/description/assets/icons/hotel-black.png b/product_management_system/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/product_management_system/static/description/assets/icons/hotel-black.png differ diff --git a/product_management_system/static/description/assets/icons/img.png b/product_management_system/static/description/assets/icons/img.png new file mode 100644 index 000000000..70197f477 Binary files /dev/null and b/product_management_system/static/description/assets/icons/img.png differ diff --git a/product_management_system/static/description/assets/icons/license.png b/product_management_system/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/product_management_system/static/description/assets/icons/license.png differ diff --git a/product_management_system/static/description/assets/icons/lifebuoy.png b/product_management_system/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/product_management_system/static/description/assets/icons/lifebuoy.png differ diff --git a/product_management_system/static/description/assets/icons/manufacturing-black.png b/product_management_system/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/product_management_system/static/description/assets/icons/manufacturing-black.png differ diff --git a/product_management_system/static/description/assets/icons/photo-capture.png b/product_management_system/static/description/assets/icons/photo-capture.png new file mode 100644 index 000000000..06c111758 Binary files /dev/null and b/product_management_system/static/description/assets/icons/photo-capture.png differ diff --git a/product_management_system/static/description/assets/icons/pos-black.png b/product_management_system/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/product_management_system/static/description/assets/icons/pos-black.png differ diff --git a/product_management_system/static/description/assets/icons/puzzle.png b/product_management_system/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/product_management_system/static/description/assets/icons/puzzle.png differ diff --git a/product_management_system/static/description/assets/icons/restaurant-black.png b/product_management_system/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/product_management_system/static/description/assets/icons/restaurant-black.png differ diff --git a/product_management_system/static/description/assets/icons/service-black.png b/product_management_system/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/product_management_system/static/description/assets/icons/service-black.png differ diff --git a/product_management_system/static/description/assets/icons/trading-black.png b/product_management_system/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/product_management_system/static/description/assets/icons/trading-black.png differ diff --git a/product_management_system/static/description/assets/icons/training.png b/product_management_system/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/product_management_system/static/description/assets/icons/training.png differ diff --git a/product_management_system/static/description/assets/icons/update.png b/product_management_system/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/product_management_system/static/description/assets/icons/update.png differ diff --git a/product_management_system/static/description/assets/icons/user.png b/product_management_system/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/product_management_system/static/description/assets/icons/user.png differ diff --git a/product_management_system/static/description/assets/icons/wrench.png b/product_management_system/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/product_management_system/static/description/assets/icons/wrench.png differ diff --git a/product_management_system/static/description/assets/misc/Cybrosys R.png b/product_management_system/static/description/assets/misc/Cybrosys R.png new file mode 100644 index 000000000..da4058087 Binary files /dev/null and b/product_management_system/static/description/assets/misc/Cybrosys R.png differ diff --git a/product_management_system/static/description/assets/misc/email.svg b/product_management_system/static/description/assets/misc/email.svg new file mode 100644 index 000000000..15291cdc3 --- /dev/null +++ b/product_management_system/static/description/assets/misc/email.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/product_management_system/static/description/assets/misc/phone.svg b/product_management_system/static/description/assets/misc/phone.svg new file mode 100644 index 000000000..b7bd7f251 --- /dev/null +++ b/product_management_system/static/description/assets/misc/phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/product_management_system/static/description/assets/misc/star (1) 2.svg b/product_management_system/static/description/assets/misc/star (1) 2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/product_management_system/static/description/assets/misc/star (1) 2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/product_management_system/static/description/assets/misc/support (1) 1.svg b/product_management_system/static/description/assets/misc/support (1) 1.svg new file mode 100644 index 000000000..7d37a8f30 --- /dev/null +++ b/product_management_system/static/description/assets/misc/support (1) 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/product_management_system/static/description/assets/misc/support-email.svg b/product_management_system/static/description/assets/misc/support-email.svg new file mode 100644 index 000000000..eb70370d6 --- /dev/null +++ b/product_management_system/static/description/assets/misc/support-email.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/product_management_system/static/description/assets/misc/tick-mark.svg b/product_management_system/static/description/assets/misc/tick-mark.svg new file mode 100644 index 000000000..2dbb40187 --- /dev/null +++ b/product_management_system/static/description/assets/misc/tick-mark.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/product_management_system/static/description/assets/misc/whatsapp 1.svg b/product_management_system/static/description/assets/misc/whatsapp 1.svg new file mode 100644 index 000000000..0bfaf8fc6 --- /dev/null +++ b/product_management_system/static/description/assets/misc/whatsapp 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/product_management_system/static/description/assets/misc/whatsapp.svg b/product_management_system/static/description/assets/misc/whatsapp.svg new file mode 100644 index 000000000..b618aea1d --- /dev/null +++ b/product_management_system/static/description/assets/misc/whatsapp.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/product_management_system/static/description/assets/modules/m1.png b/product_management_system/static/description/assets/modules/m1.png new file mode 100644 index 000000000..acb4c76c6 Binary files /dev/null and b/product_management_system/static/description/assets/modules/m1.png differ diff --git a/product_management_system/static/description/assets/modules/m2.png b/product_management_system/static/description/assets/modules/m2.png new file mode 100644 index 000000000..3ef91f771 Binary files /dev/null and b/product_management_system/static/description/assets/modules/m2.png differ diff --git a/product_management_system/static/description/assets/modules/m3.png b/product_management_system/static/description/assets/modules/m3.png new file mode 100644 index 000000000..72febf6ae Binary files /dev/null and b/product_management_system/static/description/assets/modules/m3.png differ diff --git a/product_management_system/static/description/assets/modules/m4.png b/product_management_system/static/description/assets/modules/m4.png new file mode 100644 index 000000000..f7d7f9241 Binary files /dev/null and b/product_management_system/static/description/assets/modules/m4.png differ diff --git a/product_management_system/static/description/assets/modules/m5.png b/product_management_system/static/description/assets/modules/m5.png new file mode 100644 index 000000000..1d3324e88 Binary files /dev/null and b/product_management_system/static/description/assets/modules/m5.png differ diff --git a/product_management_system/static/description/assets/modules/m6.png b/product_management_system/static/description/assets/modules/m6.png new file mode 100644 index 000000000..80938c15a Binary files /dev/null and b/product_management_system/static/description/assets/modules/m6.png differ diff --git a/product_management_system/static/description/assets/screenshots/1.png b/product_management_system/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..1cac9ae7f Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/1.png differ diff --git a/product_management_system/static/description/assets/screenshots/10.png b/product_management_system/static/description/assets/screenshots/10.png new file mode 100644 index 000000000..af239500e Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/10.png differ diff --git a/product_management_system/static/description/assets/screenshots/11.png b/product_management_system/static/description/assets/screenshots/11.png new file mode 100644 index 000000000..6b57dd08f Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/11.png differ diff --git a/product_management_system/static/description/assets/screenshots/12.png b/product_management_system/static/description/assets/screenshots/12.png new file mode 100644 index 000000000..2b81bfbf9 Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/12.png differ diff --git a/product_management_system/static/description/assets/screenshots/13.png b/product_management_system/static/description/assets/screenshots/13.png new file mode 100644 index 000000000..0cbcb5417 Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/13.png differ diff --git a/product_management_system/static/description/assets/screenshots/14.png b/product_management_system/static/description/assets/screenshots/14.png new file mode 100644 index 000000000..fff038fdd Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/14.png differ diff --git a/product_management_system/static/description/assets/screenshots/15.png b/product_management_system/static/description/assets/screenshots/15.png new file mode 100644 index 000000000..2c4663ccb Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/15.png differ diff --git a/product_management_system/static/description/assets/screenshots/16.png b/product_management_system/static/description/assets/screenshots/16.png new file mode 100644 index 000000000..65ef9aceb Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/16.png differ diff --git a/product_management_system/static/description/assets/screenshots/2.png b/product_management_system/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..ac74acf6b Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/2.png differ diff --git a/product_management_system/static/description/assets/screenshots/3.png b/product_management_system/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..67cd4e6e3 Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/3.png differ diff --git a/product_management_system/static/description/assets/screenshots/4.png b/product_management_system/static/description/assets/screenshots/4.png new file mode 100644 index 000000000..d27f00180 Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/4.png differ diff --git a/product_management_system/static/description/assets/screenshots/5.png b/product_management_system/static/description/assets/screenshots/5.png new file mode 100644 index 000000000..975128223 Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/5.png differ diff --git a/product_management_system/static/description/assets/screenshots/6.png b/product_management_system/static/description/assets/screenshots/6.png new file mode 100644 index 000000000..fab4b1678 Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/6.png differ diff --git a/product_management_system/static/description/assets/screenshots/7.png b/product_management_system/static/description/assets/screenshots/7.png new file mode 100644 index 000000000..d95cbb63c Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/7.png differ diff --git a/product_management_system/static/description/assets/screenshots/8.png b/product_management_system/static/description/assets/screenshots/8.png new file mode 100644 index 000000000..2ffad6b28 Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/8.png differ diff --git a/product_management_system/static/description/assets/screenshots/9.png b/product_management_system/static/description/assets/screenshots/9.png new file mode 100644 index 000000000..af00a02b3 Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/9.png differ diff --git a/product_management_system/static/description/assets/screenshots/hero.gif b/product_management_system/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..cb7e5f407 Binary files /dev/null and b/product_management_system/static/description/assets/screenshots/hero.gif differ diff --git a/product_management_system/static/description/banner.jpg b/product_management_system/static/description/banner.jpg new file mode 100644 index 000000000..194dffe86 Binary files /dev/null and b/product_management_system/static/description/banner.jpg differ diff --git a/product_management_system/static/description/icon.png b/product_management_system/static/description/icon.png new file mode 100644 index 000000000..1cf7da568 Binary files /dev/null and b/product_management_system/static/description/icon.png differ diff --git a/product_management_system/static/description/index.html b/product_management_system/static/description/index.html new file mode 100644 index 000000000..83c47c620 --- /dev/null +++ b/product_management_system/static/description/index.html @@ -0,0 +1,1026 @@ + + + + + + + Odoo App 3 Index + + + + + + + + +
+
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+
+
+
+

+ Product Management System

+

+ This Module Helps In Product Management System. +

+
+ +
+
+
+
+
+

+ Key Highlights +

+
+
+
+
+
+ +
+
+

+ Multiple product management at a time.

+

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. +

+
+
+
+
+
+
+ +
+
+

+ Specialized kanban view for user friendly.

+

Create a + specialized Kanban view that is easy to use and + seamlessly facilitates user-friendly product + management. +

+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+

+ User Configuration

+

+ Settings -> Users -> Turn on Product + Management

+
+
+
+
+
+
+ +
+
+

+ Kanban View Of Products

+
+
+
+
+
+
+ +
+
+

+ By selecting Products in kanban view a new + list of buttons will be shown

+

+ We can perform different actions for the + selected products.

+
+
+
+
+
+
+ +
+
+

+ Change Product Category

+

+ By clicking the change category button a wizard appear for changing category of selected products.

+
+
+
+
+
+
+ +
+
+

+ Change Customer Lead Time

+
+
+
+
+
+
+ +
+
+

+ Archive Products

+
+
+
+
+
+
+ +
+
+

+ Update Sale Price Of Selected Products

+
+
+
+
+
+
+ +
+
+

+ Add Vendors For Selected Products

+
+
+
+
+
+
+ +
+
+

+ Make Product Salable

+
+
+
+
+
+
+ +
+
+

+ Add Alternative Products For Selected Products

+
+
+
+
+
+
+ +
+
+

+ Edit Invoice Policy Of Selected Products

+
+
+
+
+
+
+ +
+
+

+ Change Customer Tax Of Selected Products

+
+
+
+
+
+
+ +
+
+

+ Change Website Category Of Selected Products

+
+
+
+
+
+
+ +
+
+

+ Add Product Attributes

+
+
+
+
+
+
+ +
+
+

+ Change Product Tracking Method Of Selected Products

+
+
+
+
+
+
+ +
+
+

+ Change Production Location Of Selected Products

+
+
+
+
+
+
+
    +
  • + Multiple product + management at a time. +
  • +
  • + Change the + product category of all selected items. +
  • +
  • + Change the + product customer lead time of all selected + items. +
  • +
  • + Archive products + in bulk. +
  • +
  • + Update the + product sales price of all selected items. +
  • +
  • + Add product + vendors for all selected items. +
  • +
  • + Make product + salable and purchasable for all selected items. +
  • +
  • + Delete all + selected products. +
  • +
  • + Publish or + unpublish products in batch. +
  • +
  • + Add Alternative + products for all selected items. +
  • +
  • + Add Accessory + products for all selected items. +
  • +
  • + Add Optional + products for all selected items. +
  • +
  • + Change invoice + policy of all selected items. +
  • +
  • + Add + Customer/Vendor taxes for all selected items. +
  • +
  • + Change website + product category of all selected items. +
  • +
  • + Add Attribute & + Variants for all selected items. +
  • +
  • + Change product + tracking for all selected items. +
  • +
  • + Change + Production/Inventory location for all selected + items. +
  • +
+
+
+
+
+
+
Version + 17.0.1.0.0|Released on:19th August 2024 +
+

+ + Initial Commit for Product Management + System.

+
+
+
+
+
+
+
+

+ Related Products

+
+
+ +
+
+

+ Our Services

+ +
+
+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Customization

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Support

+
+
+
+
+
+
+ service-icon +
+
+

Hire + Odoo Developer

+
+
+
+
+ +
+
+ service-icon +
+
+

Odoo + Integration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Migration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Consultancy

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Licensing Consultancy

+
+
+
+
+
+
+

+ Our Industries

+ +
+
+
+
+
+
+ +

Trading

+

Easily procure and sell your products

+
+
+
+
+ +

POS

+

Easy configuration and convivial experience

+
+
+
+
+ +

+ Education

+

A platform for educational management

+
+
+
+
+ +

+ Manufacturing

+

Plan, track and schedule your operations

+
+
+
+
+ +

E-commerce & + Website

+

Mobile friendly, awe-inspiring product pages

+
+
+
+
+ +

Service + Management

+

Keep track of services and invoice

+
+
+
+
+ +

+ Restaurant

+

Run your bar or restaurant methodically

+
+
+
+
+ +

Hotel + Management

+

An all-inclusive hotel management application

+
+
+
+
+
+
+

+ Support

+
+
+
+
+
+
+
+ +
+ Need + Help? +

Got + questions or need help? Get in touch.

+
odoo@cybrosys.com +
+
+
+
+
+
+
+
+ +
+ WhatsApp +

Say hi to + us on WhatsApp!

+
+91 + 99456767686 +
+
+
+
+
+
+
+
+
+ + + + + + diff --git a/product_management_system/static/src/css/product_management_system.css b/product_management_system/static/src/css/product_management_system.css new file mode 100644 index 000000000..b628c18ed --- /dev/null +++ b/product_management_system/static/src/css/product_management_system.css @@ -0,0 +1,9 @@ +.o_cp_bottom_right{ + height: fit-content; +} +.toast{ + width: 100%; + overflow-x: auto; + overflow-y: auto; + height: 20%; +} diff --git a/product_management_system/static/src/js/product_management_system.js b/product_management_system/static/src/js/product_management_system.js new file mode 100644 index 000000000..89bc92345 --- /dev/null +++ b/product_management_system/static/src/js/product_management_system.js @@ -0,0 +1,365 @@ +/** @odoo-module **/ +import { useService } from "@web/core/utils/hooks"; +import { KanbanController } from "@web/views/kanban/kanban_controller"; +import { kanbanView } from "@web/views/kanban/kanban_view"; +import { registry } from "@web/core/registry"; +import { useState, useEffect } from "@odoo/owl"; + +export class KanbanButton extends KanbanController { + static template = 'button_in_kanban.button'; + setup() { + super.setup(); + this.actionService = useService("action"); + this.state = useState({ + products_selected: [], + }); + useEffect(() => { + this.check_selected(); + const handleClick = (ev) => { + if (ev.target.classList.contains('product_check_box')) { + this._onSelectDocs(ev); + } + }; + if (this.rootRef.el) { + this.rootRef.el.addEventListener('click', handleClick); + return () => this.rootRef.el.removeEventListener('click', handleClick); + } + }); + } + + check_selected() { + if (this.rootRef.el) { + const productDivs = this.rootRef.el.querySelectorAll('.oe_kanban_details'); + productDivs.forEach(div => { + const productId = parseInt(div.id); + const checkbox = div.querySelector('.product_check_box'); + if (checkbox) { + checkbox.checked = this.state.products_selected.includes(productId); + } + }); + } + } + + _onSelectDocs(ev) { + const checked = ev.target.checked; + const recordId = parseInt(ev.target.dataset.id); + this.state.products_selected = checked + ? [...this.state.products_selected, recordId] + : this.state.products_selected.filter(id => id !== recordId); + const toast = document.querySelector('.toast'); + if (this.state.products_selected.length > 0) { + toast.classList.add('show'); + toast.style.display = 'inline'; + } else { + toast.style.display = ''; + toast.classList.remove('show'); + } + } + + _onChangeCategory(){ + // Function for changing category of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onCustLeadTimeProducts (){ + // Function for changing Customer Lead Time of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onArchiveProducts (ev){ + // Function for changing Archive Product of selected products + this.actionService.doAction({ + type: 'ir.actions.act_window', + name: 'Archive Product', + res_model: 'product.archive', + view_mode: 'form', + views: [[false, 'form']], + target: 'new', + context: { + 'default_product_ids': this.state.products_selected, + }, + }); + } + + _onUpdatePrice (){ + // Function for changing Update Price of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onAddVendor (){ + // Function for changing Add Vendor of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onMakeSalable (){ + // Function for Make Salable of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onMakePurchasable (){ + // Function for Make Purchasable of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onDeleteProducts (){ + // Function for Deleting the selected products + this.actionService.doAction({ + type: 'ir.actions.act_window', + name: 'Delete Product', + res_model: 'product.delete', + view_mode: 'form', + views: [[false, 'form']], + target: 'new', + context: { + 'default_product_ids': this.state.products_selected, + }, + }); + } + + _onPublishProducts (){ + // Function for Publish On Website of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onAlternativeProducts (){ + // Function for Adding Alternative Product of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onAccessoryProducts (){ + // Function for Adding Accessory Product of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onOptionalProducts (){ + // Function for Adding Optional Product of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onEditInvoicePolicyProducts (){ + // Function for Editing Invoice Policy of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onAddCustomerTaxProducts (){ + // Function for Changing Customer Tax of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onAddVendorTaxProducts (){ + // Function for Changing Vendor Tax of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onWebCategChangeProducts (){ + // Function for Changing Category On Website of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onAddAttributeProducts (){ + // Function for Adding Product Attributes of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onChangeTrackingProducts (){ + // Function for Changing Product Tracking of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onChangeProductionLocation (){ + // Function for Changing Production Location of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } + + _onChangeInventoryLocation (){ + // Function for Changing Inventory Location of selected products + this.actionService.doAction({ + 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': this.state.products_selected, + }, + }); + } +} + +const ProductKanbanView = { + ...kanbanView, + Controller: KanbanButton, +}; + +registry.category("views").add("product_management_kanban_view", ProductKanbanView); diff --git a/product_management_system/static/src/xml/product_management_system.xml b/product_management_system/static/src/xml/product_management_system.xml new file mode 100644 index 000000000..bb0fbe1e9 --- /dev/null +++ b/product_management_system/static/src/xml/product_management_system.xml @@ -0,0 +1,174 @@ + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/views/product_management_system_menus.xml b/product_management_system/views/product_management_system_menus.xml new file mode 100644 index 000000000..8c95b4f53 --- /dev/null +++ b/product_management_system/views/product_management_system_menus.xml @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file diff --git a/product_management_system/views/product_template_views.xml b/product_management_system/views/product_template_views.xml new file mode 100644 index 000000000..429354477 --- /dev/null +++ b/product_management_system/views/product_template_views.xml @@ -0,0 +1,174 @@ + + + + + product.template.view.search + product.template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Product.template.view.kanban + product.template + + + + + + + + + +
+
+ Product +
+
+
+
+ + + + + + [] + +
+ +
+
+ Category: + + + +
+ + + Variants + +
+
+ Price: + + + +
+
+ Type : + + + +
+ Invoice Policy : + + + +
+ + + + Can be sold +
+ + + + Can be Purchased +
+ + + + Website Published +
+
+
+
+
+
+
+
+ + + Product Management + ir.actions.act_window + product.template + kanban + + + +

+ Create a new product +

+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/__init__.py b/product_management_system/wizard/__init__.py new file mode 100644 index 000000000..d06f176f8 --- /dev/null +++ b/product_management_system/wizard/__init__.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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 diff --git a/product_management_system/wizard/product_accessory.py b/product_management_system/wizard/product_accessory.py new file mode 100644 index 000000000..343267f18 --- /dev/null +++ b/product_management_system/wizard/product_accessory.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Select products to add accessory ' + 'product to them') + accessory_ids = fields.Many2many('product.product', + string="Accessory Products", + help='Products wanted to added as ' + 'Accessory Products for selected ' + 'product') + + def action_add_accessory_products(self): + """ + Function for adding Accessory Products for the selected products + """ + for products in self.product_ids: + if self.accessory_ids: + products.accessory_product_ids = [ + fields.Command.set(self.accessory_ids.ids)] diff --git a/product_management_system/wizard/product_accessory_views.xml b/product_management_system/wizard/product_accessory_views.xml new file mode 100644 index 000000000..e3c39651f --- /dev/null +++ b/product_management_system/wizard/product_accessory_views.xml @@ -0,0 +1,22 @@ + + + + + product.accessory.view.form + product.accessory + +
+ + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_add_attribute.py b/product_management_system/wizard/product_add_attribute.py new file mode 100644 index 000000000..ee8754122 --- /dev/null +++ b/product_management_system/wizard/product_add_attribute.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products which are selected to add ' + 'Attributes for them') + 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 + """ + 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 ProductManagementAttribute(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 to add for the selected ' + 'product') + value_ids = fields.Many2many('product.attribute.value', + string='Values', + help='Attribute Values to add for the ' + 'selected products', + domain="[('attribute_id','=',attribute_id)]") + wizard_id = fields.Many2one('product.add.attribute', + string='Wizard Id', + help='Wizard ID') diff --git a/product_management_system/wizard/product_add_attribute_views.xml b/product_management_system/wizard/product_add_attribute_views.xml new file mode 100644 index 000000000..1dbca9845 --- /dev/null +++ b/product_management_system/wizard/product_add_attribute_views.xml @@ -0,0 +1,31 @@ + + + + + product.add.attribute.view.form + product.add.attribute + +
+ + + + + + + + + + + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_add_vendor.py b/product_management_system/wizard/product_add_vendor.py new file mode 100644 index 000000000..c1759082f --- /dev/null +++ b/product_management_system/wizard/product_add_vendor.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products which are selected to add ' + 'vendors') + 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 + """ + 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 ProductVendor(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='Wizard Id', + help='Wizard ID') diff --git a/product_management_system/wizard/product_add_vendor_views.xml b/product_management_system/wizard/product_add_vendor_views.xml new file mode 100644 index 000000000..673b6a8dc --- /dev/null +++ b/product_management_system/wizard/product_add_vendor_views.xml @@ -0,0 +1,33 @@ + + + + + product.add.vendor.view.form + product.add.vendor + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_alternative.py b/product_management_system/wizard/product_alternative.py new file mode 100644 index 000000000..d2fd24c72 --- /dev/null +++ b/product_management_system/wizard/product_alternative.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products which are selected to add ' + 'new alternative products') + alternative_ids = fields.Many2many('product.template', + 'product_management_alternative_rel', + string="Alternative Products", + help='Alternative Products for the ' + 'selected products', + domain="[('id', 'not in', product_ids)]") + + def action_add_alternative_products(self): + """ + Function for adding alternative products for Selected Products + """ + for products in self.product_ids: + if self.alternative_ids: + products.alternative_product_ids = [ + fields.Command.set(self.alternative_ids.ids)] diff --git a/product_management_system/wizard/product_alternative_views.xml b/product_management_system/wizard/product_alternative_views.xml new file mode 100644 index 000000000..050dfa586 --- /dev/null +++ b/product_management_system/wizard/product_alternative_views.xml @@ -0,0 +1,22 @@ + + + + + product.alternative.view.form + product.alternative + +
+ + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_archive.py b/product_management_system/wizard/product_archive.py new file mode 100644 index 000000000..1a178f1da --- /dev/null +++ b/product_management_system/wizard/product_archive.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products which are selected to archive') + + def action_archive_product(self): + """ + Function for archiving Selected Products + """ + for products in self.product_ids: + products.write({ + 'active': False + }) diff --git a/product_management_system/wizard/product_archive_views.xml b/product_management_system/wizard/product_archive_views.xml new file mode 100644 index 000000000..3f5316dd0 --- /dev/null +++ b/product_management_system/wizard/product_archive_views.xml @@ -0,0 +1,22 @@ + + + + + product.archive.view.form + product.archive + +
+ + + +

Do you want to make these products Archive?

+
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_category_change.py b/product_management_system/wizard/product_category_change.py new file mode 100644 index 000000000..d8b327774 --- /dev/null +++ b/product_management_system/wizard/product_category_change.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products which are selected to ' + 'change the category') + category_id = fields.Many2one('product.category', + string='New Category to add for the ' + 'selected product', + required=True, + help='Category') + + def action_product_category_change_confirm(self): + """ + Function for changing category of Selected Products + """ + for rec in self.product_ids: + rec.write({ + 'categ_id': self.category_id + }) diff --git a/product_management_system/wizard/product_category_change_views.xml b/product_management_system/wizard/product_category_change_views.xml new file mode 100644 index 000000000..fd66044d9 --- /dev/null +++ b/product_management_system/wizard/product_category_change_views.xml @@ -0,0 +1,26 @@ + + + + + product.category.change.view.form + product.category.change + +
+ + + + + + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_category_website.py b/product_management_system/wizard/product_category_website.py new file mode 100644 index 000000000..b0232c9ce --- /dev/null +++ b/product_management_system/wizard/product_category_website.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products which are selected to ' + 'change the website category') + public_categ_ids = fields.Many2many('product.public.category', + string="Website Product Category", + + help='Select the new Website Category ' + 'for selected Products') + + def action_change_website_category(self): + """ + Function for changing public_categ_ids (Website Category) of Selected Products + """ + for products in self.product_ids: + products.public_categ_ids = [fields.Command.set(self.public_categ_ids.ids)] diff --git a/product_management_system/wizard/product_category_website_views.xml b/product_management_system/wizard/product_category_website_views.xml new file mode 100644 index 000000000..2daf086d7 --- /dev/null +++ b/product_management_system/wizard/product_category_website_views.xml @@ -0,0 +1,22 @@ + + + + + product.category.website.view.form + product.category.website + +
+ + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_change_tracking.py b/product_management_system/wizard/product_change_tracking.py new file mode 100644 index 000000000..81a81483c --- /dev/null +++ b/product_management_system/wizard/product_change_tracking.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products that are selected to change ' + 'the tracking') + tracking = fields.Selection([ + ('serial', 'By Unique Serial Number'), + ('lot', 'By Lots'), + ('none', 'No Tracking')], + string='Tracking', + help='Select a tracking type to update for the selected products', + default='none', required=True) + + def action_change_product_tracking(self): + """ + Function for changing tracking method of selected products + """ + for products in self.product_ids: + products.write({'tracking': self.tracking}) diff --git a/product_management_system/wizard/product_change_tracking_views.xml b/product_management_system/wizard/product_change_tracking_views.xml new file mode 100644 index 000000000..08fe397af --- /dev/null +++ b/product_management_system/wizard/product_change_tracking_views.xml @@ -0,0 +1,22 @@ + + + + + product.change.tracking.view.form + product.change.tracking + +
+ + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_customer_lead_time.py b/product_management_system/wizard/product_customer_lead_time.py new file mode 100644 index 000000000..8dde330e1 --- /dev/null +++ b/product_management_system/wizard/product_customer_lead_time.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products which are selected to ' + 'update the Delivery lead time') + sale_delay = fields.Integer(string='Customer Lead Time', + required=True, + 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.sale_delay != 0: + for products in self.product_ids: + products.write({'sale_delay': self.sale_delay}) diff --git a/product_management_system/wizard/product_customer_lead_time_views.xml b/product_management_system/wizard/product_customer_lead_time_views.xml new file mode 100644 index 000000000..ce9320f5c --- /dev/null +++ b/product_management_system/wizard/product_customer_lead_time_views.xml @@ -0,0 +1,22 @@ + + + + + product.customer.lead.time.view.form + product.customer.lead.time + +
+ + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_customer_tax.py b/product_management_system/wizard/product_customer_tax.py new file mode 100644 index 000000000..515f70fbf --- /dev/null +++ b/product_management_system/wizard/product_customer_tax.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products which are selected to ' + 'update Customer Tax') + tax_ids = fields.Many2many('account.tax', + domain="[('type_tax_use', '=', 'sale')]", + string="Customer Tax", + help='New Customer Tax to update for the ' + 'selected product') + + def action_change_customer_tax(self): + """ + Function for changing tax_ids (Customer Tax) of selected products + """ + for products in self.product_ids: + products.taxes_id = [fields.Command.set(self.tax_ids.ids)] diff --git a/product_management_system/wizard/product_customer_tax_views.xml b/product_management_system/wizard/product_customer_tax_views.xml new file mode 100644 index 000000000..6135a5fce --- /dev/null +++ b/product_management_system/wizard/product_customer_tax_views.xml @@ -0,0 +1,26 @@ + + + + + product.customer.tax.view.form + product.customer.tax + +
+ + + + + + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_delete.py b/product_management_system/wizard/product_delete.py new file mode 100644 index 000000000..974ec11e2 --- /dev/null +++ b/product_management_system/wizard/product_delete.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products which are selected to remove') + + def action_delete_product(self): + """ + Function for deleting selected products + """ + for products in self.product_ids: + products.unlink() diff --git a/product_management_system/wizard/product_delete_views.xml b/product_management_system/wizard/product_delete_views.xml new file mode 100644 index 000000000..dc5893dad --- /dev/null +++ b/product_management_system/wizard/product_delete_views.xml @@ -0,0 +1,22 @@ + + + + + product.delete.view.form + product.delete + +
+ + + +

Do you want to make these products Delete?

+
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_inventory_location.py b/product_management_system/wizard/product_inventory_location.py new file mode 100644 index 000000000..67ef82544 --- /dev/null +++ b/product_management_system/wizard/product_inventory_location.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products which are selected to ' + 'update the Inventory location') + inventory_location_id = fields.Many2one('stock.location', + string='Inventory Location', + required=True, + help='New Inventory location of ' + 'the products to update', + domain="[('usage','=','inventory')]") + + def action_change_inventory_location(self): + """ + Function for changing product inventory location of selected products + """ + for products in self.product_ids: + products.write( + {'property_stock_inventory': self.inventory_location_id}) diff --git a/product_management_system/wizard/product_inventory_location_views.xml b/product_management_system/wizard/product_inventory_location_views.xml new file mode 100644 index 000000000..c0efce3ab --- /dev/null +++ b/product_management_system/wizard/product_inventory_location_views.xml @@ -0,0 +1,22 @@ + + + + + product.inventory.location.view.form + product.inventory.location + +
+ + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_invoice.py b/product_management_system/wizard/product_invoice.py new file mode 100644 index 000000000..8c53c3713 --- /dev/null +++ b/product_management_system/wizard/product_invoice.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products which are selected to ' + 'update the invoice policy') + invoice_policy = fields.Selection([ + ('order', 'Ordered Quantities'), + ('delivery', 'Delivered Quantities')], + string='Invoicing Policy', help='New Invoice policy of the selected product', + default='order', required=True) + + def action_change_invoice_policy_products(self): + """ + Function for changing invoice policy of selected products + """ + for products in self.product_ids: + products.write({'invoice_policy': self.invoice_policy}) diff --git a/product_management_system/wizard/product_invoice_views.xml b/product_management_system/wizard/product_invoice_views.xml new file mode 100644 index 000000000..93958848f --- /dev/null +++ b/product_management_system/wizard/product_invoice_views.xml @@ -0,0 +1,22 @@ + + + + + product.invoice.view.form + product.invoice + +
+ + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_make_purchasable.py b/product_management_system/wizard/product_make_purchasable.py new file mode 100644 index 000000000..0e6c474ca --- /dev/null +++ b/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(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products which are selected to make ' + 'purchasable') + + def action_product_make_purchasable_confirm(self): + """ + Function for making product purchasable + """ + for rec in self.product_ids: + rec.write({ + 'purchase_ok': True + }) + + def action_product_make_purchasable_false(self): + """ + Function for making product not purchasable + """ + for rec in self.product_ids: + rec.write({ + 'purchase_ok': False + }) diff --git a/product_management_system/wizard/product_make_purchasable_views.xml b/product_management_system/wizard/product_make_purchasable_views.xml new file mode 100644 index 000000000..ac5747ee6 --- /dev/null +++ b/product_management_system/wizard/product_make_purchasable_views.xml @@ -0,0 +1,24 @@ + + + + + product.make.purchasable.view.form + product.make.purchasable + +
+ + + +

Do you want to make these products purchasable?

+
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_make_salable.py b/product_management_system/wizard/product_make_salable.py new file mode 100644 index 000000000..59fbe4533 --- /dev/null +++ b/product_management_system/wizard/product_make_salable.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products which are selected to make salable') + + def action_product_make_salable_confirm(self): + """ + Function for making product Salable + """ + for rec in self.product_ids: + rec.write({ + 'sale_ok': True + }) + + def action_product_make_salable_false(self): + """ + Function for making product not Salable + """ + for rec in self.product_ids: + rec.write({ + 'sale_ok': False + }) diff --git a/product_management_system/wizard/product_make_salable_views.xml b/product_management_system/wizard/product_make_salable_views.xml new file mode 100644 index 000000000..49b54c2ed --- /dev/null +++ b/product_management_system/wizard/product_make_salable_views.xml @@ -0,0 +1,24 @@ + + + + + product.make.salable.view.form + product.make.salable + +
+ + + +

Do you want to make these products salable?

+
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_optional.py b/product_management_system/wizard/product_optional.py new file mode 100644 index 000000000..fb47f754c --- /dev/null +++ b/product_management_system/wizard/product_optional.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +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', + readonly=True, + help='Products which are selected to ' + 'update optional product') + optional_ids = fields.Many2many('product.template', + string="Optional Products", + required=True, + help='Optional Products to update for the ' + 'selected product', + 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 + """ + for products in self.product_ids: + for items in self.optional_ids: + products.optional_product_ids = [ + fields.Command.link(items.id)] diff --git a/product_management_system/wizard/product_optional_views.xml b/product_management_system/wizard/product_optional_views.xml new file mode 100644 index 000000000..4cd578c34 --- /dev/null +++ b/product_management_system/wizard/product_optional_views.xml @@ -0,0 +1,22 @@ + + + + + product.optional.view.form + product.optional + +
+ + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_production_location.py b/product_management_system/wizard/product_production_location.py new file mode 100644 index 000000000..2ff4db2af --- /dev/null +++ b/product_management_system/wizard/product_production_location.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +from odoo import fields, models + + +class ProductProductionLocation(models.TransientModel): + """ + Model for changing production location + """ + _name = 'product.production.location' + _description = 'Product Production Location' + + product_ids = fields.Many2many('product.template', + string='Selected Products', + readonly=True, + help='Products which are selected to ' + 'update production location') + production_location_id = fields.Many2one('stock.location', + string='Production Location', + help='Production location to ' + 'update for the selected ' + 'products', + required=True, + domain="[('usage','='," + "'production')]") + + def action_change_production_location(self): + """ + Function for changing production location of the selected products + """ + for products in self.product_ids: + products.write( + {'property_stock_production': self.production_location_id}) diff --git a/product_management_system/wizard/product_production_location_views.xml b/product_management_system/wizard/product_production_location_views.xml new file mode 100644 index 000000000..14c13ffc1 --- /dev/null +++ b/product_management_system/wizard/product_production_location_views.xml @@ -0,0 +1,22 @@ + + + + + product.production.location.view.form + product.production.location + +
+ + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_publish.py b/product_management_system/wizard/product_publish.py new file mode 100644 index 000000000..2361b52d6 --- /dev/null +++ b/product_management_system/wizard/product_publish.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +from odoo import fields, models + + +class ProductPublish(models.TransientModel): + """ + Model for making products publish on website + """ + _name = 'product.publish' + _description = 'Publish Products' + + product_ids = fields.Many2many('product.template', + string='Selected Products', + readonly=True, + help='Products which are selected to ' + 'update publish detail') + + def action_publish_product(self): + """ + Function for making selected products publish on website + """ + for products in self.product_ids: + products.write({'is_published': True}) + + def action_not_publish_product(self): + """ + Function for not making selected products publish on website + """ + for products in self.product_ids: + products.write({'is_published': False}) diff --git a/product_management_system/wizard/product_publish_views.xml b/product_management_system/wizard/product_publish_views.xml new file mode 100644 index 000000000..3aaef20e0 --- /dev/null +++ b/product_management_system/wizard/product_publish_views.xml @@ -0,0 +1,24 @@ + + + + + product.publish.view.form + product.publish + +
+ + + +

Do you want to make these products Publish On Website ?

+
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_update_price.py b/product_management_system/wizard/product_update_price.py new file mode 100644 index 000000000..d332ec8dc --- /dev/null +++ b/product_management_system/wizard/product_update_price.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +from odoo import fields, models + + +class ProductUpdatePrice(models.TransientModel): + """ + Model for updating price + """ + _name = 'product.update.price' + _description = 'Update Product Price' + + product_ids = fields.Many2many('product.template', + string='Selected Products', + readonly=True, + help='Products which are selected to ' + 'update the sales price') + product_price = fields.Float(string='Price to change', + help='Sales Price to update for the selected ' + 'product') + + def action_product_update_price_confirm(self): + """ + Function for updating price of the selected products + """ + for rec in self.product_ids: + rec.write({ + 'list_price': self.product_price if self.product_price != 0 else rec.list_price, + }) diff --git a/product_management_system/wizard/product_update_price_views.xml b/product_management_system/wizard/product_update_price_views.xml new file mode 100644 index 000000000..79fd3ecc7 --- /dev/null +++ b/product_management_system/wizard/product_update_price_views.xml @@ -0,0 +1,26 @@ + + + + + product.update.price.view.form + product.update.price + +
+ + + + + + + + +
+
+
+
+
+
\ No newline at end of file diff --git a/product_management_system/wizard/product_vendor_tax.py b/product_management_system/wizard/product_vendor_tax.py new file mode 100644 index 000000000..2ff599c65 --- /dev/null +++ b/product_management_system/wizard/product_vendor_tax.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +################################################################################ +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies(). +# Author: Cybrosys Technologies () +# +# 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 . +# +################################################################################ +from odoo import fields, models + + +class ProductVendorTax(models.TransientModel): + """ + Model for updating vendor tax + """ + _name = 'product.vendor.tax' + _description = 'Product Vendor Tax' + + product_ids = fields.Many2many('product.template', + string='Selected Products', + readonly=True, + help='Products which are selected to ' + 'update the vendor tax') + tax_ids = fields.Many2many('account.tax', + string="Vendor Tax", + help='Vendor tax to update for the selected ' + 'product', + domain="[('type_tax_use', '=', 'purchase')]") + + def action_change_vendor_tax(self): + """ + Function for updating vendor tax of the selected products + """ + for products in self.product_ids: + products.supplier_taxes_id = [fields.Command.set(self.tax_ids.ids)] diff --git a/product_management_system/wizard/product_vendor_tax_views.xml b/product_management_system/wizard/product_vendor_tax_views.xml new file mode 100644 index 000000000..ab22a7219 --- /dev/null +++ b/product_management_system/wizard/product_vendor_tax_views.xml @@ -0,0 +1,26 @@ + + + + + product.vendor.tax.view.form + product.vendor.tax + +
+ + + + + + + + + +
+
+
+
\ No newline at end of file