Browse Source

Jan 24 [ADD] : Initial Commit 'sale_purchase_from_product'

pull/243/head
AjmalCybro 2 years ago
parent
commit
62487014c7
  1. 41
      sale_purchase_from_product/README.rst
  2. 23
      sale_purchase_from_product/__init__.py
  3. 47
      sale_purchase_from_product/__manifest__.py
  4. 6
      sale_purchase_from_product/doc/RELEASE_NOTES.md
  5. 5
      sale_purchase_from_product/security/ir.model.access.csv
  6. BIN
      sale_purchase_from_product/static/description/assets/icons/check.png
  7. BIN
      sale_purchase_from_product/static/description/assets/icons/chevron.png
  8. BIN
      sale_purchase_from_product/static/description/assets/icons/cogs.png
  9. BIN
      sale_purchase_from_product/static/description/assets/icons/consultation.png
  10. BIN
      sale_purchase_from_product/static/description/assets/icons/ecom-black.png
  11. BIN
      sale_purchase_from_product/static/description/assets/icons/education-black.png
  12. BIN
      sale_purchase_from_product/static/description/assets/icons/hotel-black.png
  13. BIN
      sale_purchase_from_product/static/description/assets/icons/license.png
  14. BIN
      sale_purchase_from_product/static/description/assets/icons/lifebuoy.png
  15. BIN
      sale_purchase_from_product/static/description/assets/icons/manufacturing-black.png
  16. BIN
      sale_purchase_from_product/static/description/assets/icons/pos-black.png
  17. BIN
      sale_purchase_from_product/static/description/assets/icons/puzzle.png
  18. BIN
      sale_purchase_from_product/static/description/assets/icons/restaurant-black.png
  19. BIN
      sale_purchase_from_product/static/description/assets/icons/service-black.png
  20. BIN
      sale_purchase_from_product/static/description/assets/icons/trading-black.png
  21. BIN
      sale_purchase_from_product/static/description/assets/icons/training.png
  22. BIN
      sale_purchase_from_product/static/description/assets/icons/update.png
  23. BIN
      sale_purchase_from_product/static/description/assets/icons/user.png
  24. BIN
      sale_purchase_from_product/static/description/assets/icons/wrench.png
  25. BIN
      sale_purchase_from_product/static/description/assets/misc/categories.png
  26. BIN
      sale_purchase_from_product/static/description/assets/misc/check-box.png
  27. BIN
      sale_purchase_from_product/static/description/assets/misc/compass.png
  28. BIN
      sale_purchase_from_product/static/description/assets/misc/corporate.png
  29. BIN
      sale_purchase_from_product/static/description/assets/misc/customer-support.png
  30. BIN
      sale_purchase_from_product/static/description/assets/misc/cybrosys-logo.png
  31. BIN
      sale_purchase_from_product/static/description/assets/misc/features.png
  32. BIN
      sale_purchase_from_product/static/description/assets/misc/logo.png
  33. BIN
      sale_purchase_from_product/static/description/assets/misc/pictures.png
  34. BIN
      sale_purchase_from_product/static/description/assets/misc/pie-chart.png
  35. BIN
      sale_purchase_from_product/static/description/assets/misc/right-arrow.png
  36. BIN
      sale_purchase_from_product/static/description/assets/misc/star.png
  37. BIN
      sale_purchase_from_product/static/description/assets/misc/support.png
  38. BIN
      sale_purchase_from_product/static/description/assets/misc/whatsapp.png
  39. BIN
      sale_purchase_from_product/static/description/assets/modules/1.png
  40. BIN
      sale_purchase_from_product/static/description/assets/modules/2.png
  41. BIN
      sale_purchase_from_product/static/description/assets/modules/3.png
  42. BIN
      sale_purchase_from_product/static/description/assets/modules/4.png
  43. BIN
      sale_purchase_from_product/static/description/assets/modules/5.gif
  44. BIN
      sale_purchase_from_product/static/description/assets/modules/6.png
  45. BIN
      sale_purchase_from_product/static/description/assets/screenshots/hero.gif
  46. BIN
      sale_purchase_from_product/static/description/assets/screenshots/quick_purchase_create_view_wizard.png
  47. BIN
      sale_purchase_from_product/static/description/assets/screenshots/quick_purchase_wizard.png
  48. BIN
      sale_purchase_from_product/static/description/assets/screenshots/quick_sale_create_view_wizard.png
  49. BIN
      sale_purchase_from_product/static/description/assets/screenshots/quick_sale_create_wizard.png
  50. BIN
      sale_purchase_from_product/static/description/assets/screenshots/quick_sale_purchase.png
  51. BIN
      sale_purchase_from_product/static/description/assets/screenshots/quick_sale_wizard.png
  52. BIN
      sale_purchase_from_product/static/description/assets/screenshots/update_to_purchase_orders.png
  53. BIN
      sale_purchase_from_product/static/description/assets/screenshots/update_to_sales_orders.png
  54. BIN
      sale_purchase_from_product/static/description/banner.png
  55. BIN
      sale_purchase_from_product/static/description/icon.png
  56. 534
      sale_purchase_from_product/static/description/index.html
  57. 15
      sale_purchase_from_product/views/product_views.xml
  58. 26
      sale_purchase_from_product/wizard/__init__.py
  59. 34
      sale_purchase_from_product/wizard/quick_create_sale_line_wizard.py
  60. 101
      sale_purchase_from_product/wizard/quick_create_wizard.py
  61. 66
      sale_purchase_from_product/wizard/quick_create_wizard_views.xml
  62. 35
      sale_purchase_from_product/wizard/quick_purchase_line_wizard.py
  63. 52
      sale_purchase_from_product/wizard/quick_purchase_order_wizard_views.xml
  64. 98
      sale_purchase_from_product/wizard/quick_purchase_wizard.py

41
sale_purchase_from_product/README.rst

@ -0,0 +1,41 @@
Sale/Purchase Orders from Products
===================================
* Sale/Purchase Orders from Products module for Odoo 16.
Installation
============
- www.odoo.com/documentation/16.0/setup/install.html
- Install our custom addon
License
-------
General Public License, Version 3 (LGPL v3).
(https://www.odoo.com/documentation/user/16.0/legal/licenses/licenses.html)
Company
-------
* 'Cybrosys Techno Solutions <https://cybrosys.com/>'__
Credits
-------
* 'Cybrosys Techno Solutions <https://cybrosys.com/>'__
Developer : Neethu UM
Contacts
--------
* Mail Contact : odoo@cybrosys.com
Bug Tracker
-----------
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Maintainer
==========
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com
Further information
===================
HTML Description: `<static/description/index.html>`__

23
sale_purchase_from_product/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import wizard

47
sale_purchase_from_product/__manifest__.py

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
{
'name': 'Sale/Purchase Orders from Products',
'version': '16.0.1.0.0',
'summary': 'Sale/Purchase Orders from Products',
'description': 'This module will help to create new sale/purchase orders using the selected products and '
'it will add the selected products to draft orders',
'category': 'Sales/Purchase',
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'license': 'LGPL-3',
'depends': ['base', 'sale', 'purchase'],
'data': [
'security/ir.model.access.csv',
'wizard/quick_create_wizard_views.xml',
'wizard/quick_purchase_order_wizard_views.xml',
'views/product_views.xml'
],
'images': [
'static/description/banner.png',
],
'installable': True,
'auto_install': False,
'application': False,
}

6
sale_purchase_from_product/doc/RELEASE_NOTES.md

@ -0,0 +1,6 @@
## Module <sale_purchase_from_product>
#### 17.01.2023
#### Version 16.0.1.0.0
#### ADD
- Initial commit for Sale/Purchase Orders from Products Module

5
sale_purchase_from_product/security/ir.model.access.csv

@ -0,0 +1,5 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_quick_sale_purchase_wizard,quick.sale.purchase.wizard,model_quick_sale_purchase_wizard,,1,1,1,1
access_quick_sale_line_wizard,quick.sale.line.wizard,model_quick_sale_line_wizard,,1,1,1,1
access_quick_purchase_wizard,quick.purchase.wizard,model_quick_purchase_wizard,,1,1,1,1
access_quick_purchase_line_wizard,quick.purchase.line.wizard,model_quick_purchase_line_wizard,,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_quick_sale_purchase_wizard quick.sale.purchase.wizard model_quick_sale_purchase_wizard 1 1 1 1
3 access_quick_sale_line_wizard quick.sale.line.wizard model_quick_sale_line_wizard 1 1 1 1
4 access_quick_purchase_wizard quick.purchase.wizard model_quick_purchase_wizard 1 1 1 1
5 access_quick_purchase_line_wizard quick.purchase.line.wizard model_quick_purchase_line_wizard 1 1 1 1

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
sale_purchase_from_product/static/description/assets/modules/5.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

BIN
sale_purchase_from_product/static/description/assets/screenshots/quick_purchase_create_view_wizard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

BIN
sale_purchase_from_product/static/description/assets/screenshots/quick_purchase_wizard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

BIN
sale_purchase_from_product/static/description/assets/screenshots/quick_sale_create_view_wizard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

BIN
sale_purchase_from_product/static/description/assets/screenshots/quick_sale_create_wizard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

BIN
sale_purchase_from_product/static/description/assets/screenshots/quick_sale_purchase.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

BIN
sale_purchase_from_product/static/description/assets/screenshots/quick_sale_wizard.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

BIN
sale_purchase_from_product/static/description/assets/screenshots/update_to_purchase_orders.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

BIN
sale_purchase_from_product/static/description/assets/screenshots/update_to_sales_orders.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

BIN
sale_purchase_from_product/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
sale_purchase_from_product/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

534
sale_purchase_from_product/static/description/index.html

@ -0,0 +1,534 @@
<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>
</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;">Sale/Purchase Orders from Products</h1>
<!-- 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 created/ update the sale or purchase orders by the selected products variants
</div>
</div>
<!-- END OF OVERVIEW SECTION -->
<!-- FEATURES SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/features.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Features
</h2>
</div>
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 col-md-6">
<div class="d-flex align-items-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;">Create new sale orders/purchase 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;">Update the existing Sale/Purchase orders</span>
</div>
</div>
</div>
</div>
<!-- END OF FEATURES SECTION -->
<!-- SCREENSHOTS SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="screenshots">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pictures.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Screenshots
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Quick Sale Order/Purchase Order
</h3>
<img src="assets/screenshots/quick_sale_purchase.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;">Create Sale Order
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Go to Product variants -> select any products -> click on 'Quick Sale Order' button and select the type as 'Create New Order'</p>
<img src="assets/screenshots/quick_sale_wizard.png" class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Fill the necessary fields to create the sale order, once you click on 'create' the order will be created</p>
<img src="assets/screenshots/quick_sale_create_wizard.png" class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">If you want to create and view the sale order, then after filling the fields click on the button 'Create and View'</p>
<img src="assets/screenshots/quick_sale_create_view_wizard.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;">Create Purchase Order
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Go to Product variants -> select any products -> click on 'Quick Purchase Order' button</p>
<img src="assets/screenshots/quick_purchase_wizard.png" class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Fill the necessary fields to create the purchase order, once you click on 'create' the order will be created,
If you want to create and view the purchase order, then after filling the fields click on the button 'Create and View'</p>
<img src="assets/screenshots/quick_purchase_create_view_wizard.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Update the Sale/Purchase orders
</h3>
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">In order to update an existing sale/purchase order with the selected product, the type needs to be set as 'Add to existing Orders'</p>
<img src="assets/screenshots/update_to_sales_orders.png" class="img-thumbnail">
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Quick update to purchase orders</p>
<img src="assets/screenshots/update_to_purchase_orders.png" class="img-thumbnail">
</div>
</div>
</div>
<!-- END OF SCREENSHOTS SECTION -->
<!-- RELATED PRODUCTS -->
<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/categories.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Related
Products
</h2>
</div>
<div class="row">
<div class="col-sm-12">
<div id="demo1" class="row carousel slide" data-ride="carousel">
<!-- The slideshow -->
<div class="carousel-inner" style="padding: 30px;">
<div class="carousel-item" style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/dynamic_accounts_report/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/1.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/custom_gantt_view/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/2.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/project_custom_gantt/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/3.png">
</div>
</a>
</div>
</div>
<div class="carousel-item active" style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/account_reports_xlsx/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/4.png">
</div>
</a>
</div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/base_accounting_kit/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/5.gif">
</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/15.0/hr_payroll_community/" target="_blank">
<div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" src="assets/modules/6.png">
</div>
</a>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev" style="width:35px; color:#000"> <span
class="carousel-control-prev-icon"><i class="fa fa-chevron-left" style="font-size:24px"></i></span>
</a> <a class="carousel-control-next" href="#demo1" data-slide="next" style="width:35px; color:#000">
<span class="carousel-control-next-icon"><i class="fa fa-chevron-right" style="font-size:24px"></i></span>
</a>
</div>
</div>
</div>
<!-- END OF 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 END OF OUR SERVICES -->
<!-- OUR INDUSTRIES -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/corporate.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our
Industries
</h2>
</div>
<div class="container my-5">
<div class="row">
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easily procure
and
sell your products</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Easy
configuration
and convivial experience</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/education-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
A platform for
educational management</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Plan, track and
schedule your operations</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Mobile
friendly,
awe-inspiring product pages</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Keep track of
services and invoice</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
Run your bar or
restaurant methodically</p>
</div>
</div>
<div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management
</h5>
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;">
An
all-inclusive
hotel management application</p>
</div>
</div>
</div>
</div>
<!-- END OF END OF OUR INDUSTRIES -->
<!-- SUPPORT -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/customer-support.png" />
</div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Support
</h2>
</div>
<div class="container mt-5">
<div class="row">
<div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4 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 -->

15
sale_purchase_from_product/views/product_views.xml

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record model="ir.ui.view" id="product_product_quick_create_tree_view">
<field name="name">product.product.quick.create.tree</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_product_tree_view"/>
<field name="arch" type="xml">
<xpath expr="//header/button[@name='action_open_label_layout']" position="after">
<button string="Quick Sale Order" name="%(sale_purchase_from_product.action_sale_purchase_quick_create)d" type="action"/>
<button string="Quick Purchase Order" name="%(sale_purchase_from_product.action_purchase_quick_create)d" type="action"/>
</xpath>
</field>
</record>
</odoo>

26
sale_purchase_from_product/wizard/__init__.py

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from . import quick_create_wizard
from . import quick_purchase_wizard
from . import quick_purchase_line_wizard
from . import quick_create_sale_line_wizard

34
sale_purchase_from_product/wizard/quick_create_sale_line_wizard.py

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models, api
class QuickSaleOrderLines(models.TransientModel):
_name = 'quick.sale.line.wizard'
_description = 'Quick Sale Lines Wizard'
product_id = fields.Many2one('product.product', string='Product', required=True)
product_uom_qty = fields.Float(string="Quantity")
price_unit = fields.Float(string="Unit Price", required=True)
tax_id = fields.Many2many(comodel_name='account.tax', string="Taxes")
order_id = fields.Many2one('quick.sale.purchase.wizard')

101
sale_purchase_from_product/wizard/quick_create_wizard.py

@ -0,0 +1,101 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models, api
class QuickCreateOrder(models.TransientModel):
_name = 'quick.sale.purchase.wizard'
_description = 'Quick Create Wizard'
def _sale_ids_domain(self):
"""list out only the draft orders"""
return [('state', 'in', ['draft', 'sent'])]
type = fields.Selection([('new_order', 'Create New Order'), ('existing_order', 'Add to existing Orders')],
required=True, default='new_order')
partner_id = fields.Many2one('res.partner', tring="Customer")
order_date = fields.Datetime(string="Order Date")
payment_term_id = fields.Many2one('account.payment.term', string="Payment Terms")
user_id = fields.Many2one('res.users', default=lambda self: self.env.user, required=True)
line_ids = fields.One2many('quick.sale.line.wizard', 'order_id', string="Sale Order Line")
sale_ids = fields.Many2many('sale.order', string="Sale Orders", domain=_sale_ids_domain)
@api.model
def default_get(self, fields):
res = super(QuickCreateOrder, self).default_get(fields)
active_records = self.env.context.get('active_ids', [])
products = self.env['product.product'].search([('id', 'in', active_records)])
wizard_line = [(5, 0, 0)]
for rec in products:
line = (0, 0, {
'product_id': rec.id,
'product_uom_qty': 1,
'price_unit': rec.lst_price,
'tax_id': rec.taxes_id.ids,
})
wizard_line.append(line)
res.update({
'line_ids': wizard_line})
return res
def action_update_order(self):
"""Update Sale Order"""
for order in self.sale_ids:
order.update({
'order_line': [(0, 0, {
'product_id': rec.product_id.id,
'product_uom_qty': rec.product_uom_qty,
'price_unit': rec.price_unit,
'tax_id': rec.tax_id.ids,
}) for rec in self.line_ids]
})
def action_create(self):
"""Create Sale Order"""
order = self.env['sale.order'].sudo().create({
'partner_id': self.partner_id.id,
'date_order': self.order_date if self.order_date else fields.datetime.now(),
'user_id': self.user_id.id,
'payment_term_id': self.payment_term_id.id,
'order_line': [(0, 0, {
'product_id': rec.product_id.id,
'product_uom_qty': rec.product_uom_qty,
'price_unit': rec.price_unit,
'tax_id': rec.tax_id.ids,
}) for rec in self.line_ids]
})
return order
def action_create_view(self):
"""Create and view the order created"""
order = self.action_create()
view = self.env['ir.model.data']._xmlid_lookup('sale.view_order_form')[2]
return {
'type': 'ir.actions.act_window',
'res_model': 'sale.order',
'res_id': order.id,
'view_mode': 'form',
'views': [(view, "form"), (False, "form")],
'view_id': view,
}

66
sale_purchase_from_product/wizard/quick_create_wizard_views.xml

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Quick create wizard view -->
<record model="ir.ui.view" id="quick_create_wizard_form">
<field name="name">Quick Create</field>
<field name="model">quick.sale.purchase.wizard</field>
<field name="arch" type="xml">
<form string="Quick Create">
<group>
<field name="type" widget="radio"/>
</group>
<group>
<group>
<field name="partner_id" attrs="{'invisible':[('type','=','existing_order')]}"/>
<field name="sale_ids" widget="many2many_tags" attrs="{'invisible':[('type','=','new_order')]}"/>
<field name="payment_term_id" attrs="{'invisible':[('type','=','existing_order')]}"/>
</group>
<group>
<field name="order_date" attrs="{'invisible':[('type','=','existing_order')]}"/>
<field name="user_id" attrs="{'invisible':[('type','=','existing_order')]}"/>
</group>
</group>
<notebook>
<page string="Order Line">
<field name="line_ids">
<tree editable="bottom">
<field name="product_id"/>
<field name="product_uom_qty"/>
<field name="price_unit"/>
<field name="tax_id" widget="many2many_tags"/>
</tree>
</field>
</page>
</notebook>
<footer>
<button name="action_create" type="object" string="Create" class="oe_highlight" confirm="Sales order created successfully"
attrs="{'invisible':[('type','=','existing_order')]}"/>
<button name="action_update_order" type="object" string="Update Order" class="oe_highlight" confirm="Sales orders updated successfully"
attrs="{'invisible':[('type','=','new_order')]}"/>
<button name="action_create_view" type="object" string="Create and View" class="oe_highlight"
attrs="{'invisible':[('type','=','existing_order')]}"/>
<button string="Cancel" class="oe_link" special="cancel" confirm="Do you want to Discard?"/>
</footer>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_sale_purchase_quick_create">
<field name="name">Sale/Purchase Quick Create</field>
<field name="res_model">quick.sale.purchase.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<!--Contextual action for quick create in product variant model-->
<!-- <record id="action_quick_sale_purchase_from_product" model="ir.actions.server">-->
<!-- <field name="name">Quick Create Orders</field>-->
<!-- <field name="model_id" ref="product.model_product_product"/>-->
<!-- <field name="binding_model_id" ref="product.model_product_product"/>-->
<!-- <field name="state">code</field>-->
<!-- <field name="code">-->
<!--&lt;!&ndash; if record:&ndash;&gt;-->
<!--&lt;!&ndash; action = False&ndash;&gt;-->
<!-- </field>-->
<!-- </record>-->
</odoo>

35
sale_purchase_from_product/wizard/quick_purchase_line_wizard.py

@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models, api
class QuickPurchaseOrderLines(models.TransientModel):
_name = 'quick.purchase.line.wizard'
_description = 'Quick Purchase Line Wizard'
order_id = fields.Many2one('quick.purchase.wizard')
product_id = fields.Many2one('product.product', string='Product', required=True)
product_qty = fields.Float(string="Quantity")
price_unit = fields.Float(string="Unit Price", required=True)
tax_id = fields.Many2many(comodel_name='account.tax', string="Taxes")

52
sale_purchase_from_product/wizard/quick_purchase_order_wizard_views.xml

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record model="ir.ui.view" id="quick_purchase_create_wizard_form">
<field name="name">Quick Purchase Order Create</field>
<field name="model">quick.purchase.wizard</field>
<field name="arch" type="xml">
<form string="Quick Create">
<group>
<field name="type" widget="radio"/>
</group>
<group>
<group>
<field name="partner_id" attrs="{'invisible':[('type','=','existing_order')]}"/>
<field name="purchase_ids" widget="many2many_tags" attrs="{'invisible':[('type','=','new_order')]}"/>
</group>
<group>
<field name="order_date" attrs="{'invisible':[('type','=','existing_order')]}"/>
<field name="user_id" attrs="{'invisible':[('type','=','existing_order')]}"/>
</group>
</group>
<notebook>
<page string="Order Line">
<field name="line_ids">
<tree editable="bottom">
<field name="product_id"/>
<field name="product_qty"/>
<field name="price_unit"/>
<field name="tax_id" widget="many2many_tags"/>
</tree>
</field>
</page>
</notebook>
<footer>
<button name="action_create" type="object" string="Create" class="oe_highlight" confirm="Purchase order created successfully"
attrs="{'invisible':[('type','=','existing_order')]}"/>
<button name="action_update_order" type="object" string="Update Order" class="oe_highlight" confirm="Purchase orders updated successfully"
attrs="{'invisible':[('type','=','new_order')]}"/>
<button name="action_create_view" type="object" string="Create and View" class="oe_highlight"
attrs="{'invisible':[('type','=','existing_order')]}"/>
<button string="Cancel" class="oe_link" special="cancel" confirm="Do you want to Discard?"/>
</footer>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_purchase_quick_create">
<field name="name">Purchase Quick Create</field>
<field name="res_model">quick.purchase.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</odoo>

98
sale_purchase_from_product/wizard/quick_purchase_wizard.py

@ -0,0 +1,98 @@
# -*- coding: utf-8 -*-
#############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
#
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
#
# You can modify it under the terms of the GNU LESSER
# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
#
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
# (LGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
from odoo import fields, models, api
class QuickPurchaseOrder(models.TransientModel):
_name = 'quick.purchase.wizard'
_description = 'Quick Purchase Wizard'
def _purchase_ids_domain(self):
return [('state', 'in', ['draft', 'sent'])]
type = fields.Selection([('new_order', 'Create New Order'), ('existing_order', 'Add to existing Orders')],
required=True, default='new_order')
partner_id = fields.Many2one('res.partner', tring="Vendor")
order_date = fields.Datetime(string="Order Date")
user_id = fields.Many2one('res.users', default=lambda self: self.env.user, required=True, string="Buyer")
line_ids = fields.One2many('quick.purchase.line.wizard', 'order_id', string="Sale Order Line")
purchase_ids = fields.Many2many('purchase.order', string="Purchase Orders", domain=_purchase_ids_domain)
@api.model
def default_get(self, fields):
res = super(QuickPurchaseOrder, self).default_get(fields)
active_records = self.env.context.get('active_ids', [])
products = self.env['product.product'].search([('id', 'in', active_records)])
wizard_line = [(5, 0, 0)]
for rec in products:
line = (0, 0, {
'product_id': rec.id,
'product_qty': 1,
'price_unit': rec.lst_price,
'tax_id': rec.taxes_id.ids,
})
wizard_line.append(line)
res.update({
'line_ids': wizard_line})
return res
def action_create(self):
"""Action Create"""
order = self.env['purchase.order'].sudo().create({
'partner_id': self.partner_id.id,
'date_order': self.order_date if self.order_date else fields.datetime.now(),
'user_id': self.user_id.id,
'order_line': [(0, 0, {
'product_id': rec.product_id.id,
'product_qty': rec.product_qty,
'price_unit': rec.price_unit,
'taxes_id': rec.tax_id.ids,
}) for rec in self.line_ids]
})
return order
def action_update_order(self):
"""Update the products to existing orders"""
for order in self.purchase_ids:
order.update({
'order_line': [(0, 0, {
'product_id': rec.product_id.id,
'product_qty': rec.product_qty,
'price_unit': rec.price_unit,
'taxes_id': rec.tax_id.ids,
}) for rec in self.line_ids]
})
def action_create_view(self):
"""Create and view the created orders"""
order = self.action_create()
view = self.env['ir.model.data']._xmlid_lookup('purchase.purchase_order_form')[2]
return {
'type': 'ir.actions.act_window',
'res_model': 'purchase.order',
'res_id': order.id,
'view_mode': 'form',
'views': [(view, "form"), (False, "form")],
'view_id': view,
}
Loading…
Cancel
Save