diff --git a/cw_stock/README.rst b/cw_stock/README.rst new file mode 100644 index 000000000..7a489e58c --- /dev/null +++ b/cw_stock/README.rst @@ -0,0 +1,46 @@ +.. 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 + +Catch Weight Management: Inventory +=================================== +* Helps to manage Catch Weight of products in Inventory module + +Configuration +============= +* No additional configurations needed + +License +------- +General Public License, Version 3 (AGPL v3). +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer:(V15) Unnimaya C O, 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/cw_stock/__init__.py b/cw_stock/__init__.py new file mode 100644 index 000000000..05bfd6ce6 --- /dev/null +++ b/cw_stock/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Unnimaya C O (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 diff --git a/cw_stock/__manifest__.py b/cw_stock/__manifest__.py new file mode 100644 index 000000000..04d6e01c5 --- /dev/null +++ b/cw_stock/__manifest__.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Unnimaya C O (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': " Catch Weight Management: Inventory", + 'version': '15.0.1.0.0', + 'category': 'Warehouse', + 'summary': """Helps to manage Catch Weight of products in Inventory + module""", + 'description': """ Catch weight is simply a parallel unit of measure used + to manage variable-weight products. This module helps to deal with Catch + Weight in Inventory module. It is possible to enable the Catch Weight for + each Product. Catch Weight is available in stock moves and scrap + orders.""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['stock_account'], + 'data': [ + 'views/product_template_views.xml', + 'views/stock_scrap_views.xml', + 'views/stock_picking_views.xml', + 'views/stock_return_views.xml', + 'views/stock_move_line_views.xml', + 'views/stock_valuation_layer_views.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/cw_stock/doc/RELEASE_NOTES.md b/cw_stock/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..fe5e847d7 --- /dev/null +++ b/cw_stock/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 11.10.2023 +#### Version 15.0.1.0.0 +#### ADD +- Initial commit for Catch Weight Management: Inventory diff --git a/cw_stock/models/__init__.py b/cw_stock/models/__init__.py new file mode 100644 index 000000000..476fe7ac3 --- /dev/null +++ b/cw_stock/models/__init__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Unnimaya C O (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 product_template +from . import stock_move +from . import stock_move_line +from . import stock_picking_return_line +from . import stock_scrap +from . import stock_valuation_layer diff --git a/cw_stock/models/product_template.py b/cw_stock/models/product_template.py new file mode 100644 index 000000000..6afa8825a --- /dev/null +++ b/cw_stock/models/product_template.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Unnimaya C O (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 ProductTemplate(models.Model): + """Inherit product template to include Catch Weight fields""" + _inherit = 'product.template' + + apply_cw = fields.Boolean(string='CW Product', + help="True for Catch Weight Products") + category_id = fields.Many2one('uom.category', string="Category", + help="Category of the Product", + default=lambda self: self.env.ref( + 'uom.product_uom_categ_kgm')) + cw_uom_id = fields.Many2one('uom.uom', string='CW-Uom', + store=True, + help="Catch weight unit of measure", + domain="[('category_id', '=', category_id)]") + catch_weight_ok = fields.Boolean(default=False, + string="Catch Weight Product", + help="True for catch weight products") + average_cw_qty = fields.Float(string='Catch Weight', digits=(16, 4), + default=1.0, help="Catch weight quantity") diff --git a/cw_stock/models/stock_move.py b/cw_stock/models/stock_move.py new file mode 100644 index 000000000..84b3a28f2 --- /dev/null +++ b/cw_stock/models/stock_move.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Unnimaya C O (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 StockMove(models.Model): + """Inherit Stock Move for adding Catch Weight fields and functions""" + _inherit = 'stock.move' + + category_id = fields.Many2one('uom.category', + string="UoM Category", + help="True if it is a Catch Weight Product", + default=lambda self: self.env.ref( + 'uom.product_uom_categ_kgm')) + cw_uom_id = fields.Many2one('uom.uom', string='CW-UoM', + related='product_id.product_tmpl_id.cw_uom_id', + help="Catch weight unit of measure", + domain="[('category_id', '=', category_id)]") + cw_demand = fields.Float(string='CW-Demand', required=True, + digits=(16, 4), compute='_compute_cw_demand', + help="The catch weight of product demanded") + cw_reserved = fields.Float(string='CW-Reserved', + compute='_compute_cw_demand', + help="catch weight to be reserved", + digits=(16, 4)) + cw_done = fields.Float(string='CW-Done', digits=(16, 4), + help="Catch weight of done", + compute='_compute_cw_demand', ) + cw_hide = fields.Boolean(related='product_id.catch_weight_ok', + string='CW Product', + help="True for catch weight products.") + + def _compute_cw_demand(self): + """Method for computing cw_demand,cw_uom, cw_reserved and cw_done""" + for rec in self: + rec.update( + { + 'cw_demand': rec.product_uom_qty * rec.product_id. + average_cw_qty, + 'cw_done': rec.quantity_done * rec.product_id. + average_cw_qty, + 'cw_reserved': rec.product_uom_qty * rec.product_id. + average_cw_qty, + }) + + @api.onchange('product_id', 'product_uom_qty') + def _onchange_product_id(self): + """Method for calculating cw demand, uom_id and cw_reserved""" + if self.product_id.catch_weight_ok: + self.update( + { + 'cw_demand': self.product_uom_qty * self.product_id. + average_cw_qty, + 'cw_uom_id': self.product_id.cw_uom_id, + 'cw_reserved': self.product_uom_qty * self.product_id. + average_cw_qty + }) + return super()._onchange_product_id() + + @api.onchange('cw_demand') + def _onchange_cw_demand(self): + """Calculates the value of product_uom_qty if cw_demand changed""" + for rec in self: + if rec.product_id.catch_weight_ok and \ + rec.product_id.average_cw_qty != 0: + rec.product_uom_qty = rec.cw_demand / \ + rec.product_id.average_cw_qty diff --git a/cw_stock/models/stock_move_line.py b/cw_stock/models/stock_move_line.py new file mode 100644 index 000000000..e3670a604 --- /dev/null +++ b/cw_stock/models/stock_move_line.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Unnimaya C O (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 StockMoveLine(models.Model): + """Inherits stock move line to include Catch Weight fields""" + _inherit = 'stock.move.line' + + cw_qty_done = fields.Float(string='CW-Qty Done', + help="Catch Weight Done quantity", + compute='_compute_cw_qty_done', + digits=(16, 4)) + category_id = fields.Many2one('uom.category', + string="UoM Category", + help="Category of the Product", + default=lambda self: self.env.ref( + 'uom.product_uom_categ_kgm')) + cw_uom_id = fields.Many2one('uom.uom', + related='product_id.product_tmpl_id.cw_uom_id', + string='CW-UoM', + help="Unit of Measure of Catch Weight", + domain="[('category_id', '=', category_id)]", + ) + cw_hide = fields.Boolean(related='product_id.catch_weight_ok', + string='CW Product', + help="True for Catch Weight products") + + @api.depends('product_id', 'qty_done') + def _compute_cw_qty_done(self): + """Method for calculating the value of cw_qty_done for catch weight + products""" + for rec in self: + rec.cw_qty_done = rec.qty_done * rec.product_id.average_cw_qty \ + if rec.product_id.catch_weight_ok else 0 diff --git a/cw_stock/models/stock_picking_return_line.py b/cw_stock/models/stock_picking_return_line.py new file mode 100644 index 000000000..9d4f8b48a --- /dev/null +++ b/cw_stock/models/stock_picking_return_line.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Unnimaya C O (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 StockReturnPickingLine(models.TransientModel): + """Inherits Stock Return Picking Line for including the Catch Weight fields + and functions""" + _inherit = "stock.return.picking.line" + + cw_qty = fields.Float(string='CW-Qty ', compute="_compute_cw_qty", + help="Catch weight quantity", digits=(16, 4)) + category_id = fields.Many2one('uom.category', string="Category", + help="Category of the Product", + default=lambda self: self.env.ref( + 'uom.product_uom_categ_kgm')) + cw_uom_id = fields.Many2one('uom.uom', + related='product_id.cw_uom_id', + string='CW-UoM', + help="Unit of measure of Catch Weight", + domain="[('category_id', '=', category_id)]") + cw_hide = fields.Boolean(related='product_id.catch_weight_ok', + string='CW Product', + help="True if it is a Catch weight product") + + @api.depends('product_id', 'quantity') + def _compute_cw_qty(self): + """Calculating cw qty done""" + for rec in self: + if rec.product_id.catch_weight_ok: + rec.cw_qty = rec.quantity * rec.product_id.average_cw_qty + + @api.onchange('cw_qty') + def _onchange_cw_qty(self): + """Calculating cw qty from qty""" + if self.product_id.catch_weight_ok and self.product_id.average_cw_qty \ + != 0: + self.quantity = self.cw_qty / self.product_id.average_cw_qty diff --git a/cw_stock/models/stock_scrap.py b/cw_stock/models/stock_scrap.py new file mode 100644 index 000000000..f6630fcc3 --- /dev/null +++ b/cw_stock/models/stock_scrap.py @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Unnimaya C O (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 StockScrap(models.Model): + """Inherits Stock Scrap for including fields and functions for Catch + Weight""" + _inherit = 'stock.scrap' + + cw_qty = fields.Float(string='CW-Qty', digits=(16, 4), readonly=False, + compute='_compute_cw_qty', + help="Catch weight quantity") + category_id = fields.Many2one('uom.category', + string="UoM Category", + help="Category of the Product", + default=lambda self: self.env.ref( + 'uom.product_uom_categ_kgm')) + cw_uom_id = fields.Many2one('uom.uom', + related='product_id.cw_uom_id', + string='CW-UoM', + help="Catch weight unit of measure", + domain="[('category_id', '=', category_id)]" + ) + toggle_cw = fields.Boolean(related='product_id.catch_weight_ok', + string='CW Product', + help="True if it is a Catch Weight Product") + + @api.depends('product_id') + def _compute_cw_qty(self): + """Method for computing product_uom_id and cw_quantity""" + for rec in self: + rec.product_uom_id = rec.product_id.uom_id + rec.cw_qty = rec.product_id.average_cw_qty * rec.scrap_qty + + @api.onchange('scrap_qty') + def _onchange_scrap_qty(self): + """Calculating scrap qty from cw qty""" + if self.product_id.catch_weight_ok and \ + self.product_id.average_cw_qty != 0: + self.cw_qty = self.scrap_qty * self.product_id.average_cw_qty + + @api.onchange('cw_qty') + def _onchange_cw_qty(self): + """Method for calculating cw qty from scrap qty""" + if self.product_id.catch_weight_ok and self.product_id. \ + average_cw_qty != 0: + self.scrap_qty = self.cw_qty / self.product_id.average_cw_qty diff --git a/cw_stock/models/stock_valuation_layer.py b/cw_stock/models/stock_valuation_layer.py new file mode 100644 index 000000000..6a10475b8 --- /dev/null +++ b/cw_stock/models/stock_valuation_layer.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies(). +# Author: Unnimaya C O (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 StockValuationLayer(models.Model): + """Inherit Stock Valuation Layer for Adding Catch Weight fields and + functions""" + _inherit = 'stock.valuation.layer' + + cw_qty_done = fields.Float(string='CW-Qty Done', help="Catch weight of done" + " quantity", + compute='_compute_cw_qty_done', digits=(16, 4)) + category_id = fields.Many2one('uom.category', string="Category", + default=lambda self: self.env.ref( + 'uom.product_uom_categ_kgm'), + help="Category of catch weight UoM") + cw_uom_id = fields.Many2one('uom.uom', + related='product_id.cw_uom_id', + string='CW-Uom', + help="Catch weight unit od measure", + domain="[('category_id', '=', category_id)]", + ) + cw_hide = fields.Boolean(related='product_id.catch_weight_ok', + string='CW Product', + help="True for catch weight products") + + @api.depends('product_id', 'quantity') + def _compute_cw_qty_done(self): + """Calculating cw qty done""" + for rec in self: + rec.cw_qty_done = rec.quantity * rec.product_id.average_cw_qty if \ + rec.product_id.catch_weight_ok else 0 diff --git a/cw_stock/static/description/assets/icons/check.png b/cw_stock/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/cw_stock/static/description/assets/icons/check.png differ diff --git a/cw_stock/static/description/assets/icons/cogs.png b/cw_stock/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/cw_stock/static/description/assets/icons/cogs.png differ diff --git a/cw_stock/static/description/assets/icons/consultation.png b/cw_stock/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/cw_stock/static/description/assets/icons/consultation.png differ diff --git a/cw_stock/static/description/assets/icons/ecom-black.png b/cw_stock/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/cw_stock/static/description/assets/icons/ecom-black.png differ diff --git a/cw_stock/static/description/assets/icons/education-black.png b/cw_stock/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/cw_stock/static/description/assets/icons/education-black.png differ diff --git a/cw_stock/static/description/assets/icons/hotel-black.png b/cw_stock/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/cw_stock/static/description/assets/icons/hotel-black.png differ diff --git a/cw_stock/static/description/assets/icons/license.png b/cw_stock/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/cw_stock/static/description/assets/icons/license.png differ diff --git a/cw_stock/static/description/assets/icons/lifebuoy.png b/cw_stock/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/cw_stock/static/description/assets/icons/lifebuoy.png differ diff --git a/cw_stock/static/description/assets/icons/logo.png b/cw_stock/static/description/assets/icons/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/cw_stock/static/description/assets/icons/logo.png differ diff --git a/cw_stock/static/description/assets/icons/manufacturing-black.png b/cw_stock/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/cw_stock/static/description/assets/icons/manufacturing-black.png differ diff --git a/cw_stock/static/description/assets/icons/pos-black.png b/cw_stock/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/cw_stock/static/description/assets/icons/pos-black.png differ diff --git a/cw_stock/static/description/assets/icons/puzzle.png b/cw_stock/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/cw_stock/static/description/assets/icons/puzzle.png differ diff --git a/cw_stock/static/description/assets/icons/restaurant-black.png b/cw_stock/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/cw_stock/static/description/assets/icons/restaurant-black.png differ diff --git a/cw_stock/static/description/assets/icons/service-black.png b/cw_stock/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/cw_stock/static/description/assets/icons/service-black.png differ diff --git a/cw_stock/static/description/assets/icons/trading-black.png b/cw_stock/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/cw_stock/static/description/assets/icons/trading-black.png differ diff --git a/cw_stock/static/description/assets/icons/training.png b/cw_stock/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/cw_stock/static/description/assets/icons/training.png differ diff --git a/cw_stock/static/description/assets/icons/update.png b/cw_stock/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/cw_stock/static/description/assets/icons/update.png differ diff --git a/cw_stock/static/description/assets/icons/user.png b/cw_stock/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/cw_stock/static/description/assets/icons/user.png differ diff --git a/cw_stock/static/description/assets/icons/wrench.png b/cw_stock/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/cw_stock/static/description/assets/icons/wrench.png differ diff --git a/cw_stock/static/description/assets/modules/avg_lc.png b/cw_stock/static/description/assets/modules/avg_lc.png new file mode 100644 index 000000000..f091600e7 Binary files /dev/null and b/cw_stock/static/description/assets/modules/avg_lc.png differ diff --git a/cw_stock/static/description/assets/modules/brand_inventory.png b/cw_stock/static/description/assets/modules/brand_inventory.png new file mode 100644 index 000000000..dd149ac30 Binary files /dev/null and b/cw_stock/static/description/assets/modules/brand_inventory.png differ diff --git a/cw_stock/static/description/assets/modules/export_stock.png b/cw_stock/static/description/assets/modules/export_stock.png new file mode 100644 index 000000000..46a13fb8f Binary files /dev/null and b/cw_stock/static/description/assets/modules/export_stock.png differ diff --git a/cw_stock/static/description/assets/modules/inter_company.png b/cw_stock/static/description/assets/modules/inter_company.png new file mode 100644 index 000000000..86f799dd0 Binary files /dev/null and b/cw_stock/static/description/assets/modules/inter_company.png differ diff --git a/cw_stock/static/description/assets/modules/scrap.png b/cw_stock/static/description/assets/modules/scrap.png new file mode 100644 index 000000000..68dc568ff Binary files /dev/null and b/cw_stock/static/description/assets/modules/scrap.png differ diff --git a/cw_stock/static/description/assets/modules/serial_number.png b/cw_stock/static/description/assets/modules/serial_number.png new file mode 100644 index 000000000..a4aa0997f Binary files /dev/null and b/cw_stock/static/description/assets/modules/serial_number.png differ diff --git a/cw_stock/static/description/assets/screenshots/hero.gif b/cw_stock/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..494b1bcb8 Binary files /dev/null and b/cw_stock/static/description/assets/screenshots/hero.gif differ diff --git a/cw_stock/static/description/assets/screenshots/screenshot-1.png b/cw_stock/static/description/assets/screenshots/screenshot-1.png new file mode 100644 index 000000000..8782bf9ca Binary files /dev/null and b/cw_stock/static/description/assets/screenshots/screenshot-1.png differ diff --git a/cw_stock/static/description/assets/screenshots/screenshot-2.png b/cw_stock/static/description/assets/screenshots/screenshot-2.png new file mode 100644 index 000000000..3181216a0 Binary files /dev/null and b/cw_stock/static/description/assets/screenshots/screenshot-2.png differ diff --git a/cw_stock/static/description/assets/screenshots/screenshot-3.png b/cw_stock/static/description/assets/screenshots/screenshot-3.png new file mode 100644 index 000000000..d6f8c473a Binary files /dev/null and b/cw_stock/static/description/assets/screenshots/screenshot-3.png differ diff --git a/cw_stock/static/description/assets/screenshots/screenshot-4.png b/cw_stock/static/description/assets/screenshots/screenshot-4.png new file mode 100644 index 000000000..bbe361fb3 Binary files /dev/null and b/cw_stock/static/description/assets/screenshots/screenshot-4.png differ diff --git a/cw_stock/static/description/banner.jpg b/cw_stock/static/description/banner.jpg new file mode 100644 index 000000000..eb704aeff Binary files /dev/null and b/cw_stock/static/description/banner.jpg differ diff --git a/cw_stock/static/description/icon.png b/cw_stock/static/description/icon.png new file mode 100644 index 000000000..cda01c76f Binary files /dev/null and b/cw_stock/static/description/icon.png differ diff --git a/cw_stock/static/description/index.html b/cw_stock/static/description/index.html new file mode 100644 index 000000000..98860c40d --- /dev/null +++ b/cw_stock/static/description/index.html @@ -0,0 +1,598 @@ +
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+
+
+
+
+
+

+ Catch Weight Management: Inventory

+

+ Helps to Manage Catch Weight of Products in Inventory Module +

+ +
+
+ +
+
+

+ Overview +

+
+
+

+ Catch weight is simply a parallel unit of measure used to manage + variable-weight products. This module + helps to deal with catch weight in Inventory module. It is + possible to enable the catch weight for each + Product. Catch weight is available in Stock Moves and Scrap + orders. +

+
+
+
+
+

+ Features +

+
+
+
+ +
+
+

+ Catch Weight may be added to each Product.

+
+
+
+
+ +
+
+

+ Catch Weight is available in Transfers

+
+
+
+
+ +
+
+

+ Catch Weight is available in Scrap Orders.

+
+
+
+
+
+
+

+ Screenshots +

+
+
+

+ Enable Catch Weight Product.

+

+ We can click on Catch Weight Product to enable the + Catch Weight on selected product. Also + add CW-Uom and Catch Weight.

+ +
+
+

+ Catch Weight in Transfers.

+

+ While we select the product and components, if the Product has Catch + Weight, then CW-Uom and + CW-Demand will be displayed there.

+ +
+
+

+ Catch Weight in Scrap Orders.

+ +
+
+

+ Catch Weight in Product Scrap Moves.

+ +
+
+ +
+
+

Suggested Products

+
+ +
+
+ + +
+
+
+

Our Services

+
+
+
+
+ +
+
+ Odoo + Customization
+
+
+
+ +
+
+ Odoo + Implementation
+
+
+
+ +
+
+ Odoo + Support
+
+
+
+ +
+
+ Hire + Odoo + Developer
+
+
+
+ +
+
+ Odoo + Integration
+
+
+
+ +
+
+ Odoo + Migration
+
+
+
+ +
+
+ Odoo + Consultancy
+
+
+
+ +
+
+ Odoo + Implementation
+
+
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+
+ + +
+
+
+

Our Industries

+
+
+ +
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + +
+
+
+

Need Help?

+
+
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+ + + diff --git a/cw_stock/views/product_template_views.xml b/cw_stock/views/product_template_views.xml new file mode 100644 index 000000000..a4dd2bf66 --- /dev/null +++ b/cw_stock/views/product_template_views.xml @@ -0,0 +1,35 @@ + + + + + product.template.view.form.inherit.cw.stock + product.template + + + + + + + + + + + + + + + diff --git a/cw_stock/views/stock_move_line_views.xml b/cw_stock/views/stock_move_line_views.xml new file mode 100644 index 000000000..d1114edbb --- /dev/null +++ b/cw_stock/views/stock_move_line_views.xml @@ -0,0 +1,40 @@ + + + + + stock.move.line.view.form.inherit.cw.stock + stock.move.line + + + + + + + + + stock.move.line.view.tree.inherit.cw.stock + stock.move.line + + + + + + + + + + + diff --git a/cw_stock/views/stock_picking_views.xml b/cw_stock/views/stock_picking_views.xml new file mode 100644 index 000000000..7dc6a6661 --- /dev/null +++ b/cw_stock/views/stock_picking_views.xml @@ -0,0 +1,37 @@ + + + + + stock.picking.view.form.inherit.cw.stock + stock.picking + + + + + + + + + + + + + diff --git a/cw_stock/views/stock_return_views.xml b/cw_stock/views/stock_return_views.xml new file mode 100644 index 000000000..9a62e6ab1 --- /dev/null +++ b/cw_stock/views/stock_return_views.xml @@ -0,0 +1,21 @@ + + + + + stock.return.picking.view.form.inherit.cw.stock + + stock.return.picking + + + + + + + + + + + diff --git a/cw_stock/views/stock_scrap_views.xml b/cw_stock/views/stock_scrap_views.xml new file mode 100644 index 000000000..0219656ad --- /dev/null +++ b/cw_stock/views/stock_scrap_views.xml @@ -0,0 +1,49 @@ + + + + + stock.scrap.view.form.inherit.cw.stock + stock.scrap + + + + + + + + + + stock.scrap.view.form.inherit.cw.stock + stock.scrap + + + + + + + + diff --git a/cw_stock/views/stock_valuation_layer_views.xml b/cw_stock/views/stock_valuation_layer_views.xml new file mode 100644 index 000000000..8f69f6ba9 --- /dev/null +++ b/cw_stock/views/stock_valuation_layer_views.xml @@ -0,0 +1,22 @@ + + + + + stock.valuation.layer.view.tree.inherit.cw.stock + + stock.valuation.layer + + + + + + + + + + +