diff --git a/merge_rfq/README.rst b/merge_rfq/README.rst new file mode 100755 index 000000000..31a73f335 --- /dev/null +++ b/merge_rfq/README.rst @@ -0,0 +1,45 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Merge RFQ +========= +This module allow to merge Purchase order in RFQ state. + +Configuration +============= +No additional configurations needed. + +Company +------- +* `Cybrosys Techno Solutions `__ + +License +------- +GNU AFFERO GENERAL PUBLIC LICENSE v3.0 (AGPL-3). +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Credits +------- +Developer: (V15) Yadhu krishnan @cybrosys, 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: ``__ diff --git a/merge_rfq/__init__.py b/merge_rfq/__init__.py new file mode 100644 index 000000000..c0b77ad34 --- /dev/null +++ b/merge_rfq/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Yadhu Krishnan (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from . import wizard diff --git a/merge_rfq/__manifest__.py b/merge_rfq/__manifest__.py new file mode 100644 index 000000000..4207efbda --- /dev/null +++ b/merge_rfq/__manifest__.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Yadhu Krishnan (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +{ + 'name': 'Merge RFQ', + 'version': '15.0.1.0.0', + 'category': 'Purchases', + 'summary': """This module merges two or more RFQs by canceling or deleting + them.The others in RFQ and RFQ sent states.""", + 'description': """'Merge RFQ' allows users to merge multiple Requests for + Quotations (RFQs) into a single one by cancelling or deleting the others in + RFQ and RFQ sent state.""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['base', 'purchase'], + 'data': [ + 'security/ir.model.access.csv', + 'wizard/merge_rfq_views.xml' + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/merge_rfq/doc/RELEASE_NOTES.md b/merge_rfq/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..fb8fca376 --- /dev/null +++ b/merge_rfq/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 22.12.2023 +#### Version 15.0.1.0.0 +#### ADD + +- Initial commit for Merge RFQ diff --git a/merge_rfq/security/ir.model.access.csv b/merge_rfq/security/ir.model.access.csv new file mode 100644 index 000000000..611088658 --- /dev/null +++ b/merge_rfq/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_merge_rfq_user,access.merge.rfq.user,model_merge_rfq,base.group_user,1,1,1,1 diff --git a/merge_rfq/static/description/assets/icons/check.png b/merge_rfq/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/merge_rfq/static/description/assets/icons/check.png differ diff --git a/merge_rfq/static/description/assets/icons/chevron.png b/merge_rfq/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/merge_rfq/static/description/assets/icons/chevron.png differ diff --git a/merge_rfq/static/description/assets/icons/cogs.png b/merge_rfq/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/merge_rfq/static/description/assets/icons/cogs.png differ diff --git a/merge_rfq/static/description/assets/icons/consultation.png b/merge_rfq/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/merge_rfq/static/description/assets/icons/consultation.png differ diff --git a/merge_rfq/static/description/assets/icons/ecom-black.png b/merge_rfq/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/merge_rfq/static/description/assets/icons/ecom-black.png differ diff --git a/merge_rfq/static/description/assets/icons/education-black.png b/merge_rfq/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/merge_rfq/static/description/assets/icons/education-black.png differ diff --git a/merge_rfq/static/description/assets/icons/hotel-black.png b/merge_rfq/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/merge_rfq/static/description/assets/icons/hotel-black.png differ diff --git a/merge_rfq/static/description/assets/icons/license.png b/merge_rfq/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/merge_rfq/static/description/assets/icons/license.png differ diff --git a/merge_rfq/static/description/assets/icons/lifebuoy.png b/merge_rfq/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/merge_rfq/static/description/assets/icons/lifebuoy.png differ diff --git a/merge_rfq/static/description/assets/icons/manufacturing-black.png b/merge_rfq/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/merge_rfq/static/description/assets/icons/manufacturing-black.png differ diff --git a/merge_rfq/static/description/assets/icons/pos-black.png b/merge_rfq/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/merge_rfq/static/description/assets/icons/pos-black.png differ diff --git a/merge_rfq/static/description/assets/icons/puzzle.png b/merge_rfq/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/merge_rfq/static/description/assets/icons/puzzle.png differ diff --git a/merge_rfq/static/description/assets/icons/restaurant-black.png b/merge_rfq/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/merge_rfq/static/description/assets/icons/restaurant-black.png differ diff --git a/merge_rfq/static/description/assets/icons/service-black.png b/merge_rfq/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/merge_rfq/static/description/assets/icons/service-black.png differ diff --git a/merge_rfq/static/description/assets/icons/trading-black.png b/merge_rfq/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/merge_rfq/static/description/assets/icons/trading-black.png differ diff --git a/merge_rfq/static/description/assets/icons/training.png b/merge_rfq/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/merge_rfq/static/description/assets/icons/training.png differ diff --git a/merge_rfq/static/description/assets/icons/update.png b/merge_rfq/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/merge_rfq/static/description/assets/icons/update.png differ diff --git a/merge_rfq/static/description/assets/icons/user.png b/merge_rfq/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/merge_rfq/static/description/assets/icons/user.png differ diff --git a/merge_rfq/static/description/assets/icons/wrench.png b/merge_rfq/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/merge_rfq/static/description/assets/icons/wrench.png differ diff --git a/merge_rfq/static/description/assets/misc/categories.png b/merge_rfq/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/merge_rfq/static/description/assets/misc/categories.png differ diff --git a/merge_rfq/static/description/assets/misc/check-box.png b/merge_rfq/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/merge_rfq/static/description/assets/misc/check-box.png differ diff --git a/merge_rfq/static/description/assets/misc/compass.png b/merge_rfq/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/merge_rfq/static/description/assets/misc/compass.png differ diff --git a/merge_rfq/static/description/assets/misc/corporate.png b/merge_rfq/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/merge_rfq/static/description/assets/misc/corporate.png differ diff --git a/merge_rfq/static/description/assets/misc/customer-support.png b/merge_rfq/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/merge_rfq/static/description/assets/misc/customer-support.png differ diff --git a/merge_rfq/static/description/assets/misc/cybrosys-logo.png b/merge_rfq/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/merge_rfq/static/description/assets/misc/cybrosys-logo.png differ diff --git a/merge_rfq/static/description/assets/misc/features.png b/merge_rfq/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/merge_rfq/static/description/assets/misc/features.png differ diff --git a/merge_rfq/static/description/assets/misc/logo.png b/merge_rfq/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/merge_rfq/static/description/assets/misc/logo.png differ diff --git a/merge_rfq/static/description/assets/misc/pictures.png b/merge_rfq/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/merge_rfq/static/description/assets/misc/pictures.png differ diff --git a/merge_rfq/static/description/assets/misc/pie-chart.png b/merge_rfq/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/merge_rfq/static/description/assets/misc/pie-chart.png differ diff --git a/merge_rfq/static/description/assets/misc/right-arrow.png b/merge_rfq/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/merge_rfq/static/description/assets/misc/right-arrow.png differ diff --git a/merge_rfq/static/description/assets/misc/star.png b/merge_rfq/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/merge_rfq/static/description/assets/misc/star.png differ diff --git a/merge_rfq/static/description/assets/misc/support.png b/merge_rfq/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/merge_rfq/static/description/assets/misc/support.png differ diff --git a/merge_rfq/static/description/assets/misc/whatsapp.png b/merge_rfq/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/merge_rfq/static/description/assets/misc/whatsapp.png differ diff --git a/merge_rfq/static/description/assets/modules/budget_image.png b/merge_rfq/static/description/assets/modules/budget_image.png new file mode 100644 index 000000000..b50130c7d Binary files /dev/null and b/merge_rfq/static/description/assets/modules/budget_image.png differ diff --git a/merge_rfq/static/description/assets/modules/credit_image.png b/merge_rfq/static/description/assets/modules/credit_image.png new file mode 100644 index 000000000..3ad04ecfd Binary files /dev/null and b/merge_rfq/static/description/assets/modules/credit_image.png differ diff --git a/merge_rfq/static/description/assets/modules/employee_image.png b/merge_rfq/static/description/assets/modules/employee_image.png new file mode 100644 index 000000000..30ad58232 Binary files /dev/null and b/merge_rfq/static/description/assets/modules/employee_image.png differ diff --git a/merge_rfq/static/description/assets/modules/export_image.png b/merge_rfq/static/description/assets/modules/export_image.png new file mode 100644 index 000000000..492980ad0 Binary files /dev/null and b/merge_rfq/static/description/assets/modules/export_image.png differ diff --git a/merge_rfq/static/description/assets/modules/gantt_image.png b/merge_rfq/static/description/assets/modules/gantt_image.png new file mode 100644 index 000000000..1ae7cfe3b Binary files /dev/null and b/merge_rfq/static/description/assets/modules/gantt_image.png differ diff --git a/merge_rfq/static/description/assets/modules/quotation_image.png b/merge_rfq/static/description/assets/modules/quotation_image.png new file mode 100644 index 000000000..499b1a72f Binary files /dev/null and b/merge_rfq/static/description/assets/modules/quotation_image.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot.png b/merge_rfq/static/description/assets/screenshots/Screenshot.png new file mode 100644 index 000000000..f88095265 Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot10.png b/merge_rfq/static/description/assets/screenshots/Screenshot10.png new file mode 100644 index 000000000..6241149b7 Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot10.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot11.png b/merge_rfq/static/description/assets/screenshots/Screenshot11.png new file mode 100644 index 000000000..75ad8d2b4 Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot11.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot12.png b/merge_rfq/static/description/assets/screenshots/Screenshot12.png new file mode 100644 index 000000000..215249a92 Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot12.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot13.png b/merge_rfq/static/description/assets/screenshots/Screenshot13.png new file mode 100644 index 000000000..42d027b21 Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot13.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot14.png b/merge_rfq/static/description/assets/screenshots/Screenshot14.png new file mode 100644 index 000000000..596b7da04 Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot14.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot15.png b/merge_rfq/static/description/assets/screenshots/Screenshot15.png new file mode 100644 index 000000000..97f99e889 Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot15.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot2.png b/merge_rfq/static/description/assets/screenshots/Screenshot2.png new file mode 100644 index 000000000..353e4c88c Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot2.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot3.png b/merge_rfq/static/description/assets/screenshots/Screenshot3.png new file mode 100644 index 000000000..bce134a3d Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot3.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot4.png b/merge_rfq/static/description/assets/screenshots/Screenshot4.png new file mode 100644 index 000000000..d2e00d616 Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot4.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot5.png b/merge_rfq/static/description/assets/screenshots/Screenshot5.png new file mode 100644 index 000000000..3fc65dc9f Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot5.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot6.png b/merge_rfq/static/description/assets/screenshots/Screenshot6.png new file mode 100644 index 000000000..9d4ae0240 Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot6.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot7.png b/merge_rfq/static/description/assets/screenshots/Screenshot7.png new file mode 100644 index 000000000..fb300603a Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot7.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot8.png b/merge_rfq/static/description/assets/screenshots/Screenshot8.png new file mode 100644 index 000000000..1f04ff094 Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot8.png differ diff --git a/merge_rfq/static/description/assets/screenshots/Screenshot9.png b/merge_rfq/static/description/assets/screenshots/Screenshot9.png new file mode 100644 index 000000000..05b5b2de9 Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/Screenshot9.png differ diff --git a/merge_rfq/static/description/assets/screenshots/hero.gif b/merge_rfq/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..930a45772 Binary files /dev/null and b/merge_rfq/static/description/assets/screenshots/hero.gif differ diff --git a/merge_rfq/static/description/banner.png b/merge_rfq/static/description/banner.png new file mode 100644 index 000000000..c6dc28275 Binary files /dev/null and b/merge_rfq/static/description/banner.png differ diff --git a/merge_rfq/static/description/icon.png b/merge_rfq/static/description/icon.png new file mode 100644 index 000000000..3b7928218 Binary files /dev/null and b/merge_rfq/static/description/icon.png differ diff --git a/merge_rfq/static/description/index.html b/merge_rfq/static/description/index.html new file mode 100644 index 000000000..bd8eed95f --- /dev/null +++ b/merge_rfq/static/description/index.html @@ -0,0 +1,703 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ +
+
+
+ +

+ Merge RFQ +

+

+ Merge Purchase Orders in RFQ State

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

+ Explore This + Module

+
+ + + + +
+
+ +
+

+ Overview +

+
+
+
+ This module helps to merge purchase orders that are in RFQ or RFQ Sent + state. +
+
+ + + +
+
+ +
+

+ Features +

+
+
+
+
+ + Cancel all selected purchase order and Create new order. +
+
+ + Merge order on existing selected order and cancel others. +
+
+
+
+ + Delete all selected purchase order and Create new order. +
+ +
+ + Merge order on existing selected order and delete others +
+
+ + Module is supported to enterprise, community and odoo.sh +
+ +
+
+ + + +
+
+ +
+

+ Screenshots +

+
+
+
+
+

+ Merge Orders Action +

+

+ Select two or more purchase orders which is in RFQ or RFQ sent + state and in 'Action' tab there is an option 'Merge Orders'.

+ +
+ +
+

+ Merge Orders Wizard +

+

+ When click on the Merge Orders in 'Action' it will open a + Wizard.

+ +
+
+

+ Merge Type +

+

+ In the wizard there is four options in Merge Type.
+ 1.Cancel all selected purchase order and Create new order.
+ 2.Delete all selected purchase order and Create new order.
+ 3.Merge order on existing selected order and cancel others.
+ 4.Merge order on existing selected order and delete others.

+ +
+
+

+ Cancel/Delete all selected purchase order and Create new order +

+

+ Select the purchase order to cancel/delete. +

+ +

+ Also select other purchase orders to cancel/delete. After selecting the purchase orders, Click the Merge Orders from the Action option. + +

+ +

+ Select the option "Cancel all selected purchase order and Create new order" from the wizard. And also there is an option for selecting new vendor and click on button MERGE ORDERS, + it will cancel the all selected purchase order and create new + order with the selected vendor and if select delete all selected + purchase order and create new order, it + will delete the all selected purchase order and create new order + with the selected vendor

+ +

The user can see a new purchase order is created. And the other purchase orders were in cancelled state. +

+ +

The selected purchase order is merged together and created a new purchase order and hence the order lines are combined. +

+ +
+
+

+ Merge order on existing selected order and cancel/delete others +

+

+ Select the orders to merge the purchase order. +

+ +

+ +

+ When select merge order on existing selected order and cancel + others there is an option for selecting the RFQ and click on + button merge orders, + it will merge the order lines to the selected RFQ and cancel + others and if select merge order on existing selected order and + delete others, it will merge the + order lines to the selected RFQ and delete others. +

+ +

+ You can see the selected RFQ is remaining and other RFQ is cancelled. +

+ + +
+
+

+ At least two purchase orders +

+

+ Select one purchase order.

+ +

+ At least two purchase order must be selected, otherwise ith show + an error.

+ +
+
+

+ Orders of RFQ or RFQ Sent sate +

+

+ Orders should be in state RFQ or RFQ Sent, otherwise it shows an + error.

+ +
+ +
+
+ + + +
+
+

Suggested Products

+
+ +
+
+ + +
+
+ +
+

+ Our Services +

+
+
+
+
+
+ +
+
+ Odoo + Customization
+
+
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+
+
+ +
+
+ Hire + Odoo + Developer
+
+
+
+ +
+
+ Odoo + Integration
+
+
+
+ +
+
+ Odoo + Migration
+
+
+
+ +
+
+ Odoo + Consultancy
+
+
+
+ +
+
+ Odoo + Implementation
+
+
+
+ +
+
+ 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 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/merge_rfq/wizard/__init__.py b/merge_rfq/wizard/__init__.py new file mode 100644 index 000000000..efd32c7e8 --- /dev/null +++ b/merge_rfq/wizard/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Yadhu Krishnan (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from . import merge_rfq diff --git a/merge_rfq/wizard/merge_rfq.py b/merge_rfq/wizard/merge_rfq.py new file mode 100644 index 000000000..f3d66f799 --- /dev/null +++ b/merge_rfq/wizard/merge_rfq.py @@ -0,0 +1,112 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author: Yadhu Krishnan (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from odoo import api, fields, models, _ +from odoo.exceptions import UserError + + +class MergeRfq(models.TransientModel): + """Wizard to merge the RFQs""" + _name = 'merge.rfq' + _description = 'Merge RFQ' + + merge_type = fields.Selection(selection=[ + ('cancel_and_new', + 'Cancel all selected purchase order and Create new order'), + ('delete_and_new', + 'Delete all selected purchase order and Create new order'), + ('cancel_and_merge', + 'Merge order on existing selected order and cancel others'), + ('delete_and_merge', + 'Merge order on existing selected order and delete others')], + default='cancel_and_new', help='Select which type of merge is to done.' + ) + purchase_order_id = fields.Many2one('purchase.order', + string='Purchase Order', + help='Select RFQ to which others to ' + 'be merged') + partner_id = fields.Many2one('res.partner', string='Vendor', + help='Select Vendor for new order') + + @api.onchange('merge_type') + def _onchange_merge_type(self): + """This function passes a domain to the field purchase_order_id for + getting the selected RFQ""" + for order in self: + order.purchase_order_id = False + if order.merge_type in ['cancel_and_merge', 'delete_and_merge']: + return { + 'domain': {'purchase_order_id': [( + "id", "in", self._context.get("active_ids"))]}} + + def action_merge_orders(self): + """This function merge the selected RFQs""" + purchase_orders = self.env["purchase.order"].browse( + self._context.get("active_ids", [])) + if len(self._context.get("active_ids", [])) < 2: + raise UserError(_("Please select at least two purchase orders.")) + if any(order.state not in ["draft", "sent"] for order in + purchase_orders): + raise UserError(_( + "Please select Purchase orders which are in RFQ or RFQ sent " + "state.")) + if self.merge_type in ['cancel_and_new', 'delete_and_new']: + new_po = self.env["purchase.order"].create( + {"partner_id": self.partner_id.id}) + for order in purchase_orders: + for line in order.order_line: + order_line = False + if new_po.order_line: + for new_line in new_po.order_line: + if (line.product_id == new_line.product_id and + line.price_unit == new_line.price_unit): + order_line = new_line + break + if order_line: + order_line.product_qty += line.product_qty + else: + line.copy(default={"order_id": new_po.id}) + for order in purchase_orders: + order.sudo().button_cancel() + if self.merge_type == "delete_and_new": + order.sudo().unlink() + else: + selected_po = self.purchase_order_id + for order in purchase_orders: + if order == selected_po: + continue + for line in order.order_line: + order_line = False + for new_line in selected_po.order_line: + if (line.product_id == new_line.product_id and + line.price_unit == new_line.price_unit): + order_line = new_line + break + if order_line: + order_line.product_qty += line.product_qty + else: + line.copy( + default={"order_id": self.purchase_order_id.id}) + for order in purchase_orders: + if order != selected_po: + order.sudo().button_cancel() + if self.merge_type == "delete_and_merge": + order.sudo().unlink() diff --git a/merge_rfq/wizard/merge_rfq_views.xml b/merge_rfq/wizard/merge_rfq_views.xml new file mode 100644 index 000000000..d814dc254 --- /dev/null +++ b/merge_rfq/wizard/merge_rfq_views.xml @@ -0,0 +1,36 @@ + + + + + merge.rfq.view.form + merge.rfq + +
+ + + + + +
+
+
+
+
+ + + Merge Orders + ir.actions.act_window + merge.rfq + form + + new + + list + +