Skip to content

Commit

Permalink
[ADD]stock_package_autoload: new module
Browse files Browse the repository at this point in the history
This module allows to automatically add the content of a package to the transfer lines
  • Loading branch information
PicchiSeba authored and anusriNPS committed Dec 11, 2024
1 parent 498e678 commit e64683b
Show file tree
Hide file tree
Showing 12 changed files with 760 additions and 0 deletions.
86 changes: 86 additions & 0 deletions stock_package_autoload/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
======================
Stock Package Autoload
======================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:69b0a48bbc64d618505cdad031811c2a8e87a47821b73c1d6b6113126f8d26ae
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstock--logistics--warehouse-lightgray.png?logo=github
:target: https://github.com/OCA/stock-logistics-warehouse/tree/14.0/stock_package_autoload
:alt: OCA/stock-logistics-warehouse
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/stock-logistics-warehouse-14-0/stock-logistics-warehouse-14-0-stock_package_autoload
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/stock-logistics-warehouse&target_branch=14.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module allows to automatically add the content of a package to each Transfer line.

**Table of contents**

.. contents::
:local:

Usage
=====

On a Transfer in "ready" state, click on the 'Detailed Operations' button on one of the lines.

You can select a package and automatically add its content to the transfer.
Lots with the same serial cannot be added more than once

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/stock-logistics-warehouse/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/stock-logistics-warehouse/issues/new?body=module:%20stock_package_autoload%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
~~~~~~~

* PyTech SRL

Contributors
~~~~~~~~~~~~

* `PyTech-SRL <info@pytech.it>`_:

* Sebastiano Picchi <sebastiano.picchi@pytech.it>

Maintainers
~~~~~~~~~~~

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/stock-logistics-warehouse <https://github.com/OCA/stock-logistics-warehouse/tree/14.0/stock_package_autoload>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions stock_package_autoload/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
21 changes: 21 additions & 0 deletions stock_package_autoload/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"name": "Stock Package Autoload",
"summary": """
Select a package to add its content to a transfer line
""",
"version": "14.0.1.0.0",
"author": "PyTech SRL, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/stock-logistics-warehouse",
"category": "Warehouse Management",
"depends": [
"stock",
"web_domain_field",
],
"data": [
"views/stock_move_view.xml",
],
"demo": [],
"license": "AGPL-3",
"installable": True,
"application": False,
}
1 change: 1 addition & 0 deletions stock_package_autoload/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import stock_move
79 changes: 79 additions & 0 deletions stock_package_autoload/models/stock_move.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
import json

from odoo import api, fields, models


class StockMove(models.Model):
_inherit = "stock.move"

package_domain = fields.Char(
compute="_compute_package_domain",
readonly=True,
store=False,
)
load_products_from_package_id = fields.Many2one(
"stock.quant.package",
string="Add package contents",
help="Autoresets after use",
)

def _package_domain(self):
self.ensure_one()
to_return = (
[
(
"id",
"in",
self.env["stock.quant.package"]
.search([("quant_ids.product_id", "=", self.product_id.id)])
.ids,
)
]
if self.product_id
else []
)
return to_return

def _compute_package_domain(self):
"""
There's no need to compute this field if the current user doesn't have the
necessary group
"""
if not self.env.user.has_group("stock.group_tracking_lot"):
self.write({"package_domain": "[]"})
return
for sm in self:
domain = sm._package_domain()
sm.package_domain = json.dumps(domain)

@api.onchange("load_products_from_package_id")
def _onchange_load_products_from_package_id(self):
"""Automatically load all items contained in the selected package.
Once the items have been added, the package is deleted.
The same serials cannot be selected more than once.
"""
current_lots = self.move_line_ids.mapped("lot_id")
product_quants = self.load_products_from_package_id.quant_ids.filtered(
lambda q, lots=current_lots: q.lot_id not in lots
)
common_line_data = {
"move_id": self.id,
"tracking": self.has_tracking,
"product_id": self.product_id.id,
"package_id": self.load_products_from_package_id.id,
"location_id": self.location_id.id,
"location_dest_id": self.location_dest_id.id,
}
data_list = []
for quant in product_quants:
data = common_line_data.copy()
data.update(
{
"qty_done": quant.quantity,
"product_uom_id": quant.product_uom_id.id,
"lot_id": quant.lot_id.id,
}
)
data_list.append(data)
self.env["stock.move.line"].create(data_list)
self.load_products_from_package_id = False
3 changes: 3 additions & 0 deletions stock_package_autoload/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
* `PyTech-SRL <info@pytech.it>`_:

* Sebastiano Picchi <sebastiano.picchi@pytech.it>
1 change: 1 addition & 0 deletions stock_package_autoload/readme/DESCRIPTION.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This module allows to automatically add the content of a package to each Transfer line.
4 changes: 4 additions & 0 deletions stock_package_autoload/readme/USAGE.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
On a Transfer in "ready" state, click on the 'Detailed Operations' button on one of the lines.

You can select a package and automatically add its content to the transfer.
Lots with the same serial cannot be added more than once
Loading

0 comments on commit e64683b

Please sign in to comment.