Browse Source

Dec 02 : [ADD] Initial Commit 'merge_rfq'

pull/298/merge
RisvanaCybro 1 year ago
parent
commit
eed95bd79e
  1. 45
      merge_rfq/README.rst
  2. 21
      merge_rfq/__init__.py
  3. 44
      merge_rfq/__manifest__.py
  4. 7
      merge_rfq/doc/RELEASE_NOTES.md
  5. 2
      merge_rfq/security/ir.model.access.csv
  6. BIN
      merge_rfq/static/description/assets/icons/check.png
  7. BIN
      merge_rfq/static/description/assets/icons/chevron.png
  8. BIN
      merge_rfq/static/description/assets/icons/cogs.png
  9. BIN
      merge_rfq/static/description/assets/icons/consultation.png
  10. BIN
      merge_rfq/static/description/assets/icons/ecom-black.png
  11. BIN
      merge_rfq/static/description/assets/icons/education-black.png
  12. BIN
      merge_rfq/static/description/assets/icons/hotel-black.png
  13. BIN
      merge_rfq/static/description/assets/icons/license.png
  14. BIN
      merge_rfq/static/description/assets/icons/lifebuoy.png
  15. BIN
      merge_rfq/static/description/assets/icons/manufacturing-black.png
  16. BIN
      merge_rfq/static/description/assets/icons/pos-black.png
  17. BIN
      merge_rfq/static/description/assets/icons/puzzle.png
  18. BIN
      merge_rfq/static/description/assets/icons/restaurant-black.png
  19. BIN
      merge_rfq/static/description/assets/icons/service-black.png
  20. BIN
      merge_rfq/static/description/assets/icons/trading-black.png
  21. BIN
      merge_rfq/static/description/assets/icons/training.png
  22. BIN
      merge_rfq/static/description/assets/icons/update.png
  23. BIN
      merge_rfq/static/description/assets/icons/user.png
  24. BIN
      merge_rfq/static/description/assets/icons/wrench.png
  25. BIN
      merge_rfq/static/description/assets/misc/categories.png
  26. BIN
      merge_rfq/static/description/assets/misc/check-box.png
  27. BIN
      merge_rfq/static/description/assets/misc/compass.png
  28. BIN
      merge_rfq/static/description/assets/misc/corporate.png
  29. BIN
      merge_rfq/static/description/assets/misc/customer-support.png
  30. BIN
      merge_rfq/static/description/assets/misc/cybrosys-logo.png
  31. BIN
      merge_rfq/static/description/assets/misc/features.png
  32. BIN
      merge_rfq/static/description/assets/misc/logo.png
  33. BIN
      merge_rfq/static/description/assets/misc/pictures.png
  34. BIN
      merge_rfq/static/description/assets/misc/pie-chart.png
  35. BIN
      merge_rfq/static/description/assets/misc/right-arrow.png
  36. BIN
      merge_rfq/static/description/assets/misc/star.png
  37. BIN
      merge_rfq/static/description/assets/misc/support.png
  38. BIN
      merge_rfq/static/description/assets/misc/whatsapp.png
  39. BIN
      merge_rfq/static/description/assets/modules/l1.png
  40. BIN
      merge_rfq/static/description/assets/modules/l2.png
  41. BIN
      merge_rfq/static/description/assets/modules/l3.png
  42. BIN
      merge_rfq/static/description/assets/modules/l4.png
  43. BIN
      merge_rfq/static/description/assets/modules/l5.png
  44. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot.png
  45. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot10.png
  46. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot11.png
  47. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot12.png
  48. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot13.png
  49. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot14.png
  50. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot15.png
  51. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot2.png
  52. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot3.png
  53. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot4.png
  54. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot5.png
  55. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot6.png
  56. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot7.png
  57. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot8.png
  58. BIN
      merge_rfq/static/description/assets/screenshots/Screenshot9.png
  59. BIN
      merge_rfq/static/description/assets/screenshots/hero.gif
  60. BIN
      merge_rfq/static/description/banner.png
  61. BIN
      merge_rfq/static/description/icon.png
  62. 706
      merge_rfq/static/description/index.html
  63. 21
      merge_rfq/wizard/__init__.py
  64. 113
      merge_rfq/wizard/merge_rfq.py
  65. 32
      merge_rfq/wizard/merge_rfq_views.xml

45
merge_rfq/README.rst

@ -0,0 +1,45 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
Merge RFQ
=========
* This module allow to merge Purchase order in RFQ state.
Configuration
=============
* No additional configurations needed.
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
* Developer: (V14) Yadhu krishnan, Contact: odoo@cybrosys.com
License
-------
Affero General Public License, Version 3 (AGPL v3).
(http://www.gnu.org/licenses/agpl-3.0-standalone.html)
Contacts
--------
* Mail Contact : odoo@cybrosys.com
* Website : https://cybrosys.com
Bug Tracker
-----------
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Maintainer
==========
.. image:: https://cybrosys.com/images/logo.png
:target: https://cybrosys.com
This module is maintained by Cybrosys Technologies.
For support and more information, please visit `Our Website <https://cybrosys.com/>`__
Further information
===================
HTML Description: `<static/description/index.html>`__

21
merge_rfq/__init__.py

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

44
merge_rfq/__manifest__.py

@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Yadhukrishnan K (odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
################################################################################
{
'name': 'Merge RFQ',
'version': '14.0.1.0.0',
'category': 'Purchases',
'summary': """This module merge two or more RFQ by cancelling or deleting
the others in RFQ and RFQ sent state.""",
'description': """'Merge RFQ' is a module for Odoo 14 that 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,
}

7
merge_rfq/doc/RELEASE_NOTES.md

@ -0,0 +1,7 @@
## Module <merge_rfq>
#### 27.11.2023
#### Version 14.0.1.0.0
#### ADD
- Initial commit for Merge RFQ

2
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,access_merge_rfq,model_merge_rfq,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_merge_rfq access_merge_rfq model_merge_rfq base.group_user 1 1 1 1

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
merge_rfq/static/description/assets/modules/l1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
merge_rfq/static/description/assets/modules/l2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
merge_rfq/static/description/assets/modules/l3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
merge_rfq/static/description/assets/modules/l4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
merge_rfq/static/description/assets/modules/l5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot12.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot13.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot14.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot15.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

BIN
merge_rfq/static/description/assets/screenshots/Screenshot9.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB

BIN
merge_rfq/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
merge_rfq/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

706
merge_rfq/static/description/index.html

@ -0,0 +1,706 @@
<div style="background-color: #714B67; height: 810px; width: 100%; padding: 15px; position: relative;">
<!-- TITLE BAR -->
<div class="d-flex align-items-center justify-content-between"
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;">
<img src="assets/misc/cybrosys-logo.png" width="42" height="42"
style="width: 42px; height: 42px;"/>
<div>
<div
style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Community
</div>
<div
style="color: #875A7B; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Enterprise
</div>
<div
style="color: #017E84; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2">
<i class="fa fa-check mr-1"></i>Odoo.sh
</div>
</div>
</div>
<!-- END OF TITLE BAR -->
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-12 col-lg-12">
<!-- APP HERO -->
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">
Merge RFQ
</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">
Merge Purchase orders in RFQ state</p>
<!-- END OF APP HERO -->
<img src="assets/screenshots/hero.gif" class="img-responsive"
style="width: 100%; margin-left: auto; margin-right: auto;"/>
</div>
</div>
</div>
</div>
<!-- NAVIGATION SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/compass.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Explore This
Module</h2>
</div>
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;">
<div class="col-sm-12 col-md-6 my-3">
<a href="#overview">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn
more about this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#features">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
features of this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
<div class="col-sm-12 col-md-6 my-3">
<a href="#screenshots">
<div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span>
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
screenshots for this
module</span>
</div>
<img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div>
</a>
</div>
</div>
<!-- END OF NAVIGATION SECTION -->
<!-- OVERVIEW SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="overview">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pie-chart.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Overview
</h2>
</div>
<div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 py-4">
This module helps to merge purchase orders that are in RFQ or RFQ Sent
state.
</div>
</div>
<!-- END OF OVERVIEW SECTION -->
<!-- FEATURES SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/features.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Features
</h2>
</div>
<div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center"
style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Community &amp;
Enterprise Support.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Cancel all selected purchase order and Create new order.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Merge order on existing selected order and cancel others.</span>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Delete all selected purchase order and Create new order.</span>
</div>
<div class="d-flex align-items-center"
style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Merge order on existing selected order and delete others</span>
</div>
</div>
</div>
<!-- END OF FEATURES SECTION -->
<!-- SCREENSHOTS SECTION -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="screenshots">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pictures.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Screenshots
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Merge Orders Action
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Select two or more purchase orders which is in RFQ or RFQ sent
state and in 'Action' tab there is an option 'Merge Orders'.</p>
<img src="assets/screenshots/Screenshot.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Merge Orders Wizard
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
When click on the Merge Orders in 'Action' it will open a
Wizard.</p>
<img src="assets/screenshots/Screenshot2.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Merge Type
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
In the wizard there is four options in Merge Type. <br>
1.Cancel all selected purchase order and Create new order. <br>
2.Delete all selected purchase order and Create new order.<br>
3.Merge order on existing selected order and cancel others.<br>
4.Merge order on existing selected order and delete others.</p>
<img src="assets/screenshots/Screenshot3.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Cancel/Delete all selected purchase order and Create new order
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
When select cancel all selected purchase order and create new
order 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.</p>
<img src="assets/screenshots/Screenshot5.png" class="img-thumbnail">
<img src="assets/screenshots/Screenshot6.png" class="img-thumbnail">
<img src="assets/screenshots/Screenshot4.png" class="img-thumbnail">
<img src="assets/screenshots/Screenshot7.png" class="img-thumbnail">
<img src="assets/screenshots/Screenshot8.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Merge order on existing selected order and cancel/delete others
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
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.</p>
<img src="assets/screenshots/Screenshot9.png" class="img-thumbnail">
<img src="assets/screenshots/Screenshot10.png"
class="img-thumbnail">
<img src="assets/screenshots/Screenshot11.png"
class="img-thumbnail">
<img src="assets/screenshots/Screenshot12.png"
class="img-thumbnail">
<img src="assets/screenshots/Screenshot13.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
At least two purchase orders
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
At least two purchase order must be selected, otherwise ith show
an error. </p>
<img src="assets/screenshots/Screenshot14.png"
class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Orders of RFQ or RFQ Sent sate
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">
Orders should be in state RFQ or RFQ Sent, otherwise it shows an
error.</p>
<img src="assets/screenshots/Screenshot15.png"
class="img-thumbnail">
</div>
</div>
</div>
<!-- END OF SCREENSHOTS SECTION -->
<!-- RELATED PRODUCTS -->
<div class="row">
<div class="col-lg-12 d-flex flex-column justify-content-center"
style="text-align: center; padding: 2.5rem 1rem !important;">
<h2 style="color: #212529 !important;">Suggested Products</h2>
<hr
style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/>
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner">
<div class="carousel-item active" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/product_approval_management/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/l1.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/dynamic_accounts_report/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/l2.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/shopify_odoo_connector/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/l3.png">
</div>
</a>
</div>
</div>
<div class="carousel-item" style="min-height:0px">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/dashboard_pos/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/l4.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/14.0/multiple_reference_per_product/"
target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block"
style="border-top-left-radius:10px; border-top-right-radius:10px"
src="./assets/modules/l5.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev"
style="left:-25px;width: 35px;color: #000;"> <span
class="carousel-control-prev-icon"><i
class="fa fa-chevron-left"
style="font-size:24px"></i></span> </a> <a
class="carousel-control-next" href="#demo1" data-slide="next"
style="right:-25px;width: 35px;color: #000;">
<span class="carousel-control-next-icon"><i
class="fa fa-chevron-right"
style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF RELATED PRODUCTS -->
<!-- OUR SERVICES -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/star.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our Services
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Customization</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Support</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire
Odoo
Developer</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Integration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Migration</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Consultancy</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Implementation</h6>
</div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive"
height="48px" width="48px">
</div>
<h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo
Licensing Consultancy</h6>
</div>
</div>
</div>
<!-- END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/corporate.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our
Industries
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/trading-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/pos-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/education-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/manufacturing-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/ecom-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Mobile
friendly,
awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/service-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/restaurant-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/hotel-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</div>
<!-- END OF OUR INDUSTRIES -->
<!-- SUPPORT -->
<div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/customer-support.png"/>
</div>
<h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Support
</h2>
</div>
<div class="container mt-5">
<div class="row">
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/support.png" height="48" width="48"
style="width: 42px; height: 42px;"/>
</div>
<div>
<h4>Need Help?</h4>
<p style="line-height: 100%;">Got questions or need help?
Get in touch.</p>
<a href="mailto:odoo@cybrosys.com">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
odoo@cybrosys.com</p>
</a>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 d-flex justify-content-center align-items-center"
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/whatsapp.png" height="52" width="52"
style="width: 52px; height: 52px;"/>
</div>
<div>
<h4>WhatsApp</h4>
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p>
<a href="https://api.whatsapp.com/send?phone=918606827707">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
+91 86068
27707</p>
</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center">
<img src="assets/misc/logo.png" width="144" height="31"
style="width:144px; height: 31px; margin-top: 40px;"/>
</div>
</div>
</div>
<!-- END OF SUPPORT -->

21
merge_rfq/wizard/__init__.py

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

113
merge_rfq/wizard/merge_rfq.py

@ -0,0 +1,113 @@
# -*- coding: utf-8 -*-
################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Yadhukrishnan K (odoo@cybrosys.com)
#
# You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
################################################################################
from odoo import api, fields, models, _
from odoo.exceptions import UserError
class MergeRfq(models.TransientModel):
""" MergeRfq class displaying the wizard for the purchase order selection or
the rfq selection and this class have many functions for merging,
cancelling, deleting and creating the orders """
_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 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()

32
merge_rfq/wizard/merge_rfq_views.xml

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- Form view of the merge RFQ wizard-->
<record id="merge_rfq_view_form" model="ir.ui.view">
<field name="name">merge.rfq.view.form</field>
<field name="model">merge.rfq</field>
<field name="arch" type="xml">
<form string="Purchase Order Merge">
<group>
<field name="merge_type" required="1"/>
<field name="partner_id" attrs="{'invisible': [('merge_type','in',['cancel_and_merge','delete_and_merge'])], 'required': [('merge_type','not in',['cancel_and_merge','delete_and_merge'])]}"/>
<field name="purchase_order_id" attrs="{'invisible': [('merge_type','in',['cancel_and_new','delete_and_new'])], 'required': [('merge_type','not in',['cancel_and_new','delete_and_new'])]}"/>
</group>
<footer>
<button name="merge_orders" string="Merge Orders" type="object" class="btn-primary"/>
<button string="Cancel" class="btn-default" special="cancel"/>
</footer>
</form>
</field>
</record>
<!-- Action for merge RFQ wizard-->
<record id="action_merge_rfq" model="ir.actions.act_window">
<field name="name">Merge Orders</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">merge.rfq</field>
<field name="view_mode">form</field>
<field name="view_id" ref="merge_rfq_view_form"/>
<field name="target">new</field>
<field name="binding_model_id" ref="purchase.model_purchase_order"/>
<field name="binding_view_types">list</field>
</record>
</odoo>
Loading…
Cancel
Save