@ -0,0 +1,44 @@ |
|||||
|
.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg |
||||
|
:target: https://www.gnu.org/licenses/agpl-3.0-standalone.html |
||||
|
:alt: License: AGPL-3 |
||||
|
|
||||
|
Product Management System |
||||
|
========================== |
||||
|
|
||||
|
* This module helps in product management system. |
||||
|
|
||||
|
Configuration |
||||
|
============ |
||||
|
- No additional configuration required |
||||
|
|
||||
|
Company |
||||
|
------- |
||||
|
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ |
||||
|
|
||||
|
License |
||||
|
------- |
||||
|
General Public License, Version 3 (AGPL v3). |
||||
|
(https://www.gnu.org/licenses/agpl-3.0-standalone.html) |
||||
|
|
||||
|
Credits |
||||
|
------- |
||||
|
* Developer: (V16) Amaya Aravind EV, Ashwin A |
||||
|
* Contact: odoo@cybrosys.com |
||||
|
|
||||
|
Contacts |
||||
|
-------- |
||||
|
* Mail Contact : odoo@cybrosys.com |
||||
|
|
||||
|
Bug Tracker |
||||
|
----------- |
||||
|
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. |
||||
|
|
||||
|
Maintainer |
||||
|
========== |
||||
|
This module is maintained by Cybrosys Technologies. |
||||
|
|
||||
|
For support and more information, please visit https://www.cybrosys.com |
||||
|
|
||||
|
Further information |
||||
|
=================== |
||||
|
HTML Description: `<static/description/index.html>`__ |
@ -0,0 +1,22 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from . import wizard |
@ -0,0 +1,73 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
{ |
||||
|
'name': 'Product Management System', |
||||
|
'version': '16.0.1.0.0', |
||||
|
'category': 'Warehouse , Extra Tools', |
||||
|
'summary': """This module helps in product management system.""", |
||||
|
'description': """ Mass actions are operations that might be proceeded for |
||||
|
a number of product templates in batch. The tool offers multiple default |
||||
|
actions, among which you can select the required ones.""", |
||||
|
'author': 'Cybrosys Techno Solutions', |
||||
|
'company': 'Cybrosys Techno Solutions', |
||||
|
'maintainer': 'Cybrosys Techno Solutions', |
||||
|
'website': "https://www.cybrosys.com", |
||||
|
'depends': ['product', 'website_sale', 'purchase', 'stock'], |
||||
|
'data': [ |
||||
|
'security/product_management_system_groups.xml', |
||||
|
'security/ir.model.access.csv', |
||||
|
'views/product_management_system_views.xml', |
||||
|
'views/product_management_system_menus.xml', |
||||
|
'wizard/product_add_vendor.xml', |
||||
|
'wizard/product_category_change_views.xml', |
||||
|
'wizard/product_update_price_views.xml', |
||||
|
'wizard/product_make_purchasable_views.xml', |
||||
|
'wizard/product_make_salable_views.xml', |
||||
|
'wizard/product_delete_views.xml', |
||||
|
'wizard/product_alternative_views.xml', |
||||
|
'wizard/product_archive_views.xml', |
||||
|
'wizard/product_accessory_views.xml', |
||||
|
'wizard/product_optional_views.xml', |
||||
|
'wizard/product_invoice_views.xml', |
||||
|
'wizard/product_customer_tax_views.xml', |
||||
|
'wizard/product_vendor_tax_views.xml', |
||||
|
'wizard/product_publish_views.xml', |
||||
|
'wizard/product_category_website_views.xml', |
||||
|
'wizard/product_add_attribute_views.xml', |
||||
|
'wizard/product_change_tracking_views.xml', |
||||
|
'wizard/product_production_location_views.xml', |
||||
|
'wizard/product_inventory_location_views.xml', |
||||
|
'wizard/product_customer_lead_time_views.xml', |
||||
|
], |
||||
|
'assets': { |
||||
|
'web.assets_backend': [ |
||||
|
'product_management_system/static/src/css/**.css', |
||||
|
'product_management_system/static/src/xml/**.xml', |
||||
|
'product_management_system/static/src/js/**.js', |
||||
|
] |
||||
|
}, |
||||
|
'images': ['static/description/banner.jpg'], |
||||
|
'license': 'AGPL-3', |
||||
|
'installable': True, |
||||
|
'auto_install': False, |
||||
|
'application': True, |
||||
|
} |
@ -0,0 +1,7 @@ |
|||||
|
## Module <product_management_system> |
||||
|
|
||||
|
#### 04.05.2024 |
||||
|
#### Version 16.0.1.0.0 |
||||
|
#### ADD |
||||
|
|
||||
|
- Initial Commit for Product Management System |
|
@ -0,0 +1,8 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
<!-- New user group created for product management--> |
||||
|
<record id="user_product_management" model="res.groups"> |
||||
|
<field name="name">Product Management</field> |
||||
|
<field name="category_id" ref="base.module_category_usability"/> |
||||
|
</record> |
||||
|
</odoo> |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 733 B |
After Width: | Height: | Size: 911 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 673 B |
After Width: | Height: | Size: 878 B |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 839 B |
After Width: | Height: | Size: 427 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 589 B |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 967 B |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 92 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 71 KiB |
After Width: | Height: | Size: 71 KiB |
After Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 239 KiB |
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 226 KiB |
After Width: | Height: | Size: 236 KiB |
After Width: | Height: | Size: 216 KiB |
After Width: | Height: | Size: 221 KiB |
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 138 KiB |
After Width: | Height: | Size: 253 KiB |
After Width: | Height: | Size: 227 KiB |
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 229 KiB |
After Width: | Height: | Size: 226 KiB |
After Width: | Height: | Size: 216 KiB |
After Width: | Height: | Size: 231 KiB |
After Width: | Height: | Size: 218 KiB |
After Width: | Height: | Size: 830 KiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 16 KiB |
@ -0,0 +1,786 @@ |
|||||
|
<div style="background-color: #714B67; min-height: 600px; width: 100%; padding: 15px; position: relative;"> |
||||
|
<!-- TITLE BAR --> |
||||
|
<div class="d-flex align-items-center justify-content-between" |
||||
|
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;"> |
||||
|
<img src="assets/misc/logo.png" width="162" height="60" |
||||
|
style="width:auto !important; height:60px !important"/> |
||||
|
<div> |
||||
|
<div style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" |
||||
|
class="mr-2"> |
||||
|
<i class="fa fa-check mr-1"></i>Community |
||||
|
</div> |
||||
|
<div |
||||
|
style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" |
||||
|
class="mr-2"> |
||||
|
<i class="fa fa-check mr-1"></i>Enterprise |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF TITLE BAR --> |
||||
|
<div class="container"> |
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12 col-md-12 col-lg-12"> |
||||
|
<!-- APP HERO --> |
||||
|
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;"> |
||||
|
Product Management System |
||||
|
</h1> |
||||
|
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">This module helps in product management system.</p> |
||||
|
<!-- END OF APP HERO --> |
||||
|
<img src="./assets/screenshots/hero.png" |
||||
|
style="width: 75%; height: auto; position: absolute; margin-left: auto; margin-right: auto; top: 45%; left: 12%; right: auto;"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<!-- NAVIGATION SECTION --> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/compass.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Explore This |
||||
|
Module</h2> |
||||
|
</div> |
||||
|
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;"> |
||||
|
<div class="col-sm-12 col-md-6 my-3"> |
||||
|
<a href="#overview"> |
||||
|
<div class="d-flex justify-content-between align-items-center" |
||||
|
style="background-color: #f5f5f5; padding: 30px; width: 100%;"> |
||||
|
<div> |
||||
|
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span> |
||||
|
<span |
||||
|
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn more about this module.</span> |
||||
|
</div> |
||||
|
<img src="assets/misc/right-arrow.png" width="36" height="36"/> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-sm-12 col-md-6 my-3"> |
||||
|
<a href="#features"> |
||||
|
<div class="d-flex justify-content-between align-items-center" |
||||
|
style="background-color: #f5f5f5; padding: 30px; width: 100%;"> |
||||
|
<div> |
||||
|
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span> |
||||
|
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View |
||||
|
features of this |
||||
|
module</span> |
||||
|
</div> |
||||
|
<img src="assets/misc/right-arrow.png" width="36" height="36"/> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-sm-12 col-md-6 my-3"> |
||||
|
<a href="#screenshots"> |
||||
|
<div class="d-flex justify-content-between align-items-center" |
||||
|
style="background-color: #f5f5f5; padding: 30px; width: 100%;"> |
||||
|
<div> |
||||
|
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span> |
||||
|
<span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View |
||||
|
screenshots for this |
||||
|
module</span> |
||||
|
</div> |
||||
|
<img src="assets/misc/right-arrow.png" width="36" height="36"/> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF NAVIGATION SECTION --> |
||||
|
|
||||
|
<!-- OVERVIEW SECTION --> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" |
||||
|
id="overview"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/pie-chart.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Overview |
||||
|
</h2> |
||||
|
</div> |
||||
|
<div class="row" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> |
||||
|
<div class="col-sm-12 py-4"> |
||||
|
Mass actions and operations that might be proceeded for a number of |
||||
|
product templates in batch. |
||||
|
The tool offers multiple default actions, among which you can select the |
||||
|
required ones. |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF OVERVIEW SECTION --> |
||||
|
|
||||
|
<!-- FEATURES SECTION --> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" |
||||
|
id="features"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/features.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Features |
||||
|
</h2> |
||||
|
</div> |
||||
|
<div class="row" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> |
||||
|
<div class="col-sm-12 col-md-6"> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Change the product category of all selected items.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 30px; margin-bottom: 30px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Change the product customer lead time of all selected items.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Archive products in bulk.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Update the product sales price of all selected items.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Add product vendors for all selected items.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Make product salable and purchasable for all selected items.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Delete all selected products.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Publish or unpublish products in batch.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Add Alternative products for all selected items.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Add Accessory products for all selected items.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Add Optional products for all selected items.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Change invoice policy of all selected items.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Add Customer/Vendor taxes for all selected items.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Change website product category of all selected items.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Add Attribute & Variants for all selected items.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Change product tracking for all selected items.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-items-start" |
||||
|
style="margin-top: 40px; margin-bottom: 40px"> |
||||
|
<img src="assets/misc/check-box.png" class="mr-2"/> |
||||
|
<div> |
||||
|
<span style="display: block; font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Change Production/Inventory location for all selected items.</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF FEATURES SECTION --> |
||||
|
|
||||
|
<!-- SCREENSHOTS SECTION --> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px;" |
||||
|
id="screenshots"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/pictures.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Screenshots |
||||
|
</h2> |
||||
|
</div> |
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12"> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
User Configuration</h3> |
||||
|
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;">Settings -> Users -> Turn on Product Management </p> |
||||
|
<img src="assets/screenshots/16.png" class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Kanban View Of Products</h3> |
||||
|
<img src="assets/screenshots/1.png" class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
By selecting Products in kanban view a new list of buttons will be shown</h3> |
||||
|
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |
||||
|
We can perform different actions for the selected products.</p> |
||||
|
<img src="assets/screenshots/2.png" |
||||
|
class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Change Product Category</h3> |
||||
|
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |
||||
|
By clicking the change category button a wizard appear for changing category of selected products.</p> |
||||
|
<img src="assets/screenshots/3.png" |
||||
|
class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Change Customer Lead Time</h3> |
||||
|
<img src="assets/screenshots/4.png" |
||||
|
class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Archive Products</h3> |
||||
|
<p style="font-weight: 400; font-family: 'Montserrat', sans-serif; font-size: 14px;"> |
||||
|
<img src="assets/screenshots/5.png" |
||||
|
class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Update Sale Price Of Selected Products</h3> |
||||
|
<img src="assets/screenshots/6.png" |
||||
|
class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Add Vendors For Selected Products</h3> |
||||
|
<img src="assets/screenshots/7.png" |
||||
|
class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Make Product Salable</h3> |
||||
|
<img src="assets/screenshots/8.png" |
||||
|
class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Add Alternative Products For Selected Products</h3> |
||||
|
<img src="assets/screenshots/9.png" |
||||
|
class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Edit Invoice Policy Of Selected Products</h3> |
||||
|
<img src="assets/screenshots/10.png" |
||||
|
class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Change Customer Tax Of Selected Products</h3> |
||||
|
<img src="assets/screenshots/11.png" |
||||
|
class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Change Website Category Of Selected Products</h3> |
||||
|
<img src="assets/screenshots/12.png" |
||||
|
class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Add Product Attributes</h3> |
||||
|
<img src="assets/screenshots/13.png" |
||||
|
class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Change Product Tracking Method Of Selected Products</h3> |
||||
|
<img src="assets/screenshots/14.png" |
||||
|
class="img-thumbnail"> |
||||
|
</div> |
||||
|
<div style="display: block; margin: 30px auto;"> |
||||
|
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> |
||||
|
Change Production Location Of Selected Products</h3> |
||||
|
<img src="assets/screenshots/15.png" |
||||
|
class="img-thumbnail"> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF SCREENSHOTS SECTION --> |
||||
|
|
||||
|
<!-- SUGGESTED PRODUCTS --> |
||||
|
<div class="row"> |
||||
|
<div class="col-lg-12 d-flex flex-column justify-content-center" |
||||
|
style="text-align: center; padding: 2.5rem 1rem !important;"> |
||||
|
<h2 style="color: #212529 !important;">Suggested Products</h2> |
||||
|
<hr style="border: 3px solid #714B67 !important; background-color: #714B67 !important; width: 80px !important; margin-bottom: 2rem !important;"/> |
||||
|
|
||||
|
<div id="demo1" class="row carousel slide" data-ride="carousel"> |
||||
|
<!-- The slideshow --> |
||||
|
<div class="carousel-inner" style="padding: 30px;"> |
||||
|
<div class="carousel-item active" |
||||
|
style="min-height: 198.656px;"> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
||||
|
style="float:left"> |
||||
|
<a href="https://apps.odoo.com/apps/modules/16.0/low_stocks_product_alert/" |
||||
|
target="_blank"> |
||||
|
<div style="border-radius:10px"> |
||||
|
<img class="img img-responsive center-block" |
||||
|
style="border-radius: 0px;" |
||||
|
src="./assets/modules/1.png"> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
||||
|
style="float:left"> |
||||
|
<a href="/home/cybrosys/Downloads/low_stocks_product_alert-16.0.1.0.0/low_stocks_product_alert/static/description/banner.png" |
||||
|
target="_blank"> |
||||
|
<div style="border-radius:10px"> |
||||
|
<img class="img img-responsive center-block" |
||||
|
style="border-radius: 0px;" |
||||
|
src="./assets/modules/2.png"> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
||||
|
style="float:left"> |
||||
|
<a href="https://apps.odoo.com/apps/modules/16.0/stock_intercompany_transfer/" |
||||
|
target="_blank"> |
||||
|
<div style="border-radius:10px"> |
||||
|
<img class="img img-responsive center-block" |
||||
|
style="border-radius: 0px;" |
||||
|
src="./assets/modules/3.png"> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="carousel-item active" |
||||
|
style="min-height: 198.656px;"> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
||||
|
style="float:left"> |
||||
|
<a href="https://apps.odoo.com/apps/modules/16.0/automatic_invoice_and_post/" |
||||
|
target="_blank"> |
||||
|
<div style="border-radius:10px"> |
||||
|
<img class="img img-responsive center-block" |
||||
|
style="border-radius: 0px;" |
||||
|
src="./assets/modules/4.png"> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
||||
|
style="float:left"> |
||||
|
<a href="https://apps.odoo.com/apps/modules/16.0/hide_all_print_button/" |
||||
|
target="_blank"> |
||||
|
<div style="border-radius:10px"> |
||||
|
<img class="img img-responsive center-block" |
||||
|
style="border-radius: 0px;" |
||||
|
src="./assets/modules/5.png"> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
<div class="carousel-item active" |
||||
|
style="min-height: 198.656px;"> |
||||
|
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" |
||||
|
style="float:left"> |
||||
|
<a href="https://apps.odoo.com/apps/modules/16.0/merge_picking_orders/" |
||||
|
target="_blank"> |
||||
|
<div style="border-radius:10px"> |
||||
|
<img class="img img-responsive center-block" |
||||
|
style="border-radius: 0px;" |
||||
|
src="./assets/modules/6.png"> |
||||
|
</div> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- Left and right controls --> |
||||
|
<a class="carousel-control-prev" href="#demo1" |
||||
|
data-slide="prev" style="width:35px; color:#000"> <span |
||||
|
class="carousel-control-prev-icon"><i |
||||
|
class="fa fa-chevron-left" |
||||
|
style="font-size:24px"></i></span> |
||||
|
</a> <a class="carousel-control-next" href="#demo1" |
||||
|
data-slide="next" style="width:35px; color:#000"> |
||||
|
<span class="carousel-control-next-icon"><i |
||||
|
class="fa fa-chevron-right" |
||||
|
style="font-size:24px"></i></span> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF SUGGESTED PRODUCTS --> |
||||
|
|
||||
|
<!-- OUR SERVICES --> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/star.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Our Services |
||||
|
</h2> |
||||
|
</div> |
||||
|
<div class="container my-5"> |
||||
|
<div class="row"> |
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/cogs.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Customization</h6> |
||||
|
</div> |
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/wrench.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Implementation</h6> |
||||
|
</div> |
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/lifebuoy.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Support</h6> |
||||
|
</div> |
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/user.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Hire |
||||
|
Odoo |
||||
|
Developer</h6> |
||||
|
</div> |
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/puzzle.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Integration</h6> |
||||
|
</div> |
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/update.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Migration</h6> |
||||
|
</div> |
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/consultation.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Consultancy</h6> |
||||
|
</div> |
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/training.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Implementation</h6> |
||||
|
</div> |
||||
|
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> |
||||
|
<div class="d-flex justify-content-center align-items-center mx-3 my-3" |
||||
|
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;"> |
||||
|
<img src="assets/icons/license.png" class="img-responsive" |
||||
|
height="48px" width="48px"> |
||||
|
</div> |
||||
|
<h6 class="text-center" |
||||
|
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> |
||||
|
Odoo |
||||
|
Licensing Consultancy</h6> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF OUR SERVICES --> |
||||
|
|
||||
|
<!-- OUR INDUSTRIES --> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/corporate.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Our |
||||
|
Industries |
||||
|
</h2> |
||||
|
</div> |
||||
|
<div class="container my-5"> |
||||
|
<div class="row"> |
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="assets/icons/trading-black.png/" |
||||
|
class="img-responsive mb-3" height="48px" width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
Trading |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
Easily procure |
||||
|
and |
||||
|
sell your products</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="assets/icons/pos-black.png/" |
||||
|
class="img-responsive mb-3" height="48px" width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
POS |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
Easy |
||||
|
configuration |
||||
|
and convivial experience.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="assets/icons/education-black.png/" |
||||
|
class="img-responsive mb-3" height="48px" width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
Education |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
A platform for |
||||
|
educational management.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="assets/icons/manufacturing-black.png/" |
||||
|
class="img-responsive mb-3" height="48px" |
||||
|
width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
Manufacturing |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
Plan, track and |
||||
|
schedule your operations.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="./assets/icons/ecom-black.png/" |
||||
|
class="img-responsive mb-3" height="48px" width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
E-commerce & Website |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
Mobile |
||||
|
friendly, |
||||
|
awe-inspiring product pages.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="./assets/icons/service-black.png/" |
||||
|
class="img-responsive mb-3" height="48px" width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
Service Management |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
Keep track of |
||||
|
services and invoice.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="./assets/icons/restaurant-black.png/" |
||||
|
class="img-responsive mb-3" height="48px" width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
Restaurant |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
Run your bar or |
||||
|
restaurant methodically.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="col-lg-3"> |
||||
|
<div class="my-4 d-flex flex-column justify-content-center" |
||||
|
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> |
||||
|
<img src="./assets/icons/hotel-black.png/" |
||||
|
class="img-responsive mb-3" height="48px" width="48px"> |
||||
|
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> |
||||
|
Hotel Management |
||||
|
</h5> |
||||
|
<p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> |
||||
|
An |
||||
|
all-inclusive |
||||
|
hotel management application.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF OUR INDUSTRIES --> |
||||
|
|
||||
|
<!-- SUPPORT --> |
||||
|
<div class="d-flex align-items-center" |
||||
|
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> |
||||
|
<div class="d-flex justify-content-center align-items-center mr-2" |
||||
|
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> |
||||
|
<img src="assets/misc/customer-support.png"/> |
||||
|
</div> |
||||
|
<h2 class="mt-2" |
||||
|
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;"> |
||||
|
Support |
||||
|
</h2> |
||||
|
</div> |
||||
|
<div class="container mt-5"> |
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12 col-md-6"> |
||||
|
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> |
||||
|
<div class="mr-4" |
||||
|
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> |
||||
|
<img src="assets/misc/support.png" height="48" width="48" |
||||
|
style="width: 42px; height: 42px;"/> |
||||
|
</div> |
||||
|
<div> |
||||
|
<h4>Need Help?</h4> |
||||
|
<p style="line-height: 100%;">Got questions or need help? |
||||
|
Get in touch.</p> |
||||
|
<a href="mailto:odoo@cybrosys.com"> |
||||
|
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> |
||||
|
odoo@cybrosys.com</p> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="col-sm-12 col-md-6"> |
||||
|
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> |
||||
|
<div class="mr-4" |
||||
|
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> |
||||
|
<img src="assets/misc/whatsapp.png" height="52" width="52" |
||||
|
style="width: 52px; height: 52px;"/> |
||||
|
</div> |
||||
|
<div> |
||||
|
<h4>WhatsApp</h4> |
||||
|
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p> |
||||
|
<a href="https://api.whatsapp.com/send?phone=918606827707"> |
||||
|
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> |
||||
|
+91 86068 |
||||
|
27707</p> |
||||
|
</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="row"> |
||||
|
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center"> |
||||
|
<img src="assets/misc/logo.png" width="144" height="31" |
||||
|
style="width:144px; height: 31px; margin-top: 40px;"/> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- END OF SUPPORT --> |
@ -0,0 +1,3 @@ |
|||||
|
.o_cp_bottom_right{ |
||||
|
height: fit-content; |
||||
|
} |
@ -0,0 +1,364 @@ |
|||||
|
/** @odoo-module **/ |
||||
|
|
||||
|
var KanbanController = require('web.KanbanController'); |
||||
|
var KanbanView = require('web.KanbanView'); |
||||
|
var viewRegistry = require('web.view_registry'); |
||||
|
var products_selected = []; |
||||
|
|
||||
|
var KanbanButton = KanbanController.extend({ |
||||
|
// Extending KanbanController and Creating buttons and its functions
|
||||
|
buttons_template: 'button_in_kanban.button', |
||||
|
events: _.extend({}, KanbanController.prototype.events, { |
||||
|
'click .product_check_box': '_onSelectDocs', |
||||
|
'click .on_change_category': '_onChangeCategory', |
||||
|
'click .on_customer_lead_time_products': '_onCustLeadTimeProducts', |
||||
|
'click .on_archive_products': '_onArchiveProducts', |
||||
|
'click .on_update_price': '_onUpdatePrice', |
||||
|
'click .on_add_vendor': '_onAddVendor', |
||||
|
'click .on_make_salable': '_onMakeSalable', |
||||
|
'click .on_make_purchasable': '_onMakePurchasable', |
||||
|
'click .on_delete_products': '_onDeleteProducts', |
||||
|
'click .on_alternative_products': '_onAlternativeProducts', |
||||
|
'click .on_accessory_products': '_onAccessoryProducts', |
||||
|
'click .on_optional_products': '_onOptionalProducts', |
||||
|
'click .on_edit_invoice_policy_products': '_onEditInvoicePolicyProducts', |
||||
|
'click .on_add_cust_tax_products': '_onAddCustomerTaxProducts', |
||||
|
'click .on_add_vendor_tax_products': '_onAddVendorTaxProducts', |
||||
|
'click .on_publish_products': '_onPublishProducts', |
||||
|
'click .on_change_web_category_products': '_onWebCategChangeProducts', |
||||
|
'click .on_add_attribute_products': '_onAddAttributeProducts', |
||||
|
'click .on_change_tracking_products': '_onChangeTrackingProducts', |
||||
|
'click .change_production_location_products': '_onChangeProductionLocation', |
||||
|
'click .change_inventory_location_products': '_onChangeInventoryLocation', |
||||
|
}), |
||||
|
|
||||
|
start: function(){ |
||||
|
return this._super().then(function() {}) |
||||
|
}, |
||||
|
|
||||
|
_onSelectDocs: function(ev){ |
||||
|
// Function for selecting products and appending in the products_selected list
|
||||
|
var toast = $('.toast') |
||||
|
var checked = $(ev.target).is(':checked'); |
||||
|
var record_id =parseInt($(ev.target).data('id')); |
||||
|
if (checked){ |
||||
|
toast.addClass('show'); |
||||
|
toast.css("display","inline"); |
||||
|
products_selected.push(record_id); |
||||
|
} |
||||
|
else{ |
||||
|
let index = products_selected.indexOf(record_id); |
||||
|
products_selected.splice(index, 1) |
||||
|
if ( products_selected.length == 0){ |
||||
|
toast.css("display",""); |
||||
|
toast.removeClass('show'); |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
_onChangeCategory: function(ev){ |
||||
|
// Function for changing category of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Change Category', |
||||
|
res_model: 'product.category.change', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onCustLeadTimeProducts: function(ev){ |
||||
|
// Function for changing Customer Lead Time of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Change Customer Lead Time', |
||||
|
res_model: 'product.customer.lead.time', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onArchiveProducts: function(ev){ |
||||
|
// Function for changing Archive Product of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Archive Product', |
||||
|
res_model: 'product.archive', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onUpdatePrice: function(ev){ |
||||
|
// Function for changing Update Price of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Update Price', |
||||
|
res_model: 'product.update.price', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onAddVendor: function(ev){ |
||||
|
// Function for changing Add Vendor of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Add Vendor', |
||||
|
res_model: 'product.add.vendor', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onMakeSalable: function(ev){ |
||||
|
// Function for Make Salable of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Make Products Salable', |
||||
|
res_model: 'product.make.salable', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onMakePurchasable: function(ev){ |
||||
|
// Function for Make Purchasable of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Make Products Purchasable', |
||||
|
res_model: 'product.make.purchasable', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onDeleteProducts: function(ev){ |
||||
|
// Function for Deleting the selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Delete Product', |
||||
|
res_model: 'product.delete', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onPublishProducts : function(ev){ |
||||
|
// Function for Publish On Website of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Publish On Website', |
||||
|
res_model: 'product.publish', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onAlternativeProducts: function(ev){ |
||||
|
// Function for Adding Alternative Product of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Add Alternative Product', |
||||
|
res_model: 'product.alternative', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onAccessoryProducts: function(ev){ |
||||
|
// Function for Adding Accessory Product of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Add Accessory Product', |
||||
|
res_model: 'product.accessory', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onOptionalProducts: function(ev){ |
||||
|
// Function for Adding Optional Product of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Add Optional Product', |
||||
|
res_model: 'product.optional', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onEditInvoicePolicyProducts:function(ev){ |
||||
|
// Function for Editing Invoice Policy of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Edit Invoice Policy', |
||||
|
res_model: 'product.invoice', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onAddCustomerTaxProducts: function(ev){ |
||||
|
// Function for Changing Customer Tax of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Change Customer Tax', |
||||
|
res_model: 'product.customer.tax', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onAddVendorTaxProducts: function(ev){ |
||||
|
// Function for Changing Vendor Tax of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Change Vendor Tax', |
||||
|
res_model: 'product.vendor.tax', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onWebCategChangeProducts: function(ev){ |
||||
|
// Function for Changing Category On Website of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Change Category On Website', |
||||
|
res_model: 'product.category.website', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
_onAddAttributeProducts : function(ev){ |
||||
|
// Function for Adding Product Attributes of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Add Product Attributes', |
||||
|
res_model: 'product.add.attribute', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onChangeTrackingProducts: function(ev){ |
||||
|
// Function for Changing Product Tracking of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Change Product Tracking', |
||||
|
res_model: 'product.change.tracking', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onChangeProductionLocation: function(ev){ |
||||
|
// Function for Changing Production Location of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Change Production Location', |
||||
|
res_model: 'product.production.location', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
_onChangeInventoryLocation: function(ev){ |
||||
|
// Function for Changing Inventory Location of selected products
|
||||
|
this.do_action({ |
||||
|
type: 'ir.actions.act_window', |
||||
|
name: 'Change Inventory Location', |
||||
|
res_model: 'product.inventory.location', |
||||
|
view_mode: 'form', |
||||
|
views: [[false, 'form']], |
||||
|
target: 'new', |
||||
|
context: { |
||||
|
'default_product_ids': products_selected, |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
}); |
||||
|
|
||||
|
var ProductKanbanView = KanbanView.extend({ |
||||
|
config: _.extend({}, KanbanView.prototype.config, { |
||||
|
Controller: KanbanButton, |
||||
|
}), |
||||
|
}); |
||||
|
viewRegistry.add('product_management_kanban_view', ProductKanbanView); |
@ -0,0 +1,151 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<templates id="template" xml:space="preserve"> |
||||
|
<t t-name="button_in_kanban.button"> |
||||
|
<div class="new_container toast"> |
||||
|
<div style="padding-top:25px; display:flex;"> |
||||
|
<!-- Change Category Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_change_category" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Change Category</button> |
||||
|
<!-- Customer Lead Time Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_customer_lead_time_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Customer Lead Time</button> |
||||
|
<!-- Archive Products Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_archive_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Archive Products</button> |
||||
|
<!-- Update Sales Price Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_update_price" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Update Sales Price</button> |
||||
|
<!-- Add Vendor Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_add_vendor" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Add Vendor</button> |
||||
|
<!-- Make Salable Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_make_salable" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Make Salable</button> |
||||
|
<!-- Make Purchasable Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_make_purchasable" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Make Purchasable</button> |
||||
|
<!-- Delete Products Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_delete_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Delete Products</button> |
||||
|
<!-- Publish On Website Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_publish_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Publish On Website</button> |
||||
|
<!-- Add Alternative Products Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_alternative_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Add Alternative Products</button> |
||||
|
<!-- Add Accessory Products Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_accessory_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Add Accessory Products</button> |
||||
|
<!-- Add Optional Products Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_optional_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Add Optional Products</button> |
||||
|
<!-- Edit Invoice Policy Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_edit_invoice_policy_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Edit Invoice Policy</button> |
||||
|
<!-- Add Customer Taxes Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_add_cust_tax_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Add Customer Taxes</button> |
||||
|
<!-- Add Vendor Taxes Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_add_vendor_tax_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Add Vendor Taxes</button> |
||||
|
<!-- Change Website Category Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_change_web_category_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Change Website Category</button> |
||||
|
<!-- Add Attributes & Variants Button --> |
||||
|
|
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_add_attribute_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Add Attributes & Variants</button> |
||||
|
<!-- Change Product Tracking Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm on_change_tracking_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Change Product Tracking</button> |
||||
|
<!-- Change Production Location Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm change_production_location_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Change Production Location</button> |
||||
|
<!-- Change Inventory Location Button --> |
||||
|
<button name="cl" type="object" |
||||
|
class="btn btn-secondary btn-sm change_inventory_location_products" |
||||
|
style="width: 90px; padding-top: 10px; padding-left: 9px; |
||||
|
padding-right: 13px; padding-bottom: 5px; |
||||
|
border-radius: 11px; background: #714b67; |
||||
|
color: white; font-size: 11px;">Change Inventory Location</button> |
||||
|
<!-- Change Category Button --> |
||||
|
</div> |
||||
|
</div> |
||||
|
</t> |
||||
|
</templates> |
@ -0,0 +1,13 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
<!-- Root Menu for the module --> |
||||
|
<menuitem id="product_management_system_menu_root" |
||||
|
groups="product_management_system.user_product_management" |
||||
|
web_icon="product_management_system,static/description/icon.png" |
||||
|
name="Product Management" sequence="190"/> |
||||
|
<!-- Menus and submenus for the module --> |
||||
|
<menuitem id="product_template_menu_root" name="Product Management" |
||||
|
parent="product_management_system.product_management_system_menu_root" |
||||
|
action="product_management_system.product_template_action" |
||||
|
sequence="1"/> |
||||
|
</odoo> |
@ -0,0 +1,106 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<odoo> |
||||
|
<!-- Search Panel --> |
||||
|
<record id="product_template_view_search" model="ir.ui.view"> |
||||
|
<field name="name">product.template.search</field> |
||||
|
<field name="model">product.template</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<search string="Product Management"> |
||||
|
<searchpanel> |
||||
|
<field name="company_id" select="multi" string="Company" |
||||
|
icon="fa-cutlery" color="#875A7B" |
||||
|
enable_counters="1"/> |
||||
|
<field name="type" select="multi" string="Types" |
||||
|
icon="fa-th-large" color="#875A7B" |
||||
|
enable_counters="1"/> |
||||
|
<field name="categ_id" select="multi" string="Categories" |
||||
|
icon="fa-th-list" color="#875A7B" |
||||
|
enable_counters="1"/> |
||||
|
</searchpanel> |
||||
|
</search> |
||||
|
</field> |
||||
|
</record> |
||||
|
<!-- Kanban View --> |
||||
|
<record id="product_template_view_kanban" model="ir.ui.view"> |
||||
|
<field name="name">Product.template.view.kanban</field> |
||||
|
<field name="model">product.template</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<kanban sample="1" js_class="product_management_kanban_view"> |
||||
|
<field name="id"/> |
||||
|
<field name="product_variant_count"/> |
||||
|
<field name="currency_id"/> |
||||
|
<field name="activity_state"/> |
||||
|
<progressbar field="activity_state" |
||||
|
colors='{"planned": "success", "today": "warning", "overdue": "danger"}'/> |
||||
|
<templates> |
||||
|
<t t-name="kanban-box"> |
||||
|
<div class="oe_kanban_card oe_kanban_global_click" style="width:430px;"> |
||||
|
<div class="o_kanban_image me-1"> |
||||
|
<img t-att-src="kanban_image('product.template', 'image_128', record.id.raw_value)" |
||||
|
alt="Product" class="o_image_64_contain"/> |
||||
|
</div> |
||||
|
<div class="oe_kanban_details"> |
||||
|
<div class="o_kanban_record_top mb-0"> |
||||
|
<div class="o_kanban_record_headings"> |
||||
|
<strong class="o_kanban_record_title" style="font-size:large;"> |
||||
|
<field name="priority" |
||||
|
widget="priority"/> |
||||
|
<field name="name" /> |
||||
|
</strong> |
||||
|
<t t-if="record.default_code.value"> |
||||
|
[<field name="default_code"/>] |
||||
|
</t> |
||||
|
</div> |
||||
|
<input type="checkbox" class="product_check_box" |
||||
|
t-attf-id="{{record.id.value}}" |
||||
|
t-att-data-id="record.id.value" style="height:20px;width:20px;"/> |
||||
|
</div> |
||||
|
<br/> |
||||
|
Category: <strong><field name="categ_id"/></strong> |
||||
|
<div t-if="record.product_variant_count.value > 1" |
||||
|
groups="product.group_product_variant"> |
||||
|
<strong> |
||||
|
<t t-esc="record.product_variant_count.value"/> |
||||
|
Variants |
||||
|
</strong> |
||||
|
</div> |
||||
|
<div name="product_lst_price" class="mt-1"> |
||||
|
Price:<strong> |
||||
|
<field name="list_price" widget="monetary" |
||||
|
options="{'currency_field': 'currency_id', 'field_digits': True}"/> |
||||
|
</strong> |
||||
|
</div> |
||||
|
<div> |
||||
|
Type : <strong><field name="type"/></strong><br/> |
||||
|
Invoice Policy : <strong><field name="invoice_policy"/> </strong><br/> |
||||
|
<strong><field name="sale_ok"/></strong> |
||||
|
Can be sold<br/> |
||||
|
<strong><field name="purchase_ok"/></strong> |
||||
|
Can be Purchased<br/> |
||||
|
<strong><field name="is_published"/></strong> |
||||
|
Website Published |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</t> |
||||
|
</templates> |
||||
|
</kanban> |
||||
|
</field> |
||||
|
</record> |
||||
|
<!-- Kanban View Action --> |
||||
|
<record id="product_template_action" model="ir.actions.act_window"> |
||||
|
<field name="name">Product Management</field> |
||||
|
<field name="type">ir.actions.act_window</field> |
||||
|
<field name="res_model">product.template</field> |
||||
|
<field name="view_mode">kanban</field> |
||||
|
<field name="view_id" |
||||
|
ref="product_management_system.product_template_view_kanban"/> |
||||
|
<field name="search_view_id" |
||||
|
ref="product_management_system.product_template_view_search"/> |
||||
|
<field name="help" type="html"> |
||||
|
<p class="o_view_nocontent_smiling_face"> |
||||
|
Create a new product |
||||
|
</p> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,41 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from . import product_accessory |
||||
|
from . import product_add_attribute |
||||
|
from . import product_add_vendor |
||||
|
from . import product_alternative |
||||
|
from . import product_archive |
||||
|
from . import product_category_change |
||||
|
from . import product_category_website |
||||
|
from . import product_change_tracking |
||||
|
from . import product_customer_lead_time |
||||
|
from . import product_customer_tax |
||||
|
from . import product_delete |
||||
|
from . import product_inventory_location |
||||
|
from . import product_invoice |
||||
|
from . import product_make_purchasable |
||||
|
from . import product_make_salable |
||||
|
from . import product_optional |
||||
|
from . import product_production_location |
||||
|
from . import product_publish |
||||
|
from . import product_update_price |
||||
|
from . import product_vendor_tax |
@ -0,0 +1,47 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductAccessory(models.TransientModel): |
||||
|
""" |
||||
|
Model for adding Accessory Products |
||||
|
""" |
||||
|
_name = 'product.accessory' |
||||
|
_description = 'Product Accessory' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
accessory_ids = fields.Many2many('product.product', |
||||
|
string="Accessory Products", |
||||
|
help='Products wanted to added as Accessory Products') |
||||
|
|
||||
|
def action_add_accessory_products(self): |
||||
|
""" |
||||
|
Function for adding Accessory Products for the selected products |
||||
|
""" |
||||
|
if self.product_ids and self.accessory_ids: |
||||
|
for products in self.product_ids: |
||||
|
for items in self.accessory_ids: |
||||
|
products.accessory_product_ids = [ |
||||
|
fields.Command.link(items.id)] |
@ -0,0 +1,22 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Product Accessory Form View --> |
||||
|
<record id="product_accessory_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.accessory.view.form</field> |
||||
|
<field name="model">product.accessory</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Accessory Product"> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
<field name="accessory_ids" widget="many2many_tags"/> |
||||
|
</group> |
||||
|
<footer> |
||||
|
<button name="action_add_accessory_products" string="SAVE" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="Cancel" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,69 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductAddAttribute(models.TransientModel): |
||||
|
""" |
||||
|
Model for adding Attributes and Variants |
||||
|
""" |
||||
|
_name = 'product.add.attribute' |
||||
|
_description = 'Product Add Attribute' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
attribute_line_ids = fields.One2many('product.management.attribute', |
||||
|
'wizard_id', |
||||
|
string="Product Attributes", |
||||
|
help='Attribute Lines') |
||||
|
|
||||
|
def action_add_product_attributes(self): |
||||
|
""" |
||||
|
Function for adding Attributes and Variants for Selected Products |
||||
|
""" |
||||
|
if self.product_ids and self.attribute_line_ids: |
||||
|
for products in self.product_ids: |
||||
|
for line in self.attribute_line_ids: |
||||
|
products.attribute_line_ids = [fields.Command.create({ |
||||
|
'attribute_id': line.attribute_id.id, |
||||
|
'value_ids': line.value_ids, |
||||
|
})] |
||||
|
|
||||
|
|
||||
|
class ProductAttribute(models.TransientModel): |
||||
|
""" |
||||
|
Model for attribute_lines for the model product.add.attribute |
||||
|
""" |
||||
|
_name = 'product.management.attribute' |
||||
|
_description = 'Product Attributes' |
||||
|
|
||||
|
attribute_id = fields.Many2one('product.attribute', |
||||
|
string='Attribute', |
||||
|
help='Attribute ID') |
||||
|
value_ids = fields.Many2many('product.attribute.value', |
||||
|
string='Values', |
||||
|
help='Attribute Values', |
||||
|
domain="[('attribute_id','=',attribute_id)]") |
||||
|
wizard_id = fields.Many2one('product.add.attribute', |
||||
|
string='ID', |
||||
|
help='Wizard ID') |
@ -0,0 +1,31 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Product Add Attribute Form View--> |
||||
|
<record id="product_add_attribute_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.add.attribute.view.form</field> |
||||
|
<field name="model">product.add.attribute</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Product Attributes"> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
</group> |
||||
|
<notebook> |
||||
|
<page string="Attributes"> |
||||
|
<field name="attribute_line_ids" widget="one2many"> |
||||
|
<tree editable="bottom"> |
||||
|
<field name="attribute_id"/> |
||||
|
<field name="value_ids" widget="many2many_tags"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</page> |
||||
|
</notebook> |
||||
|
<footer> |
||||
|
<button name="action_add_product_attributes" string="SAVE" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="Cancel" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,68 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductAddVendor(models.TransientModel): |
||||
|
""" |
||||
|
Model for adding seller_ids (product vendors) |
||||
|
""" |
||||
|
_name = 'product.add.vendor' |
||||
|
_description = 'Product Add Vendors' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
vendor_ids = fields.One2many('product.vendor', 'wizard_id', |
||||
|
string="Product Attributes", |
||||
|
help='Product Vendors') |
||||
|
|
||||
|
def action_add_product_vendors(self): |
||||
|
""" |
||||
|
Function for adding seller_ids (product vendors) for Selected Products |
||||
|
""" |
||||
|
if self.product_ids and self.vendor_ids: |
||||
|
for products in self.product_ids: |
||||
|
for vendor in self.vendor_ids: |
||||
|
products.seller_ids = [fields.Command.create({ |
||||
|
'partner_id': vendor.partner_id.id, |
||||
|
'price': vendor.price, |
||||
|
'currency_id': vendor.currency_id.id, |
||||
|
'delay': vendor.delay, |
||||
|
})] |
||||
|
|
||||
|
|
||||
|
class ProductAttribute(models.TransientModel): |
||||
|
_name = 'product.vendor' |
||||
|
_description = 'Product Vendors' |
||||
|
|
||||
|
partner_id = fields.Many2one('res.partner', |
||||
|
string='Vendor', |
||||
|
help='Partner ID') |
||||
|
price = fields.Float(string='Price', help='Price', |
||||
|
required=True) |
||||
|
delay = fields.Integer(string='Delivery Lead Time', |
||||
|
help='Delivery Lead Time', required=True) |
||||
|
currency_id = fields.Many2one('res.currency', string='Currency', |
||||
|
help='Currency', required=True) |
||||
|
wizard_id = fields.Many2one('product.add.vendor', string='ID', |
||||
|
help='Wizard ID') |
@ -0,0 +1,33 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Product Add Vendor Form View --> |
||||
|
<record id="product_add_vendor_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.add.vendor.view.form</field> |
||||
|
<field name="model">product.add.vendor</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Product Add Vendor"> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
</group> |
||||
|
<notebook> |
||||
|
<page string="Vendors"> |
||||
|
<field name="vendor_ids" widget="one2many"> |
||||
|
<tree editable="bottom"> |
||||
|
<field name="partner_id"/> |
||||
|
<field name="currency_id"/> |
||||
|
<field name="price"/> |
||||
|
<field name="delay"/> |
||||
|
</tree> |
||||
|
</field> |
||||
|
</page> |
||||
|
</notebook> |
||||
|
<footer> |
||||
|
<button name="action_add_product_vendors" string="SAVE" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="Cancel" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,49 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductAlternative(models.TransientModel): |
||||
|
""" |
||||
|
Model for adding alternative products |
||||
|
""" |
||||
|
_name = 'product.alternative' |
||||
|
_description = 'Alternative Product' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
alternative_ids = fields.Many2many('product.template', |
||||
|
'product_management_alternative_rel', |
||||
|
string="Alternative Products", |
||||
|
help='Alternative Products', |
||||
|
domain="[('id', 'not in', product_ids)]") |
||||
|
|
||||
|
def action_add_alternative_products(self): |
||||
|
""" |
||||
|
Function for adding alternative products for Selected Products |
||||
|
""" |
||||
|
if self.product_ids and self.alternative_ids: |
||||
|
for products in self.product_ids: |
||||
|
for items in self.alternative_ids: |
||||
|
products.alternative_product_ids = [ |
||||
|
fields.Command.link(items.id)] |
@ -0,0 +1,22 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Product Alternative Form View--> |
||||
|
<record id="product_alternative_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.alternative.view.form</field> |
||||
|
<field name="model">product.alternative</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Alternative Product"> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
<field name="alternative_ids" widget="many2many_tags"/> |
||||
|
</group> |
||||
|
<footer> |
||||
|
<button name="action_add_alternative_products" string="SAVE" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="Cancel" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,44 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductArchive(models.TransientModel): |
||||
|
""" |
||||
|
Model for archiving products |
||||
|
""" |
||||
|
_name = 'product.archive' |
||||
|
_description = 'Archive Products' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
|
||||
|
def action_archive_product(self): |
||||
|
""" |
||||
|
Function for archiving Selected Products |
||||
|
""" |
||||
|
if self.product_ids: |
||||
|
for products in self.product_ids: |
||||
|
products.write({ |
||||
|
'active': False |
||||
|
}) |
@ -0,0 +1,22 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Product Archive Form View --> |
||||
|
<record id="product_archive_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.archive.view.form</field> |
||||
|
<field name="model">product.archive</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Archive Product"> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
</group> |
||||
|
<h3>Do you want to make these products Archive?</h3> |
||||
|
<footer> |
||||
|
<button name="action_archive_product" string="YES" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="Cancel" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,47 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductCategoryChange(models.TransientModel): |
||||
|
""" |
||||
|
Model for changing category |
||||
|
""" |
||||
|
_name = 'product.category.change' |
||||
|
_description = 'Change Product Category' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
category_id = fields.Many2one('product.category', |
||||
|
string='New Category', |
||||
|
help='Category') |
||||
|
|
||||
|
def action_product_category_change_confirm(self): |
||||
|
""" |
||||
|
Function for changing category of Selected Products |
||||
|
""" |
||||
|
if self.product_ids and self.category_id: |
||||
|
for rec in self.product_ids: |
||||
|
rec.write({ |
||||
|
'categ_id': self.category_id |
||||
|
}) |
@ -0,0 +1,26 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Product Category Change Form View --> |
||||
|
<record id="product_category_change_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.category.change.view.form</field> |
||||
|
<field name="model">product.category.change</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Change Category"> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="category_id"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
<footer> |
||||
|
<button name="action_product_category_change_confirm" string="Confirm" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="Cancel" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,46 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductWebsiteCategory(models.TransientModel): |
||||
|
""" |
||||
|
Model for changing public_categ_ids (Website Category) |
||||
|
""" |
||||
|
_name = 'product.category.website' |
||||
|
_description = 'Product Website Category' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
public_categ_ids = fields.Many2many('product.public.category', |
||||
|
string="Website Product Category", |
||||
|
help='Select Product Category In Website') |
||||
|
|
||||
|
def action_change_website_category(self): |
||||
|
""" |
||||
|
Function for changing public_categ_ids (Website Category) of Selected Products |
||||
|
""" |
||||
|
if self.product_ids and self.public_categ_ids: |
||||
|
for products in self.product_ids: |
||||
|
for items in self.public_categ_ids: |
||||
|
products.public_categ_ids = [fields.Command.link(items.id)] |
@ -0,0 +1,22 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Product Category Website Form View --> |
||||
|
<record id="product_category_website_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.category.website.view.form</field> |
||||
|
<field name="model">product.category.website</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Website Category Product"> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
<field name="public_categ_ids" widget="many2many_tags"/> |
||||
|
</group> |
||||
|
<footer> |
||||
|
<button name="action_change_website_category" string="SAVE" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="Cancel" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,49 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductChangeTracking(models.TransientModel): |
||||
|
""" |
||||
|
Model for changing tracking method |
||||
|
""" |
||||
|
_name = 'product.change.tracking' |
||||
|
_description = 'Change Product Tracking Method' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
tracking = fields.Selection([ |
||||
|
('serial', 'By Unique Serial Number'), |
||||
|
('lot', 'By Lots'), |
||||
|
('none', 'No Tracking')], |
||||
|
string='Tracking', |
||||
|
help='Select a tracking type', |
||||
|
default='none', required=True) |
||||
|
|
||||
|
def action_change_product_tracking(self): |
||||
|
""" |
||||
|
Function for changing tracking method of selected products |
||||
|
""" |
||||
|
if self.product_ids: |
||||
|
for products in self.product_ids: |
||||
|
products.write({'tracking': self.tracking}) |
@ -0,0 +1,22 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Product Change Tracking Form View --> |
||||
|
<record id="product_change_tracking_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.change.tracking.view.form</field> |
||||
|
<field name="model">product.change.tracking</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Change Product Invoice Policy"> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
<field name="tracking"/> |
||||
|
</group> |
||||
|
<footer> |
||||
|
<button name="action_change_product_tracking" string="SAVE" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="Cancel" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,44 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductCustomerLeadTime(models.TransientModel): |
||||
|
""" |
||||
|
Model for changing sale_delay (Customer Lead Time) |
||||
|
""" |
||||
|
_name = 'product.customer.lead.time' |
||||
|
_description = 'Product Customer Lead Time' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
sale_delay = fields.Float(string='Customer Lead Time', |
||||
|
help='Delivery lead time in days') |
||||
|
|
||||
|
def action_change_customer_lead_time(self): |
||||
|
""" |
||||
|
Function for changing sale_delay (Customer Lead Time) of Selected Products |
||||
|
""" |
||||
|
if self.product_ids and self.sale_delay != 0: |
||||
|
for products in self.product_ids: |
||||
|
products.write({'sale_delay': self.sale_delay}) |
@ -0,0 +1,22 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Product Customer Lead Time Form View --> |
||||
|
<record id="product_customer_lead_time_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.customer.lead.time.view.form</field> |
||||
|
<field name="model">product.customer.lead.time</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Change Customer Lead Time"> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
<field name="sale_delay"/> |
||||
|
</group> |
||||
|
<footer> |
||||
|
<button name="action_change_customer_lead_time" string="YES" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="Cancel" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,47 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductCustomerTax(models.TransientModel): |
||||
|
""" |
||||
|
Model for changing tax_ids (Customer Tax) |
||||
|
""" |
||||
|
_name = 'product.customer.tax' |
||||
|
_description = 'Product Customer Tax' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
tax_ids = fields.Many2many('account.tax', |
||||
|
domain="[('type_tax_use', '=', 'sale')]", |
||||
|
string="Customer Tax", |
||||
|
help='Customer Tax') |
||||
|
|
||||
|
def action_change_customer_tax(self): |
||||
|
""" |
||||
|
Function for changing tax_ids (Customer Tax) of selected products |
||||
|
""" |
||||
|
if self.product_ids and self.tax_ids: |
||||
|
for products in self.product_ids: |
||||
|
for items in self.tax_ids: |
||||
|
products.taxes_id = [fields.Command.link(items.id)] |
@ -0,0 +1,26 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Product Category Tax Form View --> |
||||
|
<record id="product_customer_tax_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.customer.tax.view.form</field> |
||||
|
<field name="model">product.customer.tax</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Change Category"> |
||||
|
<group> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
</group> |
||||
|
<group> |
||||
|
<field name="tax_ids" widget="many2many_tags"/> |
||||
|
</group> |
||||
|
</group> |
||||
|
<footer> |
||||
|
<button name="action_change_customer_tax" string="Confirm" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="Cancel" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,42 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductDelete(models.TransientModel): |
||||
|
""" |
||||
|
Model for deleting products |
||||
|
""" |
||||
|
_name = 'product.delete' |
||||
|
_description = 'Product Delete' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
|
||||
|
def action_delete_product(self): |
||||
|
""" |
||||
|
Function for deleting selected products |
||||
|
""" |
||||
|
if self.product_ids: |
||||
|
for products in self.product_ids: |
||||
|
products.unlink() |
@ -0,0 +1,22 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Product Delete Form View --> |
||||
|
<record id="product_delete_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.delete.view.form</field> |
||||
|
<field name="model">product.delete</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Delete Product"> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
</group> |
||||
|
<h3>Do you want to make these products Delete?</h3> |
||||
|
<footer> |
||||
|
<button name="action_delete_product" string="YES" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="Cancel" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,47 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductInventoryLocation(models.TransientModel): |
||||
|
""" |
||||
|
Model for changing product inventory location |
||||
|
""" |
||||
|
_name = 'product.inventory.location' |
||||
|
_description = 'Product Inventory Location' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
inventory_location_id = fields.Many2one('stock.location', |
||||
|
string='Inventory Location', |
||||
|
help='Inventory location of the products', |
||||
|
domain="[('usage','=','inventory')]") |
||||
|
|
||||
|
def action_change_inventory_location(self): |
||||
|
""" |
||||
|
Function for changing product inventory location of selected products |
||||
|
""" |
||||
|
if self.product_ids and self.inventory_location_id: |
||||
|
for products in self.product_ids: |
||||
|
products.write( |
||||
|
{'property_stock_inventory': self.inventory_location_id}) |
@ -0,0 +1,23 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Product Inventory Location Form View --> |
||||
|
<record id="product_inventory_location_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.inventory.location.view.form</field> |
||||
|
<field name="model">product.inventory.location</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Change Product Inventory Location"> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
<field name="inventory_location_id"/> |
||||
|
</group> |
||||
|
<footer> |
||||
|
<button name="action_change_inventory_location" string="SAVE" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="Cancel" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
|
||||
|
</odoo> |
@ -0,0 +1,47 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductInvoice(models.TransientModel): |
||||
|
""" |
||||
|
Model for changing invoice policy |
||||
|
""" |
||||
|
_name = 'product.invoice' |
||||
|
_description = 'Product Invoice' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
invoice_policy = fields.Selection([ |
||||
|
('order', 'Ordered Quantities'), |
||||
|
('delivery', 'Delivered Quantities')], |
||||
|
string='Invoicing Policy', help='Invoice policy of the product', |
||||
|
default='order', required=True) |
||||
|
|
||||
|
def action_change_invoice_policy_products(self): |
||||
|
""" |
||||
|
Function for changing invoice policy of selected products |
||||
|
""" |
||||
|
if self.product_ids: |
||||
|
for products in self.product_ids: |
||||
|
products.write({'invoice_policy': self.invoice_policy}) |
@ -0,0 +1,22 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Product Invoice Form View --> |
||||
|
<record id="product_invoice_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.invoice.view.form</field> |
||||
|
<field name="model">product.invoice</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Change Product Invoice Policy"> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
<field name="invoice_policy"/> |
||||
|
</group> |
||||
|
<footer> |
||||
|
<button name="action_change_invoice_policy_products" string="SAVE" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="Cancel" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,54 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductMakePurchasable(models.TransientModel): |
||||
|
""" |
||||
|
Model for making product purchasable |
||||
|
""" |
||||
|
_name = 'product.make.purchasable' |
||||
|
_description = 'Make Product Purchasable' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
|
||||
|
def action_product_make_purchasable_confirm(self): |
||||
|
""" |
||||
|
Function for making product purchasable |
||||
|
""" |
||||
|
if self.product_ids: |
||||
|
for rec in self.product_ids: |
||||
|
rec.write({ |
||||
|
'purchase_ok': True |
||||
|
}) |
||||
|
|
||||
|
def action_product_make_purchasable_false(self): |
||||
|
""" |
||||
|
Function for making product not purchasable |
||||
|
""" |
||||
|
if self.product_ids: |
||||
|
for rec in self.product_ids: |
||||
|
rec.write({ |
||||
|
'purchase_ok': False |
||||
|
}) |
@ -0,0 +1,24 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Make Product Purchasable Form View --> |
||||
|
<record id="product_make_purchasable_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.make.purchasable.view.form</field> |
||||
|
<field name="model">product.make.purchasable</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Product Purchasable"> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
</group> |
||||
|
<h3>Do you want to make these products purchasable?</h3> |
||||
|
<footer> |
||||
|
<button name="action_product_make_purchasable_confirm" string="Yes" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button name="action_product_make_purchasable_false" string="NO" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="CLOSE" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,54 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductMakeSaleable(models.TransientModel): |
||||
|
""" |
||||
|
Model for making product Salable |
||||
|
""" |
||||
|
_name = 'product.make.salable' |
||||
|
_description = 'Make Product Salable' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
|
||||
|
def action_product_make_salable_confirm(self): |
||||
|
""" |
||||
|
Function for making product Salable |
||||
|
""" |
||||
|
if self.product_ids: |
||||
|
for rec in self.product_ids: |
||||
|
rec.write({ |
||||
|
'sale_ok': True |
||||
|
}) |
||||
|
|
||||
|
def action_product_make_salable_false(self): |
||||
|
""" |
||||
|
Function for making product not Salable |
||||
|
""" |
||||
|
if self.product_ids: |
||||
|
for rec in self.product_ids: |
||||
|
rec.write({ |
||||
|
'sale_ok': False |
||||
|
}) |
@ -0,0 +1,24 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<odoo> |
||||
|
<!-- Make Product Salable Form View --> |
||||
|
<record id="product_make_salable_view_form" model="ir.ui.view"> |
||||
|
<field name="name">product.make.salable.view.form</field> |
||||
|
<field name="model">product.make.salable</field> |
||||
|
<field name="arch" type="xml"> |
||||
|
<form string="Product Salable"> |
||||
|
<group> |
||||
|
<field name="product_ids" widget="many2many_tags"/> |
||||
|
</group> |
||||
|
<h3>Do you want to make these products salable?</h3> |
||||
|
<footer> |
||||
|
<button name="action_product_make_salable_confirm" string="Yes" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button name="action_product_make_salable_false" string="NO" |
||||
|
class="btn-primary" type="object"/> |
||||
|
<button string="CLOSE" class="btn-secondary" |
||||
|
special="cancel"/> |
||||
|
</footer> |
||||
|
</form> |
||||
|
</field> |
||||
|
</record> |
||||
|
</odoo> |
@ -0,0 +1,49 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
################################################################################ |
||||
|
# |
||||
|
# Cybrosys Technologies Pvt. Ltd. |
||||
|
# |
||||
|
# Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). |
||||
|
# Author: Cybrosys Technologies (<https://www.cybrosys.com>) |
||||
|
# |
||||
|
# You can modify it under the terms of the GNU AFFERO |
||||
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. |
||||
|
# |
||||
|
# This program is distributed in the hope that it will be useful, |
||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. |
||||
|
# |
||||
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE |
||||
|
# (AGPL v3) along with this program. |
||||
|
# If not, see <http://www.gnu.org/licenses/>. |
||||
|
# |
||||
|
################################################################################ |
||||
|
from odoo import fields, models |
||||
|
|
||||
|
|
||||
|
class ProductOptional(models.TransientModel): |
||||
|
""" |
||||
|
Model for adding optional products |
||||
|
""" |
||||
|
_name = 'product.optional' |
||||
|
_description = 'Optional Product' |
||||
|
|
||||
|
product_ids = fields.Many2many('product.template', |
||||
|
string='Selected Products', |
||||
|
help='Products which are selected') |
||||
|
optional_ids = fields.Many2many('product.template', |
||||
|
string="Optional Products", |
||||
|
help='Optional Products', |
||||
|
relation="product_management_optional_rel", |
||||
|
domain="[('id', 'not in', product_ids)]") |
||||
|
|
||||
|
def action_add_optional_products(self): |
||||
|
""" |
||||
|
Function for adding optional products for selected products |
||||
|
""" |
||||
|
if self.product_ids and self.optional_ids: |
||||
|
for products in self.product_ids: |
||||
|
for items in self.optional_ids: |
||||
|
products.optional_product_ids = [ |
||||
|
fields.Command.link(items.id)] |