diff --git a/sales_stock_reservation/README.rst b/sales_stock_reservation/README.rst new file mode 100755 index 000000000..0a21a8798 --- /dev/null +++ b/sales_stock_reservation/README.rst @@ -0,0 +1,48 @@ +.. 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 Stock Reservation +========================== +Allow sales users to create a product stock reservation from the sales quotation form. + +Configuration +============= +* No additional configurations needed + +License +------- +GNU AFFERO GENERAL PUBLIC LICENSE, Version 3 (AGPLv3) +(https://www.gnu.org/licenses/agpl.html) + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: (V16) Shikhil Raj, + (V18) Prayag K + +* Contact : odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/sales_stock_reservation/__init__.py b/sales_stock_reservation/__init__.py new file mode 100644 index 000000000..7f14db5f6 --- /dev/null +++ b/sales_stock_reservation/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import models +from . import wizard diff --git a/sales_stock_reservation/__manifest__.py b/sales_stock_reservation/__manifest__.py new file mode 100644 index 000000000..03aa69af1 --- /dev/null +++ b/sales_stock_reservation/__manifest__.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': 'Product Stock Reservation', + 'version': "18.0.1.0.0", + 'category': 'Sales,Warehouse', + 'summary': """ Reserve Product for Sales Order.""", + 'description': """This module allow sales users to create a product stock + reservation from the sales quotation form.""", + 'author': "Cybrosys Techno Solutions", + 'company': "Cybrosys Techno Solutions", + 'maintainer': "Cybrosys Techno Solutions", + 'website': "https://www.cybrosys.com", + 'depends': ['sale_management', 'stock', 'mail'], + 'data': [ + 'security/ir.model.access.csv', + 'views/sale_order_views.xml', + 'views/res_config_settings_views.xml', + 'wizard/sale_stock_reservation_views.xml', + 'data/stock_location_data.xml', + 'data/ir_sequence_data.xml', + ], + 'images': ['static/description/banner.png'], + 'license': "AGPL-3", + 'installable': True, + 'auto_install': False, + 'application': False +} \ No newline at end of file diff --git a/sales_stock_reservation/data/ir_sequence_data.xml b/sales_stock_reservation/data/ir_sequence_data.xml new file mode 100644 index 000000000..cb87a534d --- /dev/null +++ b/sales_stock_reservation/data/ir_sequence_data.xml @@ -0,0 +1,13 @@ + + + + + + Sock Reserved Sequence + stock.reserved + STOCK/RES/ + 3 + + + + diff --git a/sales_stock_reservation/data/stock_location_data.xml b/sales_stock_reservation/data/stock_location_data.xml new file mode 100644 index 000000000..e3de6e6ab --- /dev/null +++ b/sales_stock_reservation/data/stock_location_data.xml @@ -0,0 +1,10 @@ + + + + + + Stock Reservation Location + + + + diff --git a/sales_stock_reservation/doc/RELEASE_NOTES.md b/sales_stock_reservation/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..6f85974ed --- /dev/null +++ b/sales_stock_reservation/doc/RELEASE_NOTES.md @@ -0,0 +1,9 @@ +## Module + +#### 02.08.2025 +#### Version 18.0.1.0.0 +##### ADD + +- Initial commit for Product Stock Reservation + + \ No newline at end of file diff --git a/sales_stock_reservation/models/__init__.py b/sales_stock_reservation/models/__init__.py new file mode 100644 index 000000000..5c3f26525 --- /dev/null +++ b/sales_stock_reservation/models/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import res_config_settings +from . import sale_order +from . import stock_reserved diff --git a/sales_stock_reservation/models/res_config_settings.py b/sales_stock_reservation/models/res_config_settings.py new file mode 100644 index 000000000..403ed25d6 --- /dev/null +++ b/sales_stock_reservation/models/res_config_settings.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + """ + Inherits the Res Config Settings model to add two many-to-one fields for + selecting source and destination locations. These fields are used to + configure the source and destination locations for stock reservations. + """ + _inherit = 'res.config.settings' + + source_location_id = fields.Many2one( + "stock.location", + String="Source Location", + config_parameter='sales_stock_reservation.source_location_id', + help='This is a Many2one field that refers to the location from ' + 'which the products will be sourced.') + destination_location_id = fields.Many2one( + "stock.location", + String="Destination Location", + config_parameter='sales_stock_reservation.destination_location_id', + help='This is a Many2one field that refers to the location to which ' + 'the products will be delivered.') diff --git a/sales_stock_reservation/models/sale_order.py b/sales_stock_reservation/models/sale_order.py new file mode 100644 index 000000000..68e22b887 --- /dev/null +++ b/sales_stock_reservation/models/sale_order.py @@ -0,0 +1,160 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class SaleOrder(models.Model): + """ + Inherits the Sale Order model to add the ability to apply stock + reservation for products in draft state. This model also adds a state for + tracking the reservation status and a one-to-many relationship to the + Stock Reserved model for storing the details of the reserved stock. + """ + _inherit = "sale.order" + + apply_stock_reservation = fields.Boolean( + string="Apply stock reservation", + help="Apply stock reservation in draft") + state_reservation = fields.Selection([ + ('reserved', 'Reserved'), ('cancel', 'Cancelled')], + help="Condition for visibility of buttons") + reserved_stock_ids = fields.One2many( + "stock.reserved", + "sale_order_id", + string="Reserved Stock", + help="Stock reserved details") + + def action_create_stock_reservation(self): + """ + This function creates a stock reservation based on the current sale + order's order lines. + If the sale order has order lines, the function creates a list of + tuples representing the order lines,which are used to set default + values for the stock reservation. Each tuple contains three elements: + (0, 0, {...}), where the dictionary contains values for the following + fields of the stock reservation: + + - order_line_name: a string representing the name of the sale order + and the order line, concatenated + - product_id: the ID of the product being reserved + - quantity: the quantity being reserved, in the unit of measure + specified by the order line + - unit_of_measure_id: the ID of the unit of measure being used for the + reservation + - reserve_quantity: the quantity being reserved, in the unit of + measure specified by the product + + If the sale order does not have any order lines, an empty list + created. + + The function then returns a dictionary representing an action to + create a new stock reservation. + The dictionary has the following keys: + + - name: a string representing the name of the action + - type: a string representing the type of the action (in this case, + 'ir.actions.act_window') + - view_type: a string representing the type of view to use + (in this case, 'form') + - view_mode: a string representing the mode of the view + (in this case, 'form') + - res_model: a string representing the name of the model being used + (in this case,'sale.stock.reservation') + - context: a dictionary representing the context to use when creating + the stock reservation + - default_sale_order_id: the ID of the sale order being used as the + basis for the reservation + - default_stock_reservation_ids: the list of tuples representing the + order lines (or an empty list) + - view_id: the ID of the view to use (retrieved using self.env.ref()) + - target: a string representing the target for the action + (in this case, 'new') + + :return: a dictionary representing the action to create a new stock + reservation + """ + line_vals = [(0, 0, { + 'order_line_name': f"{self.name}-{line.name}", + 'product_id': line.product_id.id, + 'quantity': line.product_uom_qty, + 'unit_of_measure_id': line.product_uom.id, + 'reserve_quantity': line.product_uom_qty + }) for line in self.order_line] if self.order_line else [] + return { + 'name': "Stock Reservation", + 'type': 'ir.actions.act_window', + 'view_type': 'form', + 'view_mode': 'form', + 'res_model': 'sale.stock.reservation', + 'context': {'default_sale_order_id': self.id, + 'default_stock_reservation_ids': line_vals}, + 'view_id': self.env.ref( + 'sales_stock_reservation.sale_stock_reservation_view_form').id, + 'target': 'new', + } + + def action_cancel_reservation(self): + """ + This function cancels a stock reservation by setting its state to + 'cancel', cancelling the moves associated with the reservation's + reserved stock,and setting the status of the reserved stock to + 'cancelled'. + + The function first sets the `state_reservation` field of the current + object to 'cancel'. + + It then retrieves the `move_id` field of each reserved stock associated + with the reservation using `mapped()`,and calls the `_action_cancel()` + method on the resulting recordset to cancel the moves. + + After cancelling the moves, the function sets the `status` field of each + reserved stock associated with the reservation to 'cancelled' using + `mapped()`. + + Finally, the function returns True to indicate that the cancellation + was successful. + + :return: True if the reservation was successfully cancelled, False + otherwise + """ + self.state_reservation = 'cancel' + self.reserved_stock_ids.mapped('move_id')._action_cancel() + self.mapped("reserved_stock_ids").status = 'cancelled' + return True + + def action_confirm(self): + """ + This function confirms a sale order by calling the parent + `action_confirm()` method and then cancelling any associated stock + reservation. + The function first calls the `super()` method to confirm the sale order + using the parent implementation. + It then calls the `cancel_reservation()` method to cancel any existing + stock reservation associated with the sale order. + Finally, the function returns the result of the `super()` method call to + indicate whether the sale order was successfully confirmed. + + :return: the result of the parent `action_confirm()` method call + """ + res = super().action_confirm() + self.action_cancel_reservation() + return res diff --git a/sales_stock_reservation/models/stock_reserved.py b/sales_stock_reservation/models/stock_reserved.py new file mode 100644 index 000000000..6beeb9292 --- /dev/null +++ b/sales_stock_reservation/models/stock_reserved.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2025-TODAY Cybrosys Technologies(). +# Author: Cybrosys Techno Solutions (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import _, api, fields, models + + +class StockReserved(models.Model): + """ + This model stores details of product reservations made in sale orders. + """ + _name = "stock.reserved" + _description = "Reserved stock details" + + name = fields.Char(string="Name", readonly="True", help="Name") + order_line_name = fields.Char(string="Order Line", readonly="True", + help="Name of order line") + product_id = fields.Many2one("product.product", string="Product", + readonly="True", help="Product reserved") + status = fields.Selection( + [('reserved', 'Reserved'), ('cancelled', 'Cancelled')], + string="Status", readonly="True", help="Status of reservation") + reserved_quantity = fields.Float(string="Reserved Quantity", + readonly="True", + help="Quantity Reserved") + sale_order_id = fields.Many2one("sale.order", string="Sale Order", + readonly="True", + help="Sale order") + move_id = fields.Many2one("stock.move", string="Move Id", readonly="True", + help="Stock move details") + + @api.model + def create(self, vals_list): + """ + Create a new record for the model and generate a sequence for the name + field if it is not provided. + :return: the result of the parent `create()` method call + """ + if vals_list.get('name', _('New')) == _('New'): + vals_list['name'] = self.env['ir.sequence'].next_by_code( + 'stock.reserved' + ) or _('New') + res = super().create(vals_list) + return res diff --git a/sales_stock_reservation/security/ir.model.access.csv b/sales_stock_reservation/security/ir.model.access.csv new file mode 100644 index 000000000..261c00ee2 --- /dev/null +++ b/sales_stock_reservation/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_stock_reservation_sale_user,access.stock.reservation.sale.user,model_sale_stock_reservation,base.group_user,1,1,1,1 +access_stock_reservation_user,access.stock.reservation.user,model_stock_reservation,base.group_user,1,1,1,1 +access_stock_reserved_user,access.stock.reserved.user,model_stock_reserved,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/sales_stock_reservation/static/description/assets/cybro-icon.png b/sales_stock_reservation/static/description/assets/cybro-icon.png new file mode 100644 index 000000000..06e73e11d Binary files /dev/null and b/sales_stock_reservation/static/description/assets/cybro-icon.png differ diff --git a/sales_stock_reservation/static/description/assets/cybro-odoo.png b/sales_stock_reservation/static/description/assets/cybro-odoo.png new file mode 100644 index 000000000..ed02e07a4 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/cybro-odoo.png differ diff --git a/sales_stock_reservation/static/description/assets/h2.png b/sales_stock_reservation/static/description/assets/h2.png new file mode 100644 index 000000000..0bfc4707d Binary files /dev/null and b/sales_stock_reservation/static/description/assets/h2.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/arrows-repeat.svg b/sales_stock_reservation/static/description/assets/icons/arrows-repeat.svg new file mode 100644 index 000000000..1d7efabc5 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/arrows-repeat.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/banner-1.png b/sales_stock_reservation/static/description/assets/icons/banner-1.png new file mode 100644 index 000000000..c180db172 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/banner-1.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/banner-2.svg b/sales_stock_reservation/static/description/assets/icons/banner-2.svg new file mode 100644 index 000000000..e606d97d9 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/banner-2.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/banner-bg.png b/sales_stock_reservation/static/description/assets/icons/banner-bg.png new file mode 100644 index 000000000..a8238d3c0 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/banner-bg.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/banner-bg.svg b/sales_stock_reservation/static/description/assets/icons/banner-bg.svg new file mode 100644 index 000000000..b1378103e --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/banner-bg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/banner-call.svg b/sales_stock_reservation/static/description/assets/icons/banner-call.svg new file mode 100644 index 000000000..96c687e81 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/banner-call.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/banner-mail.svg b/sales_stock_reservation/static/description/assets/icons/banner-mail.svg new file mode 100644 index 000000000..cbf0d158d --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/banner-mail.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/banner-pattern.svg b/sales_stock_reservation/static/description/assets/icons/banner-pattern.svg new file mode 100644 index 000000000..9c1c7e101 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/banner-pattern.svg @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/banner-promo.svg b/sales_stock_reservation/static/description/assets/icons/banner-promo.svg new file mode 100644 index 000000000..d52791b11 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/banner-promo.svg @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/brand-pair.svg b/sales_stock_reservation/static/description/assets/icons/brand-pair.svg new file mode 100644 index 000000000..d8db7fc1e --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/brand-pair.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/check.png b/sales_stock_reservation/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/check.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/chevron.png b/sales_stock_reservation/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/chevron.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/close-icon.svg b/sales_stock_reservation/static/description/assets/icons/close-icon.svg new file mode 100644 index 000000000..df8cce37a --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/close-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/cogs.png b/sales_stock_reservation/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/cogs.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/collabarate-icon.svg b/sales_stock_reservation/static/description/assets/icons/collabarate-icon.svg new file mode 100644 index 000000000..dd4e10518 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/collabarate-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/sales_stock_reservation/static/description/assets/icons/consultation.png b/sales_stock_reservation/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/consultation.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/cybro-logo.png b/sales_stock_reservation/static/description/assets/icons/cybro-logo.png new file mode 100644 index 000000000..ff4b78220 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/cybro-logo.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/down.svg b/sales_stock_reservation/static/description/assets/icons/down.svg new file mode 100644 index 000000000..f21c36271 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sales_stock_reservation/static/description/assets/icons/ecom-black.png b/sales_stock_reservation/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/ecom-black.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/education-black.png b/sales_stock_reservation/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/education-black.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/faq.png b/sales_stock_reservation/static/description/assets/icons/faq.png new file mode 100644 index 000000000..4250b5b81 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/faq.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/feature-icon.svg b/sales_stock_reservation/static/description/assets/icons/feature-icon.svg new file mode 100644 index 000000000..fa0ea6850 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/feature-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/feature.png b/sales_stock_reservation/static/description/assets/icons/feature.png new file mode 100644 index 000000000..ac7a785c0 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/feature.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/gear.svg b/sales_stock_reservation/static/description/assets/icons/gear.svg new file mode 100644 index 000000000..0cc66b6ea --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/gear.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/hero.gif b/sales_stock_reservation/static/description/assets/icons/hero.gif new file mode 100644 index 000000000..380654dfe Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/hero.gif differ diff --git a/sales_stock_reservation/static/description/assets/icons/hire-odoo.svg b/sales_stock_reservation/static/description/assets/icons/hire-odoo.svg new file mode 100644 index 000000000..e1ac089b0 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/hire-odoo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/hotel-black.png b/sales_stock_reservation/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/hotel-black.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/license.png b/sales_stock_reservation/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/license.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/life-ring-icon.svg b/sales_stock_reservation/static/description/assets/icons/life-ring-icon.svg new file mode 100644 index 000000000..3ae6e1d89 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/life-ring-icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/lifebuoy.png b/sales_stock_reservation/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/lifebuoy.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/mail.svg b/sales_stock_reservation/static/description/assets/icons/mail.svg new file mode 100644 index 000000000..1eedde695 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/mail.svg @@ -0,0 +1,3 @@ + + + diff --git a/sales_stock_reservation/static/description/assets/icons/manufacturing-black.png b/sales_stock_reservation/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/manufacturing-black.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/notes.png b/sales_stock_reservation/static/description/assets/icons/notes.png new file mode 100644 index 000000000..ee5e95404 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/notes.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/notification icon.svg b/sales_stock_reservation/static/description/assets/icons/notification icon.svg new file mode 100644 index 000000000..053189973 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/notification icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/odoo-consultancy.svg b/sales_stock_reservation/static/description/assets/icons/odoo-consultancy.svg new file mode 100644 index 000000000..e05f65bde --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/odoo-consultancy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/odoo-licencing.svg b/sales_stock_reservation/static/description/assets/icons/odoo-licencing.svg new file mode 100644 index 000000000..2606c88b0 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/odoo-licencing.svg @@ -0,0 +1,3 @@ + + + diff --git a/sales_stock_reservation/static/description/assets/icons/odoo-logo.png b/sales_stock_reservation/static/description/assets/icons/odoo-logo.png new file mode 100644 index 000000000..0e4d0eb5a Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/odoo-logo.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/patter.svg b/sales_stock_reservation/static/description/assets/icons/patter.svg new file mode 100644 index 000000000..25c9c0a8f --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/patter.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/pattern1.png b/sales_stock_reservation/static/description/assets/icons/pattern1.png new file mode 100644 index 000000000..09ab0fb2d Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/pattern1.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/pos-black.png b/sales_stock_reservation/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/pos-black.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/puzzle-piece-icon.svg b/sales_stock_reservation/static/description/assets/icons/puzzle-piece-icon.svg new file mode 100644 index 000000000..3e9ad9373 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/puzzle-piece-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/puzzle.png b/sales_stock_reservation/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/puzzle.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/replace-icon.svg b/sales_stock_reservation/static/description/assets/icons/replace-icon.svg new file mode 100644 index 000000000..d0e3a7af1 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/replace-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/restaurant-black.png b/sales_stock_reservation/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/restaurant-black.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/screenshot-main.png b/sales_stock_reservation/static/description/assets/icons/screenshot-main.png new file mode 100644 index 000000000..575f8e676 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/screenshot-main.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/screenshot.png b/sales_stock_reservation/static/description/assets/icons/screenshot.png new file mode 100644 index 000000000..cef272529 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/screenshot.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/service-black.png b/sales_stock_reservation/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/service-black.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/skype-fill.svg b/sales_stock_reservation/static/description/assets/icons/skype-fill.svg new file mode 100644 index 000000000..c17423639 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/skype-fill.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/skype.png b/sales_stock_reservation/static/description/assets/icons/skype.png new file mode 100644 index 000000000..51b409fb3 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/skype.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/skype.svg b/sales_stock_reservation/static/description/assets/icons/skype.svg new file mode 100644 index 000000000..df3dad39b --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/skype.svg @@ -0,0 +1,3 @@ + + + diff --git a/sales_stock_reservation/static/description/assets/icons/star-1.svg b/sales_stock_reservation/static/description/assets/icons/star-1.svg new file mode 100644 index 000000000..7e55ab162 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/star-1.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/star-2.svg b/sales_stock_reservation/static/description/assets/icons/star-2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/star-2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/support.png b/sales_stock_reservation/static/description/assets/icons/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/support.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/test-1 - Copy.png b/sales_stock_reservation/static/description/assets/icons/test-1 - Copy.png new file mode 100644 index 000000000..f6a902663 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/test-1 - Copy.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/test-1.png b/sales_stock_reservation/static/description/assets/icons/test-1.png new file mode 100644 index 000000000..0908add2b Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/test-1.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/test-2.png b/sales_stock_reservation/static/description/assets/icons/test-2.png new file mode 100644 index 000000000..4671fe91e Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/test-2.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/trading-black.png b/sales_stock_reservation/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/trading-black.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/training.png b/sales_stock_reservation/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/training.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/translate.svg b/sales_stock_reservation/static/description/assets/icons/translate.svg new file mode 100644 index 000000000..af9c8a1aa --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/translate.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/update.png b/sales_stock_reservation/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/update.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/user.png b/sales_stock_reservation/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/user.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/video.png b/sales_stock_reservation/static/description/assets/icons/video.png new file mode 100644 index 000000000..576705b17 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/video.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/whatsapp.png b/sales_stock_reservation/static/description/assets/icons/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/whatsapp.png differ diff --git a/sales_stock_reservation/static/description/assets/icons/wrench-icon.svg b/sales_stock_reservation/static/description/assets/icons/wrench-icon.svg new file mode 100644 index 000000000..174b5a465 --- /dev/null +++ b/sales_stock_reservation/static/description/assets/icons/wrench-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/sales_stock_reservation/static/description/assets/icons/wrench.png b/sales_stock_reservation/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/sales_stock_reservation/static/description/assets/icons/wrench.png differ diff --git a/sales_stock_reservation/static/description/assets/modules/courier_management.jpg b/sales_stock_reservation/static/description/assets/modules/courier_management.jpg new file mode 100644 index 000000000..3e4a22c32 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/modules/courier_management.jpg differ diff --git a/sales_stock_reservation/static/description/assets/modules/cw_sale.png b/sales_stock_reservation/static/description/assets/modules/cw_sale.png new file mode 100644 index 000000000..1b75c62d5 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/modules/cw_sale.png differ diff --git a/sales_stock_reservation/static/description/assets/modules/cw_stock.png b/sales_stock_reservation/static/description/assets/modules/cw_stock.png new file mode 100644 index 000000000..62af09ec6 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/modules/cw_stock.png differ diff --git a/sales_stock_reservation/static/description/assets/modules/delivery_split.jpg b/sales_stock_reservation/static/description/assets/modules/delivery_split.jpg new file mode 100644 index 000000000..76724ebda Binary files /dev/null and b/sales_stock_reservation/static/description/assets/modules/delivery_split.jpg differ diff --git a/sales_stock_reservation/static/description/assets/modules/multi_product_return_from_website.jpg b/sales_stock_reservation/static/description/assets/modules/multi_product_return_from_website.jpg new file mode 100644 index 000000000..7f2cc2ab5 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/modules/multi_product_return_from_website.jpg differ diff --git a/sales_stock_reservation/static/description/assets/modules/purchase_history_of_product.jpg b/sales_stock_reservation/static/description/assets/modules/purchase_history_of_product.jpg new file mode 100644 index 000000000..dab7b184c Binary files /dev/null and b/sales_stock_reservation/static/description/assets/modules/purchase_history_of_product.jpg differ diff --git a/sales_stock_reservation/static/description/assets/screenshots/hero.gif b/sales_stock_reservation/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..c7e078357 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/screenshots/hero.gif differ diff --git a/sales_stock_reservation/static/description/assets/screenshots/sr1.png b/sales_stock_reservation/static/description/assets/screenshots/sr1.png new file mode 100644 index 000000000..f3bf7c3d7 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/screenshots/sr1.png differ diff --git a/sales_stock_reservation/static/description/assets/screenshots/sr10.png b/sales_stock_reservation/static/description/assets/screenshots/sr10.png new file mode 100644 index 000000000..22250fb4a Binary files /dev/null and b/sales_stock_reservation/static/description/assets/screenshots/sr10.png differ diff --git a/sales_stock_reservation/static/description/assets/screenshots/sr2.png b/sales_stock_reservation/static/description/assets/screenshots/sr2.png new file mode 100644 index 000000000..c63dc018d Binary files /dev/null and b/sales_stock_reservation/static/description/assets/screenshots/sr2.png differ diff --git a/sales_stock_reservation/static/description/assets/screenshots/sr3.png b/sales_stock_reservation/static/description/assets/screenshots/sr3.png new file mode 100644 index 000000000..8daf1718a Binary files /dev/null and b/sales_stock_reservation/static/description/assets/screenshots/sr3.png differ diff --git a/sales_stock_reservation/static/description/assets/screenshots/sr4.png b/sales_stock_reservation/static/description/assets/screenshots/sr4.png new file mode 100644 index 000000000..beb78e07a Binary files /dev/null and b/sales_stock_reservation/static/description/assets/screenshots/sr4.png differ diff --git a/sales_stock_reservation/static/description/assets/screenshots/sr5.png b/sales_stock_reservation/static/description/assets/screenshots/sr5.png new file mode 100644 index 000000000..6951b8599 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/screenshots/sr5.png differ diff --git a/sales_stock_reservation/static/description/assets/screenshots/sr6.png b/sales_stock_reservation/static/description/assets/screenshots/sr6.png new file mode 100644 index 000000000..3a311c86b Binary files /dev/null and b/sales_stock_reservation/static/description/assets/screenshots/sr6.png differ diff --git a/sales_stock_reservation/static/description/assets/screenshots/sr7.png b/sales_stock_reservation/static/description/assets/screenshots/sr7.png new file mode 100644 index 000000000..fab25827e Binary files /dev/null and b/sales_stock_reservation/static/description/assets/screenshots/sr7.png differ diff --git a/sales_stock_reservation/static/description/assets/screenshots/sr8.png b/sales_stock_reservation/static/description/assets/screenshots/sr8.png new file mode 100644 index 000000000..5a522ad8a Binary files /dev/null and b/sales_stock_reservation/static/description/assets/screenshots/sr8.png differ diff --git a/sales_stock_reservation/static/description/assets/screenshots/sr9.png b/sales_stock_reservation/static/description/assets/screenshots/sr9.png new file mode 100644 index 000000000..4c6c0ab3d Binary files /dev/null and b/sales_stock_reservation/static/description/assets/screenshots/sr9.png differ diff --git a/sales_stock_reservation/static/description/assets/y18.jpg b/sales_stock_reservation/static/description/assets/y18.jpg new file mode 100644 index 000000000..eea1714f2 Binary files /dev/null and b/sales_stock_reservation/static/description/assets/y18.jpg differ diff --git a/sales_stock_reservation/static/description/banner.png b/sales_stock_reservation/static/description/banner.png new file mode 100644 index 000000000..d26f71611 Binary files /dev/null and b/sales_stock_reservation/static/description/banner.png differ diff --git a/sales_stock_reservation/static/description/icon.png b/sales_stock_reservation/static/description/icon.png new file mode 100644 index 000000000..d35665e39 Binary files /dev/null and b/sales_stock_reservation/static/description/icon.png differ diff --git a/sales_stock_reservation/static/description/index.html b/sales_stock_reservation/static/description/index.html new file mode 100644 index 000000000..5a46e474c --- /dev/null +++ b/sales_stock_reservation/static/description/index.html @@ -0,0 +1,1180 @@ + + + + + + Sale Discount on Total Amount + + + + + + + + + + +
+
+ + + +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+ +
+
+
+
+

+ This module helps users to create a product stock reservation + from the sales quotation form. +

+

Product Stock Reservation +

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

Key + Highlights

+
+
+
+
+ +
+
+ Stock Reservation From The Sales Quotation. +
+

+

+
+
+
+
+
+ +
+
+ Email Notification To Stock Users During Reservation. +
+

+

+
+
+
+
+
+ +
+
+ Allow Sales Users To Cancel Reservation Stock. +
+

+

+
+
+
+
+ +
+
+
+ Product Stock Reservation +

+ Are you ready to make your business more + organized? +
Improve now! +

+ +
+
+ +
+
+
+ + + +
+
+ +
+
+
+
+ acc_bg +
+ +
+
+
+
+

+ Module + Configuration +

+
+
+

+ Under "Inventory" > "Configurations" > "Settings" user have + to select source location and destination location to reserve stock. +

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

+ Product Quantity + Before Reserve Stock +

+
+
+

+ User can see product on hand quantity + before reserve stock. +

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

+ Reserve + Stock. +

+
+
+

+ User can reserve stock by clicking on + "Reserve Stock" button on sale order which + is visible only if "Apply Stock Reservation" is checked. +

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

+ Stock + Reservation Wizard. +

+
+
+

+ New wizard will open on clicking of "Reserve Stock" button, + here user can see default sale order line details and select + "Notify User" to get email and enter "Reserve" to reserve stock. +

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

+ Reserved + Stock. +

+
+
+

+ User can view created reserved stock from + "Reserved Stock" page in sale order. +

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

+ Product Quantity After + Reserved Stock. +

+
+
+

+ You can view updated product quantities + after reservation from sales orders. +

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

+ Email Notification + to Users. +

+
+
+

+ Email notification to stock users selected on the wizard. +

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

+ Cancel Stock + Reservation Button Flow. +

+
+
+

+ Cancel Stock Reservation Button: + When click to Cancel Stock Reservation Button + will release a product that is already reserved + at the time of quotation. +

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

+ Product Forecasted + Quantity after Release. +

+
+
+

+ Quantities are released in stock after the release reservation. +

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

+ Allow sales users to create a + product stock reservation from + the sales quotation form. +

+
+
+

+

+
+
+
+
+
+
+
+ +
+

+ Allow sales users to cancel reservation stock. +

+
+
+

+

+
+
+
+
+
+
+
+ +
+

+ Email notification to stock + users during reservation from + sales quotation state. +

+
+
+

+

+
+
+
+
+
+
+
+ +
+

+ Allow users to choose how much + quantity of product from quotation + they want to reserve on wizard. +

+
+
+

+

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

+ This module helps the users to reserve products from the quotation itself. +

+
+
+ +
+ +
+

+ Yes, we need to configure the + Stock Reservation Location details + inside the Inventory Configuration. +

+
+
+ +
+ +
+

+ We need to enable the + 'Apply Stock Reservation' + checkbox to see the + 'Create Stock Reservation' button. +

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

+ Latest Release 18.0.1.0.0 +

+ + 01st August, 2025 + +
+
+
+
+
+ Add +
+
+
+
    +
  • + Initial commit for Sale Discount On Total Amount +
  • + +
+
+
+
+
+
+
+
+
+
+ + + +
+

+ Related Products +

+ +
+ + +
+

+ Our Services

+ +
+ +
+
+ .... +
+
+ +
+ + +
+
+ + + + + + diff --git a/sales_stock_reservation/views/res_config_settings_views.xml b/sales_stock_reservation/views/res_config_settings_views.xml new file mode 100644 index 000000000..657650c53 --- /dev/null +++ b/sales_stock_reservation/views/res_config_settings_views.xml @@ -0,0 +1,57 @@ + + + + + + res.config.settings.view.form.inherit.sales.stock.reservation + + res.config.settings + + + + +

Stock Reserve Location

+
+
+
+
+
+
+
+
+
+
+
+
+ + + + diff --git a/sales_stock_reservation/views/sale_order_views.xml b/sales_stock_reservation/views/sale_order_views.xml new file mode 100644 index 000000000..32f40bf00 --- /dev/null +++ b/sales_stock_reservation/views/sale_order_views.xml @@ -0,0 +1,43 @@ + + + + + sale.order.view.form.inherit.sales.stock.reservation + sale.order + + + + + + + +