Initial commit: OCA Technical packages (595 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:03 +02:00
commit 2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions

View file

@ -0,0 +1,46 @@
# Stock Available Unreserved
Odoo addon: stock_available_unreserved
## Installation
```bash
pip install odoo-bringout-oca-stock-logistics-availability-stock_available_unreserved
```
## Dependencies
This addon depends on:
- stock
## Manifest Information
- **Name**: Stock Available Unreserved
- **Version**: 16.0.1.0.1
- **Category**: Warehouse Availability
- **License**: LGPL-3
- **Installable**: False
## Source
Based on [OCA/stock-logistics-availability](https://github.com/OCA/stock-logistics-availability) branch 16.0, addon `stock_available_unreserved`.
## License
This package maintains the original LGPL-3 license from the upstream Odoo project.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Reports: doc/REPORTS.md
- Security: doc/SECURITY.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

@ -0,0 +1,32 @@
# Architecture
```mermaid
flowchart TD
U[Users] -->|HTTP| V[Views and QWeb Templates]
V --> C[Controllers]
V --> W[Wizards Transient Models]
C --> M[Models and ORM]
W --> M
M --> R[Reports]
DX[Data XML] --> M
S[Security ACLs and Groups] -. enforces .-> M
subgraph Stock_available_unreserved Module - stock_available_unreserved
direction LR
M:::layer
W:::layer
C:::layer
V:::layer
R:::layer
S:::layer
DX:::layer
end
classDef layer fill:#eef8ff,stroke:#6ea8fe,stroke-width:1px
```
Notes
- Views include tree/form/kanban templates and report templates.
- Controllers provide website/portal routes when present.
- Wizards are UI flows implemented with `models.TransientModel`.
- Data XML loads data/demo records; Security defines groups and access.

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for stock_available_unreserved. Configure related models, access rights, and options as needed.

View file

@ -0,0 +1,3 @@
# Controllers
This module does not define custom HTTP controllers.

View file

@ -0,0 +1,5 @@
# Dependencies
This addon depends on:
- [stock](../../odoo-bringout-oca-ocb-stock)

View file

@ -0,0 +1,4 @@
# FAQ
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
- Q: How to enable? A: Start server with --addon stock_available_unreserved or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-stock-logistics-availability-stock_available_unreserved"
# or
uv pip install odoo-bringout-oca-stock-logistics-availability-stock_available_unreserved"
```

View file

@ -0,0 +1,14 @@
# Models
Detected core models and extensions in stock_available_unreserved.
```mermaid
classDiagram
class product_product
class product_template
class stock_quant
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

@ -0,0 +1,6 @@
# Overview
Packaged Odoo addon: stock_available_unreserved. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon stock_available_unreserved
- License: LGPL-3

View file

@ -0,0 +1,3 @@
# Reports
This module does not define custom reports.

View file

@ -0,0 +1,8 @@
# Security
This module does not define custom security rules or access controls beyond Odoo defaults.
Default Odoo security applies:
- Base user access through standard groups
- Model access inherited from dependencies
- No custom row-level security rules

View file

@ -0,0 +1,5 @@
# Troubleshooting
- Ensure Python and Odoo environment matches repo guidance.
- Check database connectivity and logs if startup fails.
- Validate that dependent addons listed in DEPENDENCIES.md are installed.

View file

@ -0,0 +1,7 @@
# Usage
Start Odoo including this addon (from repo root):
```bash
python3 scripts/nix_odoo_web_server.py --db-name mydb --addon stock_available_unreserved
```

View file

@ -0,0 +1,3 @@
# Wizards
This module does not include UI wizards.

View file

@ -0,0 +1,42 @@
[project]
name = "odoo-bringout-oca-stock-logistics-availability-stock_available_unreserved"
version = "16.0.0"
description = "Stock Available Unreserved - Quantity of stock available for immediate use"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-ocb-stock>=16.0.0",
"requests>=2.25.1"
]
readme = "README.md"
requires-python = ">= 3.11"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Office/Business",
]
[project.urls]
homepage = "https://github.com/bringout/0"
repository = "https://github.com/bringout/0"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["stock_available_unreserved"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]

View file

@ -0,0 +1,102 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association
==========================
Stock Available Unreserved
==========================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:159857771ed519570ed4c93be34d0bf823008e7f8ba0c2654e177c6e139de21a
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
:target: https://odoo-community.org/page/development-status
:alt: Production/Stable
.. |badge2| image:: https://img.shields.io/badge/license-LGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstock--logistics--availability-lightgray.png?logo=github
:target: https://github.com/OCA/stock-logistics-availability/tree/16.0/stock_available_unreserved
:alt: OCA/stock-logistics-availability
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/stock-logistics-availability-16-0/stock-logistics-availability-16-0-stock_available_unreserved
: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-availability&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows users to check the quantity of a stocked product that is
available on-hand, and that has not yet been reserved for use anywhere else.
This key figure is very important during the monitoring of the warehouse
execution, because it assists users to ensure that the flow of products will
not be stuck due to a sudden unavailability of stock.
If the warehouse personnel ensures that the unreserved quantity on hand > 0,
then nobody will be stuck in pickings or manufacturing orders waiting for
the availability of unreserved stock.
**Table of contents**
.. contents::
:local:
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/stock-logistics-availability/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-availability/issues/new?body=module:%20stock_available_unreserved%0Aversion:%2016.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
~~~~~~~
* ForgeFlow
Contributors
~~~~~~~~~~~~
* Jordi Ballester Alomar <jordi.ballester@forgeflow.com>
* Stefan Rijnhart <stefan@opener.amsterdam>
* Mykhailo Panarin <m.panarin@mobilunity.com>
* Atte Isopuro <atte.isopuro@avoin.systems>
* Lois Rilo <lois.rilo@forgeflow.com>
* Souheil Bejaoui <souheil.bejaoui@acsone.eu>
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.
.. |maintainer-LoisRForgeFlow| image:: https://github.com/LoisRForgeFlow.png?size=40px
:target: https://github.com/LoisRForgeFlow
:alt: LoisRForgeFlow
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-LoisRForgeFlow|
This module is part of the `OCA/stock-logistics-availability <https://github.com/OCA/stock-logistics-availability/tree/16.0/stock_available_unreserved>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,17 @@
# Copyright 2018 Camptocamp SA
# Copyright 2016-19 ForgeFlow S.L. (https://www.forgeflow.com)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
{
"name": "Stock Available Unreserved",
"summary": "Quantity of stock available for immediate use",
"version": "16.0.1.0.1",
"author": "ForgeFlow, Odoo Community Association (OCA)",
"development_status": "Production/Stable",
"maintainers": ["LoisRForgeFlow"],
"website": "https://github.com/OCA/stock-logistics-availability",
"category": "Warehouse Availability",
"depends": ["stock"],
"data": ["views/stock_quant_view.xml", "views/product_view.xml"],
"license": "LGPL-3",
}

View file

@ -0,0 +1,98 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2018-06-29 14:21+0000\n"
"Last-Translator: Osoul <baruni@osoul.ly>\n"
"Language-Team: none\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"X-Generator: Weblate 3.0.1\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr "يحتوي على كميات غير محجوزة"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr "الغير محجوز داخلياً"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "المنتج"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr "الكمية المتوفرة الغير محجوزة"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr "الكمية في متناول اليد الغير محجوزة"
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr "المنتجات القابلة للحجز"
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr "الكمية في متناول اليد (غير محجوزة)"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr "غير محجوز"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr "غير محجوز:"
#~ msgid "Product Template"
#~ msgstr "قالب المنتج"

View file

@ -0,0 +1,91 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr "Sadrži proizvode bez rezervacija"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr "Interno ne rezervirano"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr "Neispravan operator domene %s"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr "Neispravan desni operand domene %s"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Proizvod"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr "Varijanta proizvoda"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr "Dostupna količina bez rezervacija"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr "Dostupna količina pri ruci bez rezerv"
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr "Kvanti"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr "Proizvodi koje se može rezervirati"
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr "Dostupna zaliha (ne rezervirana)"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr "Odrezervirano"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr "Odrezervirano:"

View file

@ -0,0 +1,100 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# Carles Antoli <carlesantoli@hotmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2022-08-17 12:07+0000\n"
"Last-Translator: jabelchi <jabelchi@gmail.com>\n"
"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.3.2\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr "Conté productes sense reservar"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr "Operador de domini %s no és vàlid"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Producte"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""
#~ msgid "Product Template"
#~ msgstr "Plantilla del producte"

View file

@ -0,0 +1,108 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-16 14:35+0000\n"
"PO-Revision-Date: 2018-01-16 14:35+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr "Intern nicht reserviert"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Produkt"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr "Freier Bestand"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr "Nicht reservierte, verfügbare Menge"
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr "Freier Bestand (nicht reserv.)"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr "Nicht reserviert"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr "Nicht reserviert:"
#~ msgid "Product Template"
#~ msgstr "Produktvorlage"
#~ msgid " On Hand"
#~ msgstr "Verfügbar"
#~ msgid "Available per stock"
#~ msgstr "Verfügbar nach Bestand"
#~ msgid "Unreserved stock quantity"
#~ msgstr "Nicht reservierte Bestandsmenge"

View file

@ -0,0 +1,97 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# Kostas Goutoudis <goutoudis@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2017-03-04 03:58+0000\n"
"Last-Translator: Kostas Goutoudis <goutoudis@gmail.com>, 2017\n"
"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/"
"el_GR/)\n"
"Language: el_GR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Προϊόν"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""

View file

@ -0,0 +1,101 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2023-03-21 17:22+0000\n"
"Last-Translator: Nacho Morales <ignacio.morales@factorlibre.com>\n"
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.14.1\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr "Contiene producto no reservado"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr "No reservado interno"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr "Operador de dominio inválido %s"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr "Operando de dominio inválido %s"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Producto"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr "Variante de producto"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr "Cant. Disponible No Reservada"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr "Cantidad A Mano No Reservada"
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
"Cantidad del producto que actualmente no este disponible para este movimiento"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr "Cantidades"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr "Productos Reservables"
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr "Stock A Mano (No Reservado)"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr "No reservado"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr "No reservado:"
#~ msgid "Product Template"
#~ msgstr "Plantilla de producto"

View file

@ -0,0 +1,97 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# Javier García-Panach <panaka7@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2017-03-04 03:58+0000\n"
"Last-Translator: Javier García-Panach <panaka7@gmail.com>, 2017\n"
"Language-Team: Spanish (Spain) (https://www.transifex.com/oca/teams/23907/"
"es_ES/)\n"
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Producto"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""

View file

@ -0,0 +1,100 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# Juan González <bifomania@protonmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2017-03-04 03:58+0000\n"
"Last-Translator: Juan González <bifomania@protonmail.com>, 2017\n"
"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/"
"es_MX/)\n"
"Language: es_MX\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""
#~ msgid "Product Template"
#~ msgstr "Plantilla del producto"

View file

@ -0,0 +1,96 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# Esther Martín Menéndez <esthermartin001@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2017-03-04 03:58+0000\n"
"Last-Translator: Esther Martín Menéndez <esthermartin001@gmail.com>, 2017\n"
"Language-Team: Basque (https://www.transifex.com/oca/teams/23907/eu/)\n"
"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Produktua"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""

View file

@ -0,0 +1,99 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2017-03-04 03:58+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Tuote"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""
#~ msgid "Product Template"
#~ msgstr "Tuotteen malli"

View file

@ -0,0 +1,100 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2021-11-05 14:35+0000\n"
"Last-Translator: Rémi <remi@le-filament.com>\n"
"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.3.2\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr "Contient des articles non réservés"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr "Stock Interne Non Réservé"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr "Opérateur de domaine invalide %s"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr "Champ de droite du domaine invalide %s"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Variante d'Article"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr "Quantité Disponible Non Réservée"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr "Quantité Disponible Non Réservée"
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr "Articles Réservables"
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr "Quantités en stock (Non réservées)"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr "Non réservé"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr "Non réservé :"
#~ msgid "Product Template"
#~ msgstr "Article"

View file

@ -0,0 +1,101 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# leemannd <denis.leemann@camptocamp.com>, 2017
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2017-03-04 03:58+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: French (Switzerland) (https://www.transifex.com/oca/"
"teams/23907/fr_CH/)\n"
"Language: fr_CH\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Produit"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""
#~ msgid "Product Template"
#~ msgstr "Template de produit"

View file

@ -0,0 +1,97 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2017-03-04 03:58+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: French (France) (https://www.transifex.com/oca/teams/23907/"
"fr_FR/)\n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Produit"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""

View file

@ -0,0 +1,96 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# César Castro Cruz <ulmroan@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2017-03-04 03:58+0000\n"
"Last-Translator: César Castro Cruz <ulmroan@gmail.com>, 2017\n"
"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n"
"Language: gl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Produto"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""

View file

@ -0,0 +1,102 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# Bole <bole@dajmi5.com>, 2017
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2023-03-01 17:22+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>\n"
"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.14.1\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr "Sadrži proizvode bez rezervacija"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr "Interno ne rezervirano"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr "Neispravan operator domene %s"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr "Neispravan desni operand domene %s"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Proizvod"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr "Dostupna količina bez rezervacija"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr "Dostupna količina pri ruci bez rezerv"
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr "Kvanti"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr "Proizvodi koje se može rezervirati"
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr "Dostupna zaliha (ne rezervirana)"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr "Odrezervirano"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr "Odrezervirano:"
#~ msgid "Product Template"
#~ msgstr "Predložak proizvoda"

View file

@ -0,0 +1,102 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# Bole <bole@dajmi5.com>, 2017
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2017-03-04 03:58+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/"
"hr_HR/)\n"
"Language: hr_HR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Proizvod"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""
#~ msgid "Product Template"
#~ msgstr "Predložak proizvoda"

View file

@ -0,0 +1,103 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# Paolo Valier <paolo.valier@hotmail.it>, 2017
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2023-12-13 15:35+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr "Contiene prodotti non prenotati"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr "Interni non prenotati"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr "Operatore dominio %s errato"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr "Operatore destro di dominio %s errato"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Prodotto"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr "Variante prodotto"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr "Q.tà disponibile non prenotata"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr "Quantità disponibile non prenotata"
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
"Quantità di questo prodotto che non è attualmente prenotata per un movimento "
"di magazzino"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr "Quanti"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr "Prodotti prenotabili"
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr "Giacenze disponibili (non prenotate)"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr "Non prenotato"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr "Non prenotato:"
#~ msgid "Product Template"
#~ msgstr "Template Prodotto"

View file

@ -0,0 +1,99 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-16 14:35+0000\n"
"PO-Revision-Date: 2018-01-16 14:35+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Product"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""
#~ msgid "Product Template"
#~ msgstr "Productsjabloon"

View file

@ -0,0 +1,101 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Peter Hageman <hageman.p@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-23 00:57+0000\n"
"PO-Revision-Date: 2017-06-23 00:57+0000\n"
"Last-Translator: Peter Hageman <hageman.p@gmail.com>, 2017\n"
"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/"
"teams/23907/nl_NL/)\n"
"Language: nl_NL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Product"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""
#~ msgid "Product Template"
#~ msgstr "Productsjabloon"

View file

@ -0,0 +1,96 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2017-03-04 03:58+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Produto"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""

View file

@ -0,0 +1,105 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# Claudio Araujo Santos <claudioaraujosantos@gmail.com>, 2017
# OCA Transbot <transbot@odoo-community.org>, 2017
# danimaribeiro <danimaribeiro@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2024-11-25 18:47+0000\n"
"Last-Translator: Wesley Oliveira <wesleygabrieldeoliveira@gmail.com>\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/"
"23907/pt_BR/)\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.6.2\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr "Contém produtos não reservados"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr "Interno não reservado"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr "Operador de domínio inválido %s"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr "Operando direito de domínio inválido %s"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Produto"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr "Variante do Produto"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr "Quantidade disponível não reservada"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr "Quantidade disponível não reservada"
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
"Quantidade deste produto que não está atualmente reservada para movimentação "
"de estoque"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr "Quantidades"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr "Produtos Reservados"
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr "Estoque disponível (sem reserva)"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr "Não Reservado"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr "Não reservado:"
#~ msgid "Product Template"
#~ msgstr "Modelo Produto"

View file

@ -0,0 +1,100 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2017-03-04 03:58+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
"2:1));\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Produs"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""
#~ msgid "Product Template"
#~ msgstr "Produs șablon"

View file

@ -0,0 +1,98 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-16 14:35+0000\n"
"PO-Revision-Date: 2018-01-16 14:35+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2018\n"
"Language-Team: Russian (https://www.transifex.com/oca/teams/23907/ru/)\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
"%100>=11 && n%100<=14)? 2 : 3);\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Товар/Услуга"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""

View file

@ -0,0 +1,109 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-16 14:35+0000\n"
"PO-Revision-Date: 2018-01-16 14:35+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
"%100==4 ? 2 : 3);\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr "Interno ne rezervirano"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Proizvod"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr "Ne rezervirana količina na voljo"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr "Ne rezervirana količna pri roki"
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr "Količina pri roki (ne rezervirana)"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr "Odstranjena rezervacija"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr "Ne rezervirano:"
#~ msgid "Product Template"
#~ msgstr "Predloga proizvoda"
#~ msgid " On Hand"
#~ msgstr "Na voljo"
#~ msgid "Available per stock"
#~ msgstr "Na voljo po zalogah"
#~ msgid "Unreserved stock quantity"
#~ msgstr "Količina ne rezerviranih zalog"

View file

@ -0,0 +1,91 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""

View file

@ -0,0 +1,101 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# Ediz Duman <neps1192@gmail.com>, 2017
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-23 00:57+0000\n"
"PO-Revision-Date: 2025-02-20 09:06+0000\n"
"Last-Translator: İsmail Çağan Yılmaz <ismail.cagan.yilmaz@gmail.com>\n"
"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Weblate 5.6.2\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr "Rezerve edilmemiş ürünler içerir"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr "Dahili Rezerve Edilmemiş"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr "Geçersiz alan adı operatörü %s"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr "Geçersiz alan adı sağ işleneni %s"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Ürün"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr "Ürün Varyantı"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr "Rezerve Edilmemiş Mevcut Miktar"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr "Rezerve Edilmemiş Eldeki Miktar"
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr "Bu ürünün şu anda stok hareketi için rezerve edilmemiş miktarı"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr "Miktarlar"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr "Rezerve Edilebilir Ürünler"
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr "Eldeki Stok (Rezerve Edilmemiş)"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr "Rezerve Edilmemiş"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr "Rezerve Edilmemiş:"
#~ msgid "Product Template"
#~ msgstr "Ürün Şablonu"

View file

@ -0,0 +1,100 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# Ozge Altinisik <ozge@altinkaya.com.tr>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2017-03-04 03:58+0000\n"
"Last-Translator: Ozge Altinisik <ozge@altinkaya.com.tr>, 2017\n"
"Language-Team: Turkish (Turkey) (https://www.transifex.com/oca/teams/23907/"
"tr_TR/)\n"
"Language: tr_TR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Ürün"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""
#~ msgid "Product Template"
#~ msgstr "Ürün şablonu"

View file

@ -0,0 +1,100 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2017-03-04 03:58+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Vietnamese (Viet Nam) (https://www.transifex.com/oca/"
"teams/23907/vi_VN/)\n"
"Language: vi_VN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr ""
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "Sản phẩm"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr ""
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr ""
#~ msgid "Product Template"
#~ msgstr "Mẫu sản phẩm"

View file

@ -0,0 +1,101 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_available_unreserved
#
# Translators:
# Jeffery CHEN <jeffery9@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-03-04 03:58+0000\n"
"PO-Revision-Date: 2019-09-26 17:24+0000\n"
"Last-Translator: 黎伟杰 <674416404@qq.com>\n"
"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/"
"zh_CN/)\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 3.8\n"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_stock_quant__contains_unreserved
msgid "Contains unreserved products"
msgstr "包含未预留的产品"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.quant_search_view
msgid "Internal Unreserved"
msgstr "内部未预留"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain operator %s"
msgstr "无效的域运算符%s"
#. module: stock_available_unreserved
#. odoo-python
#: code:addons/stock_available_unreserved/models/product_product.py:0
#, python-format
msgid "Invalid domain right operand %s"
msgstr "无效的域权限操作数%s"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_template
msgid "Product"
msgstr "产品"
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_product_product
msgid "Product Variant"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_product__qty_available_not_res
msgid "Qty Available Not Reserved"
msgstr "可用量未预留"
#. module: stock_available_unreserved
#: model:ir.model.fields,field_description:stock_available_unreserved.field_product_template__qty_available_not_res
msgid "Quantity On Hand Unreserved"
msgstr "未预留的在手数量"
#. module: stock_available_unreserved
#: model:ir.model.fields,help:stock_available_unreserved.field_product_product__qty_available_not_res
#: model:ir.model.fields,help:stock_available_unreserved.field_product_template__qty_available_not_res
msgid ""
"Quantity of this product that is not currently reserved for a stock move"
msgstr ""
#. module: stock_available_unreserved
#: model:ir.model,name:stock_available_unreserved.model_stock_quant
msgid "Quants"
msgstr "数量分析"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_search_form_view_stock
msgid "Reservable Products"
msgstr "可预订产品"
#. module: stock_available_unreserved
#: model:ir.actions.act_window,name:stock_available_unreserved.product_open_quants_unreserved
msgid "Stock On Hand (Unreserved)"
msgstr "现有库存(未预留)"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_form_view_procurement_button
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_form_view_procurement_button
msgid "Unreserved"
msgstr "未预留"
#. module: stock_available_unreserved
#: model_terms:ir.ui.view,arch_db:stock_available_unreserved.product_template_kanban_stock_view
msgid "Unreserved:"
msgstr "未预留:"
#~ msgid "Product Template"
#~ msgstr "产品模板"

View file

@ -0,0 +1,3 @@
from . import product_template
from . import product_product
from . import stock_quant

View file

@ -0,0 +1,78 @@
# Copyright 2018 Camptocamp SA
# Copyright 2016-19 ForgeFlow S.L. (https://www.forgeflow.com)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo import _, api, fields, models
from odoo.exceptions import UserError
from odoo.tools.float_utils import float_round
from odoo.addons.stock.models.product import OPERATORS
class ProductProduct(models.Model):
_inherit = "product.product"
qty_available_not_res = fields.Float(
string="Qty Available Not Reserved",
digits="Product Unit of Measure",
compute="_compute_qty_available_not_reserved",
search="_search_quantity_unreserved",
help="Quantity of this product that is "
"not currently reserved for a stock move",
)
def _prepare_domain_available_not_reserved(self):
domain_quant = [("product_id", "in", self.ids)]
domain_quant_locations = self._get_domain_locations()[0]
domain_quant.extend(domain_quant_locations)
return domain_quant
def _compute_product_available_not_res_dict(self):
res = {}
domain_quant = self._prepare_domain_available_not_reserved()
quants = (
self.env["stock.quant"]
.with_context(lang=False)
.read_group(
domain_quant,
["product_id", "location_id", "quantity", "reserved_quantity"],
["product_id", "location_id"],
lazy=False,
)
)
product_sums = {}
for quant in quants:
# create a dictionary with the total value per products
product_sums.setdefault(quant["product_id"][0], 0.0)
product_sums[quant["product_id"][0]] += (
quant["quantity"] - quant["reserved_quantity"]
)
for product in self.with_context(prefetch_fields=False, lang=""):
available_not_res = float_round(
product_sums.get(product.id, 0.0),
precision_rounding=product.uom_id.rounding,
)
res[product.id] = {"qty_available_not_res": available_not_res}
return res
@api.depends("stock_move_ids.product_qty", "stock_move_ids.state")
def _compute_qty_available_not_reserved(self):
res = self._compute_product_available_not_res_dict()
for prod in self:
qty = res[prod.id]["qty_available_not_res"]
prod.qty_available_not_res = qty
return res
def _search_quantity_unreserved(self, operator, value):
if operator not in OPERATORS:
raise UserError(_("Invalid domain operator %s") % operator)
if not isinstance(value, (float, int)):
raise UserError(_("Invalid domain right operand %s") % value)
ids = []
for product in self.search([]):
if OPERATORS[operator](product.qty_available_not_res, value):
ids.append(product.id)
return [("id", "in", ids)]

View file

@ -0,0 +1,45 @@
# Copyright 2018 Camptocamp SA
# Copyright 2016-19 ForgeFlow S.L. (https://www.forgeflow.com)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo import api, fields, models
class ProductTemplate(models.Model):
_inherit = "product.template"
qty_available_not_res = fields.Float(
string="Quantity On Hand Unreserved",
digits="Product Unit of Measure",
compute="_compute_product_available_not_res",
search="_search_quantity_unreserved",
help="Quantity of this product that is "
"not currently reserved for a stock move",
)
@api.depends("product_variant_ids.qty_available_not_res")
def _compute_product_available_not_res(self):
for tmpl in self:
if isinstance(tmpl.id, models.NewId):
tmpl.qty_available_not_res = 0.0
continue
tmpl.qty_available_not_res = sum(
tmpl.mapped("product_variant_ids.qty_available_not_res")
)
def action_open_quants_unreserved(self):
products_ids = self.mapped("product_variant_ids").ids
quants = self.env["stock.quant"].search([("product_id", "in", products_ids)])
quant_ids = quants.filtered(
lambda x: x.product_id.qty_available_not_res > 0
).ids
result = self.env.ref("stock.group_stock_multi_locations").read()[0]
result["domain"] = [("id", "in", quant_ids)]
result["context"] = {
"search_default_locationgroup": 1,
"search_default_internal_loc": 1,
}
return result
def _search_quantity_unreserved(self, operator, value):
return [("product_variant_ids.qty_available_not_res", operator, value)]

View file

@ -0,0 +1,26 @@
# Copyright 2018 Camptocamp SA
# Copyright 2016-19 ForgeFlow S.L. (https://www.forgeflow.com)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo import api, fields, models
class StockQuant(models.Model):
_inherit = "stock.quant"
contains_unreserved = fields.Boolean(
string="Contains unreserved products",
compute="_compute_contains_unreserved",
store=True,
)
@api.depends("quantity", "reserved_quantity")
def _compute_contains_unreserved(self):
for record in self:
# Avoid error when adding a new line on manually Update Quantity
if isinstance(record.id, models.NewId):
record.contains_unreserved = False
continue
record.contains_unreserved = (
True if record.available_quantity > 0 else False
)

View file

@ -0,0 +1,6 @@
* Jordi Ballester Alomar <jordi.ballester@forgeflow.com>
* Stefan Rijnhart <stefan@opener.amsterdam>
* Mykhailo Panarin <m.panarin@mobilunity.com>
* Atte Isopuro <atte.isopuro@avoin.systems>
* Lois Rilo <lois.rilo@forgeflow.com>
* Souheil Bejaoui <souheil.bejaoui@acsone.eu>

View file

@ -0,0 +1,10 @@
This module allows users to check the quantity of a stocked product that is
available on-hand, and that has not yet been reserved for use anywhere else.
This key figure is very important during the monitoring of the warehouse
execution, because it assists users to ensure that the flow of products will
not be stuck due to a sudden unavailability of stock.
If the warehouse personnel ensures that the unreserved quantity on hand > 0,
then nobody will be stuck in pickings or manufacturing orders waiting for
the availability of unreserved stock.

View file

@ -0,0 +1,443 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
<img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
</a>
<div class="section" id="stock-available-unreserved">
<h1>Stock Available Unreserved</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:159857771ed519570ed4c93be34d0bf823008e7f8ba0c2654e177c6e139de21a
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/lgpl-3.0-standalone.html"><img alt="License: LGPL-3" src="https://img.shields.io/badge/license-LGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/stock-logistics-availability/tree/16.0/stock_available_unreserved"><img alt="OCA/stock-logistics-availability" src="https://img.shields.io/badge/github-OCA%2Fstock--logistics--availability-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/stock-logistics-availability-16-0/stock-logistics-availability-16-0-stock_available_unreserved"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/stock-logistics-availability&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows users to check the quantity of a stocked product that is
available on-hand, and that has not yet been reserved for use anywhere else.</p>
<p>This key figure is very important during the monitoring of the warehouse
execution, because it assists users to ensure that the flow of products will
not be stuck due to a sudden unavailability of stock.</p>
<p>If the warehouse personnel ensures that the unreserved quantity on hand &gt; 0,
then nobody will be stuck in pickings or manufacturing orders waiting for
the availability of unreserved stock.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-1">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-2">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-3">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-4">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-5">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h2><a class="toc-backref" href="#toc-entry-1">Bug Tracker</a></h2>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/stock-logistics-availability/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/stock-logistics-availability/issues/new?body=module:%20stock_available_unreserved%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h2><a class="toc-backref" href="#toc-entry-2">Credits</a></h2>
<div class="section" id="authors">
<h3><a class="toc-backref" href="#toc-entry-3">Authors</a></h3>
<ul class="simple">
<li>ForgeFlow</li>
</ul>
</div>
<div class="section" id="contributors">
<h3><a class="toc-backref" href="#toc-entry-4">Contributors</a></h3>
<ul class="simple">
<li>Jordi Ballester Alomar &lt;<a class="reference external" href="mailto:jordi.ballester&#64;forgeflow.com">jordi.ballester&#64;forgeflow.com</a>&gt;</li>
<li>Stefan Rijnhart &lt;<a class="reference external" href="mailto:stefan&#64;opener.amsterdam">stefan&#64;opener.amsterdam</a>&gt;</li>
<li>Mykhailo Panarin &lt;<a class="reference external" href="mailto:m.panarin&#64;mobilunity.com">m.panarin&#64;mobilunity.com</a>&gt;</li>
<li>Atte Isopuro &lt;<a class="reference external" href="mailto:atte.isopuro&#64;avoin.systems">atte.isopuro&#64;avoin.systems</a>&gt;</li>
<li>Lois Rilo &lt;<a class="reference external" href="mailto:lois.rilo&#64;forgeflow.com">lois.rilo&#64;forgeflow.com</a>&gt;</li>
<li>Souheil Bejaoui &lt;<a class="reference external" href="mailto:souheil.bejaoui&#64;acsone.eu">souheil.bejaoui&#64;acsone.eu</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h3><a class="toc-backref" href="#toc-entry-5">Maintainers</a></h3>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>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.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/LoisRForgeFlow"><img alt="LoisRForgeFlow" src="https://github.com/LoisRForgeFlow.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/stock-logistics-availability/tree/16.0/stock_available_unreserved">OCA/stock-logistics-availability</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1 @@
from . import test_stock_available_unreserved

View file

@ -0,0 +1,369 @@
# Copyright 2018 Camptocamp SA
# Copyright 2016-19 ForgeFlow S.L. (https://www.forgeflow.com)
# Copyright 2019 JARSA Sistemas S.A. de C.V.
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo.tests.common import TransactionCase
class TestStockLogisticsWarehouse(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.pickingObj = cls.env["stock.picking"]
cls.productObj = cls.env["product.product"]
cls.templateObj = cls.env["product.template"]
cls.attrObj = cls.env["product.attribute"]
cls.attrvalueObj = cls.env["product.attribute.value"]
cls.supplier_location = cls.env.ref("stock.stock_location_suppliers")
cls.stock_location = cls.env.ref("stock.stock_location_stock")
cls.customer_location = cls.env.ref("stock.stock_location_customers")
cls.uom_unit = cls.env.ref("uom.product_uom_unit")
cls.main_company = cls.env.ref("base.main_company")
cls.bin_a = cls.env["stock.location"].create(
{
"usage": "internal",
"name": "Bin A",
"location_id": cls.stock_location.id,
"company_id": cls.main_company.id,
}
)
cls.bin_b = cls.env["stock.location"].create(
{
"usage": "internal",
"name": "Bin B",
"location_id": cls.stock_location.id,
"company_id": cls.main_company.id,
}
)
cls.env["stock.location"]._parent_store_compute()
# Create product template
cls.templateAB = cls.templateObj.create(
{"name": "templAB", "uom_id": cls.uom_unit.id, "type": "product"}
)
# Create product A and B
cls.color_attribute = cls.attrObj.create({"name": "Color", "sequence": 1})
cls.color_black = cls.attrvalueObj.create(
{"name": "Black", "attribute_id": cls.color_attribute.id, "sequence": 1}
)
cls.color_white = cls.attrvalueObj.create(
{"name": "White", "attribute_id": cls.color_attribute.id, "sequence": 2}
)
cls.color_grey = cls.attrvalueObj.create(
{"name": "Grey", "attribute_id": cls.color_attribute.id, "sequence": 3}
)
cls.product_attribute_line = cls.env["product.template.attribute.line"].create(
{
"product_tmpl_id": cls.templateAB.id,
"attribute_id": cls.color_attribute.id,
"value_ids": [
(6, 0, [cls.color_white.id, cls.color_black.id, cls.color_grey.id])
],
}
)
cls.productA = cls.templateAB.product_variant_ids[0]
cls.productB = cls.templateAB.product_variant_ids[1]
cls.productC = cls.templateAB.product_variant_ids[2]
# Create a picking move from INCOMING to STOCK
cls.pickingInA = cls.pickingObj.create(
{
"picking_type_id": cls.env.ref("stock.picking_type_in").id,
"location_id": cls.supplier_location.id,
"location_dest_id": cls.stock_location.id,
"move_ids": [
(
0,
0,
{
"name": "Test move",
"product_id": cls.productA.id,
"product_uom": cls.productA.uom_id.id,
"product_uom_qty": 2,
"quantity_done": 2,
"location_id": cls.supplier_location.id,
"location_dest_id": cls.stock_location.id,
},
)
],
}
)
cls.pickingInB = cls.pickingObj.create(
{
"picking_type_id": cls.env.ref("stock.picking_type_in").id,
"location_id": cls.supplier_location.id,
"location_dest_id": cls.stock_location.id,
"move_ids": [
(
0,
0,
{
"name": "Test move",
"product_id": cls.productB.id,
"product_uom": cls.productB.uom_id.id,
"product_uom_qty": 3,
"quantity_done": 3,
"location_id": cls.supplier_location.id,
"location_dest_id": cls.stock_location.id,
},
)
],
}
)
cls.pickingOutA = cls.pickingObj.create(
{
"picking_type_id": cls.env.ref("stock.picking_type_out").id,
"location_id": cls.stock_location.id,
"location_dest_id": cls.customer_location.id,
"immediate_transfer": False,
"move_ids": [
(
0,
0,
{
"name": "Test move",
"product_id": cls.productB.id,
"product_uom": cls.productB.uom_id.id,
"product_uom_qty": 2,
"location_id": cls.stock_location.id,
"location_dest_id": cls.customer_location.id,
},
)
],
}
)
def compare_qty_available_not_res(self, product, value):
product.invalidate_cache()
self.assertEqual(product.qty_available_not_res, value)
def test_01_stock_levels(self):
"""checking that qty_available_not_res actually reflects \
the variations in stock, both on product and template"""
self.compare_qty_available_not_res(self.productA, 0)
self.compare_qty_available_not_res(self.templateAB, 0)
self.pickingInA.action_confirm()
self.compare_qty_available_not_res(self.productA, 0)
self.compare_qty_available_not_res(self.templateAB, 0)
self.pickingInA.button_validate()
self.compare_qty_available_not_res(self.productA, 2)
self.compare_qty_available_not_res(self.templateAB, 2)
# will directly trigger button_validate on self.productB
self.pickingInB.button_validate()
self.compare_qty_available_not_res(self.productA, 2)
self.compare_qty_available_not_res(self.productB, 3)
self.compare_qty_available_not_res(self.templateAB, 5)
self.compare_qty_available_not_res(self.productB, 3)
self.compare_qty_available_not_res(self.templateAB, 5)
self.pickingOutA.action_confirm()
self.compare_qty_available_not_res(self.productB, 1)
self.compare_qty_available_not_res(self.templateAB, 3)
self.pickingOutA.button_validate()
self.compare_qty_available_not_res(self.productB, 1)
self.compare_qty_available_not_res(self.templateAB, 3)
self.templateAB.action_open_quants_unreserved()
def test_02_more_than_one_quant(self):
self.env["stock.quant"].create(
{
"location_id": self.stock_location.id,
"company_id": self.main_company.id,
"product_id": self.productA.id,
"quantity": 10.0,
}
)
self.env["stock.quant"].create(
{
"location_id": self.bin_a.id,
"company_id": self.main_company.id,
"product_id": self.productA.id,
"quantity": 10.0,
}
)
self.env["stock.quant"].create(
{
"location_id": self.bin_b.id,
"company_id": self.main_company.id,
"product_id": self.productA.id,
"quantity": 60.0,
}
)
self.compare_qty_available_not_res(self.productA, 80)
def check_variants_found_correctly(self, operator, value, expected):
domain = [("id", "in", self.templateAB.product_variant_ids.ids)]
return self.check_found_correctly(
self.env["product.product"], domain, operator, value, expected
)
def check_template_found_correctly(self, operator, value, expected):
# There may be other products already in the system: ignore those
domain = [("id", "in", self.templateAB.ids)]
return self.check_found_correctly(
self.env["product.template"], domain, operator, value, expected
)
def check_found_correctly(self, model, domain, operator, value, expected):
found = model.search(domain + [("qty_available_not_res", operator, value)])
if found != expected:
self.fail(
"Searching for products failed: search for unreserved "
"quantity {operator} {value}; expected to find "
"{expected}, but found {found}".format(
operator=operator,
value=value,
expected=expected or "no products",
found=found,
)
)
def test_03_stock_search(self):
all_variants = self.templateAB.product_variant_ids
a_and_b = self.productA + self.productB
b_and_c = self.productB + self.productC
a_and_c = self.productA + self.productC
no_variants = self.env["product.product"]
no_template = self.env["product.template"]
# Start: one template with three variants.
# All variants have zero unreserved stock
self.check_variants_found_correctly("=", 0, all_variants)
self.check_variants_found_correctly(">=", 0, all_variants)
self.check_variants_found_correctly("<=", 0, all_variants)
self.check_variants_found_correctly(">", 0, no_variants)
self.check_variants_found_correctly("<", 0, no_variants)
self.check_variants_found_correctly("!=", 0, no_variants)
self.check_template_found_correctly("=", 0, self.templateAB)
self.check_template_found_correctly(">=", 0, self.templateAB)
self.check_template_found_correctly("<=", 0, self.templateAB)
self.check_template_found_correctly(">", 0, no_template)
self.check_template_found_correctly("<", 0, no_template)
self.check_template_found_correctly("!=", 0, no_template)
self.pickingInA.action_confirm()
# All variants still have zero unreserved stock
self.check_variants_found_correctly("=", 0, all_variants)
self.check_variants_found_correctly(">=", 0, all_variants)
self.check_variants_found_correctly("<=", 0, all_variants)
self.check_variants_found_correctly(">", 0, no_variants)
self.check_variants_found_correctly("<", 0, no_variants)
self.check_variants_found_correctly("!=", 0, no_variants)
self.check_template_found_correctly("=", 0, self.templateAB)
self.check_template_found_correctly(">=", 0, self.templateAB)
self.check_template_found_correctly("<=", 0, self.templateAB)
self.check_template_found_correctly(">", 0, no_template)
self.check_template_found_correctly("<", 0, no_template)
self.check_template_found_correctly("!=", 0, no_template)
self.pickingInA.action_assign()
# All variants still have zero unreserved stock
self.check_variants_found_correctly("=", 0, all_variants)
self.check_variants_found_correctly(">=", 0, all_variants)
self.check_variants_found_correctly("<=", 0, all_variants)
self.check_variants_found_correctly(">", 0, no_variants)
self.check_variants_found_correctly("<", 0, no_variants)
self.check_variants_found_correctly("!=", 0, no_variants)
self.check_template_found_correctly("=", 0, self.templateAB)
self.check_template_found_correctly(">=", 0, self.templateAB)
self.check_template_found_correctly("<=", 0, self.templateAB)
self.check_template_found_correctly(">", 0, no_template)
self.check_template_found_correctly("<", 0, no_template)
self.check_template_found_correctly("!=", 0, no_template)
self.pickingInA.button_validate()
# product A has 2 unreserved stock, other variants have 0
self.check_variants_found_correctly("=", 2, self.productA)
self.check_variants_found_correctly("=", 0, b_and_c)
self.check_variants_found_correctly(">", 0, self.productA)
self.check_variants_found_correctly("<", 0, no_variants)
self.check_variants_found_correctly("!=", 0, self.productA)
self.check_variants_found_correctly("!=", 1, all_variants)
self.check_variants_found_correctly("!=", 2, b_and_c)
self.check_variants_found_correctly("<=", 0, b_and_c)
self.check_variants_found_correctly("<=", 1, b_and_c)
self.check_variants_found_correctly(">=", 0, all_variants)
self.check_variants_found_correctly(">=", 1, self.productA)
self.check_template_found_correctly("=", 0, self.templateAB)
self.check_template_found_correctly("=", 1, no_template)
self.check_template_found_correctly("=", 2, self.templateAB)
self.check_template_found_correctly("!=", 0, self.templateAB)
self.check_template_found_correctly("!=", 1, self.templateAB)
self.check_template_found_correctly("!=", 2, self.templateAB)
self.check_template_found_correctly(">", -1, self.templateAB)
self.check_template_found_correctly(">", 0, self.templateAB)
self.check_template_found_correctly(">", 1, self.templateAB)
self.check_template_found_correctly(">", 2, no_template)
self.check_template_found_correctly("<", 3, self.templateAB)
self.check_template_found_correctly("<", 2, self.templateAB)
self.check_template_found_correctly("<", 1, self.templateAB)
self.check_template_found_correctly("<", 0, no_template)
self.check_template_found_correctly(">=", 0, self.templateAB)
self.check_template_found_correctly(">=", 1, self.templateAB)
self.check_template_found_correctly(">=", 2, self.templateAB)
self.check_template_found_correctly(">=", 3, no_template)
self.check_template_found_correctly("<=", 3, self.templateAB)
self.check_template_found_correctly("<=", 2, self.templateAB)
self.check_template_found_correctly("<=", 1, self.templateAB)
self.check_template_found_correctly("<=", 0, self.templateAB)
self.check_template_found_correctly("<=", -1, no_template)
self.pickingInB.button_validate()
# product A has 2 unreserved, product B has 3 unreserved and
# the remaining variant has 0
self.check_variants_found_correctly("=", 2, self.productA)
self.check_variants_found_correctly("=", 3, self.productB)
self.check_variants_found_correctly("=", 0, self.productC)
self.check_variants_found_correctly(">", 0, a_and_b)
self.check_variants_found_correctly("<", 0, no_variants)
self.check_variants_found_correctly("!=", 0, a_and_b)
self.check_variants_found_correctly("!=", 1, all_variants)
self.check_variants_found_correctly("!=", 2, b_and_c)
self.check_variants_found_correctly("!=", 3, a_and_c)
self.check_variants_found_correctly("<=", 0, self.productC)
self.check_variants_found_correctly("<=", 1, self.productC)
self.check_variants_found_correctly(">=", 0, all_variants)
self.check_variants_found_correctly(">=", 1, a_and_b)
self.check_variants_found_correctly(">=", 2, a_and_b)
self.check_variants_found_correctly(">=", 3, self.productB)
self.check_variants_found_correctly(">=", 4, no_variants)
self.check_template_found_correctly("=", 0, self.templateAB)
self.check_template_found_correctly("=", 1, no_template)
self.check_template_found_correctly("=", 2, self.templateAB)
self.check_template_found_correctly("=", 3, self.templateAB)
self.check_template_found_correctly("!=", 0, self.templateAB)
self.check_template_found_correctly("!=", 2, self.templateAB)
self.check_template_found_correctly("!=", 3, self.templateAB)
self.check_template_found_correctly(">", 1, self.templateAB)
self.check_template_found_correctly(">", 2, self.templateAB)
# This part may seem a bit unintuitive, but this is the
# way it works in the Odoo core
# Searches are "deferred" to the variants, so while the template says
# it has a stock of 5, searching for a stock greater than 3 will not
# find anything because no singular variant has a higher stock
self.check_template_found_correctly(">", 3, no_template)
self.check_template_found_correctly("<", 3, self.templateAB)
self.check_template_found_correctly("<", 2, self.templateAB)
self.check_template_found_correctly("<", 1, self.templateAB)
self.check_template_found_correctly("<", 0, no_template)

View file

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_stock_product_template_tree" model="ir.ui.view">
<field name="name">product.template.stock.tree.inherit</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="stock.view_stock_product_template_tree" />
<field name="arch" type="xml">
<field name="qty_available" position="after">
<field name="qty_available_not_res" />
</field>
</field>
</record>
<record id="product_template_search_form_view_stock" model="ir.ui.view">
<field name="name">product.template.search.stock.form.inherit</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="stock.product_template_search_form_view_stock" />
<field name="arch" type="xml">
<filter name="real_stock_available" position="after">
<filter
name="real_stock_unreserved"
string="Reservable Products"
domain="[('qty_available_not_res','&gt;',0)]"
/>
</filter>
</field>
</record>
<record id="product_template_kanban_stock_view" model="ir.ui.view">
<field name="name">Product Template Kanban Stock</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="stock.product_template_kanban_stock_view" />
<field name="arch" type="xml">
<xpath expr="//field[@name='qty_available']/parent::div" position="after">
<div t-if="record.type.raw_value == 'product'">Unreserved: <field
name="qty_available_not_res"
/> <field name="uom_id" /></div>
</xpath>
</field>
</record>
<record id="view_stock_product_tree" model="ir.ui.view">
<field name="name">product.stock.tree.inherit</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="stock.view_stock_product_tree" />
<field name="arch" type="xml">
<field name="qty_available" position="after">
<field name="qty_available_not_res" />
</field>
</field>
</record>
<record id="product_template_form_view_procurement_button" model="ir.ui.view">
<field name="name">product.template_procurement</field>
<field name="model">product.template</field>
<field
name="inherit_id"
ref="stock.product_template_form_view_procurement_button"
/>
<field name="arch" type="xml">
<div name="button_box" position="inside">
<button
type="object"
name="action_open_quants_unreserved"
attrs="{'invisible':[('type', '!=', 'product')]}"
class="oe_stat_button"
icon="fa-building-o"
>
<field
name="qty_available_not_res"
widget="statinfo"
string="Unreserved"
/>
</button>
</div>
</field>
</record>
<record id="product_form_view_procurement_button" model="ir.ui.view">
<field name="name">product.product.procurement</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="stock.product_form_view_procurement_button" />
<field name="arch" type="xml">
<div name="button_box" position="inside">
<button
class="oe_stat_button"
name="%(product_open_quants_unreserved)d"
icon="fa-building-o"
type="action"
attrs="{'invisible':[('type', '!=', 'product')]}"
>
<field
name="qty_available_not_res"
widget="statinfo"
string="Unreserved"
/>
</button>
</div>
</field>
</record>
</odoo>

View file

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="quant_search_view" model="ir.ui.view">
<field name="name">stock.quant.search</field>
<field name="model">stock.quant</field>
<field name="inherit_id" ref="stock.quant_search_view" />
<field eval="10" name="priority" />
<field name="arch" type="xml">
<field name="owner_id" position="after">
<field name="contains_unreserved" />
</field>
<filter name="internal_loc" position="after">
<filter
name='internal_unreserved'
string="Internal Unreserved"
domain="[('contains_unreserved','=', True), ('location_id.usage','=', 'internal')]"
/>
</filter>
</field>
</record>
<record id="product_open_quants_unreserved" model="ir.actions.act_window">
<field name="name">Stock On Hand (Unreserved)</field>
<field
name="context"
>{'search_default_internal_loc': 1, 'search_default_locationgroup':1}</field>
<field
name="domain"
>[('product_id', '=', active_id), ('contains_unreserved', '=', True)]</field>
<field name="res_model">stock.quant</field>
</record>
</odoo>