Initial commit: OCA Workflow Process packages (456 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:00 +02:00
commit d366e42934
18799 changed files with 1284507 additions and 0 deletions

View file

@ -0,0 +1,47 @@
# Purchase Open Qty
Odoo addon: purchase_open_qty
## Installation
```bash
pip install odoo-bringout-oca-purchase-workflow-purchase_open_qty
```
## Dependencies
This addon depends on:
- purchase_stock
- purchase_order_line_menu
## Manifest Information
- **Name**: Purchase Open Qty
- **Version**: 16.0.3.0.1
- **Category**: Purchases
- **License**: AGPL-3
- **Installable**: True
## Source
Based on [OCA/purchase-workflow](https://github.com/OCA/purchase-workflow) branch 16.0, addon `purchase_open_qty`.
## License
This package maintains the original AGPL-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 Purchase_open_qty Module - purchase_open_qty
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 purchase_open_qty. 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,6 @@
# Dependencies
This addon depends on:
- [purchase_stock](../../odoo-bringout-oca-ocb-purchase_stock)
- [purchase_order_line_menu](../../odoo-bringout-oca-purchase-workflow-purchase_order_line_menu)

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 purchase_open_qty or install in UI.

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-purchase-workflow-purchase_open_qty"
# or
uv pip install odoo-bringout-oca-purchase-workflow-purchase_open_qty"
```

View file

@ -0,0 +1,13 @@
# Models
Detected core models and extensions in purchase_open_qty.
```mermaid
classDiagram
class purchase_order
class purchase_order_line
```
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: purchase_open_qty. Provides features documented in upstream Odoo 16 under this addon.
- Source: OCA/OCB 16.0, addon purchase_open_qty
- 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 purchase_open_qty
```

View file

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

View file

@ -0,0 +1,90 @@
=================
Purchase Open Qty
=================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:bc179ebbc6167f99230611bbc44c046df5c6a1666f9ff554df288f6e6a7cdd93
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github
:target: https://github.com/OCA/purchase-workflow/tree/16.0/purchase_open_qty
:alt: OCA/purchase-workflow
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_open_qty
: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/purchase-workflow&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows purchase users to identify what are the purchase orders
that currently have quantities pending to invoice or to receive.
**Table of contents**
.. contents::
:local:
Usage
=====
To use this module, you need to go to Purchase Orders and select the new filters in the search.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/purchase-workflow/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/purchase-workflow/issues/new?body=module:%20purchase_open_qty%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
~~~~~~~~~~~~
* Miquel Raïch <miquel.raich@forgeflow.com>
* Andreas Dian Sukarno Putro <andreasdian777@gmail.com>
* Kitti Upariphutthiphong <kittiu@ecosoft.co.th>
* Eric Antones <eantones@nuobit.com>
* Juany Davila <juany.davila@forgeflow.com>
* `Tecnativa <https://www.tecnativa.com>`_:
* Carlos Roca
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/purchase-workflow <https://github.com/OCA/purchase-workflow/tree/16.0/purchase_open_qty>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,4 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from . import models
from .init_hook import pre_init_hook

View file

@ -0,0 +1,22 @@
# Copyright 2017 ForgeFlow S.L.
# (http://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
"name": "Purchase Open Qty",
"summary": "Allows to identify the purchase orders that have quantities "
"pending to invoice or to receive.",
"version": "16.0.3.0.1",
"author": "ForgeFlow, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/purchase-workflow",
"category": "Purchases",
"depends": [
"purchase_stock",
"purchase_order_line_menu",
],
"data": ["views/purchase_view.xml"],
"pre_init_hook": "pre_init_hook",
"license": "AGPL-3",
"installable": True,
"application": False,
}

View file

@ -0,0 +1,57 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
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: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr "Obračun u tijeku"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr "Zaprimanje u tijeku"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Nabavni nalog"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Stavka naloga za nabavu"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr "Kol za račun"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr "Kol za zaprimanje"
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr "Unsupported search operator"

View file

@ -0,0 +1,62 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# 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: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2020-07-22 12:19+0000\n"
"Last-Translator: c2cdidier <didier.donze@camptocamp.com>\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"
"X-Generator: Weblate 3.10\n"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr "Ausstehende Menge zu verrechnen"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr "Ausstehende Menge zu empfangen"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Bestellung"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Bestellposition"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr "Menge zu verrechnen"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr "Menge zu empfangen"
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr "Nicht unterstützte Suche"

View file

@ -0,0 +1,63 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-11-09 12:16+0000\n"
"PO-Revision-Date: 2022-11-09 13:21+0100\n"
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>, 2017\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: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.3\n"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr "Cantidad pendiente de facturar"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr "Cantidad pendiente de recibir"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Orden de compra"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Linea pedido compra"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr "Cantidad a facturar"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr "Cantidad a recibir"
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr "Operador de búsqueda no soportado"

View file

@ -0,0 +1,62 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# 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: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 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: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Línea de orden de compra"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr ""

View file

@ -0,0 +1,62 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# Translators:
# Henry Garcia <henry@yaroslab.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+0000\n"
"Last-Translator: Henry Garcia <henry@yaroslab.com>, 2017\n"
"Language-Team: Spanish (Peru) (https://www.transifex.com/oca/teams/23907/"
"es_PE/)\n"
"Language: es_PE\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: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Orden de compra"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Linea de orden de compra"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr ""

View file

@ -0,0 +1,61 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# 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: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+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: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Ostotilausrivi"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr ""

View file

@ -0,0 +1,62 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# 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: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2020-07-22 12:19+0000\n"
"Last-Translator: c2cdidier <didier.donze@camptocamp.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 3.10\n"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr "Qté à facturer en attente"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr "Qté à recevoir en attente"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Bon de commande"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Ligne de commande d'achat"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr "Qté à facturer"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr "Qté à recevoir"
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr "Opération de recherche non supportée"

View file

@ -0,0 +1,65 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# 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-03-03 03:48+0000\n"
"PO-Revision-Date: 2021-02-18 11:45+0000\n"
"Last-Translator: Yves Le Doeuff <yld@alliasys.fr>\n"
"Language-Team: French (Belgium) (https://www.transifex.com/oca/teams/23907/"
"fr_BE/)\n"
"Language: fr_BE\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: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
#, fuzzy
msgid "Pending Qty to Bill"
msgstr "Quantité en attente de facturation"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
#, fuzzy
msgid "Pending Qty to Receive"
msgstr "Quantité en attente de livraison"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Commande fournisseur"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Ligne de commande d'achat"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr "Quantité à facturer"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr "Quantité à recevoir"
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr ""

View file

@ -0,0 +1,61 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# 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: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 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: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Orde de compra"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr ""

View file

@ -0,0 +1,62 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# Translators:
# Bole <bole@dajmi5.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-03-03 03:48+0000\n"
"PO-Revision-Date: 2018-03-03 03:48+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>, 2017\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"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr "Obračun u tijeku"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr "Zaprimanje u tijeku"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Nabavni nalog"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Stavka naloga za nabavu"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr "Kol za račun"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr "Kol za zaprimanje"
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr ""

View file

@ -0,0 +1,62 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# 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: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2023-12-24 15:34+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: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr "Qty in attesa fattura"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr "Q.tà da ricevere in attesa"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Ordine di acquisto"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Riga ordine di acquisto"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr "Qty da Fatturare"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr "Qty da Ricevere"
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr "Operatore di ricerca non supportato"

View file

@ -0,0 +1,61 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# Translators:
# Erwin van der Ploeg <erwin@odooexperts.nl>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+0000\n"
"Last-Translator: Erwin van der Ploeg <erwin@odooexperts.nl>, 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: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Inkooporder"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr ""

View file

@ -0,0 +1,62 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# Translators:
# 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-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+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: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Inkooporder"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Inkooporderregel"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr ""

View file

@ -0,0 +1,64 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# 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: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2024-05-22 23:57+0000\n"
"Last-Translator: Rodrigo Macedo <sottomaiormacedotec@users.noreply."
"translation.odoo-community.org>\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 4.17\n"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr "Quantidade pendente para cobrança"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr "Quantidade pendente para receber"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Ordem de Compra"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Linha da Ordem de Compra"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr "Quantidade para Cobrar"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr "Quantidade para receber"
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr "Operador de pesquisa não compatível"

View file

@ -0,0 +1,62 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# 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: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/"
"teams/23907/pt_PT/)\n"
"Language: pt_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: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Linha de Encomenda de Compra"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr ""

View file

@ -0,0 +1,57 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
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: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr ""

View file

@ -0,0 +1,62 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# 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: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+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: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Comandă achiziție"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Linie comandă achiziție"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr ""

View file

@ -0,0 +1,62 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# 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: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+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: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Nabavni nalog"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Postavka nabavnega naloga"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr ""

View file

@ -0,0 +1,62 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
# 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: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+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: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "Đơn hàng Mua"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr ""
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr ""
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr ""

View file

@ -0,0 +1,59 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_open_qty
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2020-03-23 13:13+0000\n"
"Last-Translator: Dong <dong@freshoo.cn>\n"
"Language-Team: none\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.10\n"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_invoice
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Bill"
msgstr "待开票数量"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__pending_qty_to_receive
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.purchase_order_line_search
#: model_terms:ir.ui.view,arch_db:purchase_open_qty.view_purchase_order_filter
msgid "Pending Qty to Receive"
msgstr "待收货数量"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order
msgid "Purchase Order"
msgstr "采购订单"
#. module: purchase_open_qty
#: model:ir.model,name:purchase_open_qty.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "采购订单明细"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_invoice
msgid "Qty to Bill"
msgstr "待开票数量"
#. module: purchase_open_qty
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order__qty_to_receive
#: model:ir.model.fields,field_description:purchase_open_qty.field_purchase_order_line__qty_to_receive
msgid "Qty to Receive"
msgstr "待收货数量"
#. module: purchase_open_qty
#. odoo-python
#: code:addons/purchase_open_qty/models/purchase_order.py:0
#, python-format
msgid "Unsupported search operator"
msgstr "不支持的搜索运算符"

View file

@ -0,0 +1,91 @@
# Copyright 2017 ForgeFlow S.L.
# (http://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
import logging
logger = logging.getLogger(__name__)
def pre_init_hook(cr):
"""
The objective of this hook is to speed up the installation
of the module on an existing Odoo instance.
"""
store_field_qty_to_receive_and_invoice(cr)
def store_field_qty_to_receive_and_invoice(cr):
cr.execute(
"""SELECT column_name
FROM information_schema.columns
WHERE table_name='purchase_order_line' AND
column_name='qty_to_receive'"""
)
if not cr.fetchone():
logger.info("Creating field qty_to_receive on purchase_order_line")
cr.execute(
"""
ALTER TABLE purchase_order_line ADD COLUMN qty_to_receive float;
COMMENT ON COLUMN purchase_order_line.qty_to_receive IS
'Qty to Receive';
"""
)
cr.execute(
"""SELECT column_name
FROM information_schema.columns
WHERE table_name='purchase_order_line' AND
column_name='qty_to_invoice'"""
)
if not cr.fetchone():
logger.info("Creating field qty_to_invoice on purchase_order_line")
cr.execute(
"""
ALTER TABLE purchase_order_line ADD COLUMN qty_to_invoice float;
COMMENT ON COLUMN purchase_order_line.qty_to_invoice IS
'Qty to Bill';
"""
)
logger.info(
"Computing values for fields qty_to_receive and qty_to_invoice"
" on purchase_order_line"
)
cr.execute(
"""
UPDATE purchase_order_line pol
SET qty_to_invoice = pol.qty_received - pol.qty_invoiced
FROM product_product p
JOIN product_template t ON p.product_tmpl_id = t.id
WHERE t.purchase_method = 'receive' AND pol.product_id = p.id
"""
)
cr.execute(
"""
UPDATE purchase_order_line pol
SET qty_to_invoice = pol.product_qty - pol.qty_invoiced
FROM product_product p
JOIN product_template t ON p.product_tmpl_id = t.id
WHERE t.purchase_method != 'receive' AND pol.product_id = p.id
"""
)
cr.execute(
"""
UPDATE purchase_order_line pol
SET qty_to_receive =
CASE
WHEN pt.type = 'service' THEN pol.product_qty - pol.qty_received
ELSE (
SELECT COALESCE(SUM(sm.product_uom_qty), 0)
FROM stock_move sm
WHERE sm.purchase_line_id = pol.id
AND sm.state NOT IN ('cancel', 'done')
)
END
FROM product_product pp
JOIN product_template pt ON pt.id = pp.product_tmpl_id
WHERE pp.id = pol.product_id
"""
)

View file

@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from . import purchase_order

View file

@ -0,0 +1,106 @@
# Copyright 2017 ForgeFlow S.L.
# (http://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import _, api, fields, models
from odoo.tools import float_is_zero
class PurchaseOrderLine(models.Model):
_inherit = "purchase.order.line"
@api.depends(
"move_ids.state",
"move_ids.product_uom",
"move_ids.product_uom_qty",
"product_qty",
"qty_received",
)
def _compute_qty_to_receive(self):
service_lines = self.filtered(lambda l: l.product_id.type == "service")
for line in self - service_lines:
total = 0.0
for move in line.move_ids.filtered(
lambda m: m.state not in ("cancel", "done")
):
if move.product_uom != line.product_uom:
total += move.product_uom._compute_quantity(
move.product_uom_qty, line.product_uom
)
else:
total += move.product_uom_qty
line.qty_to_receive = total
for line in service_lines:
line.qty_to_receive = line.product_qty - line.qty_received
qty_to_receive = fields.Float(
compute="_compute_qty_to_receive",
digits="Product Unit of Measure",
copy=False,
string="Qty to Receive",
store=True,
)
class PurchaseOrder(models.Model):
_inherit = "purchase.order"
def _compute_qty_to_invoice(self):
dp = self.env["decimal.precision"].precision_get("Product Unit of Measure")
for po in self:
qty_to_invoice = sum(po.mapped("order_line.qty_to_invoice"))
po.pending_qty_to_invoice = not float_is_zero(
qty_to_invoice, precision_digits=dp
)
po.qty_to_invoice = qty_to_invoice
def _compute_qty_to_receive(self):
for po in self:
qty_to_receive = sum(po.mapped("order_line.qty_to_receive"))
po.pending_qty_to_receive = qty_to_receive > 0.0
po.qty_to_receive = qty_to_receive
@api.model
def _search_pending_qty_to_receive(self, operator, value):
if operator != "=" or not isinstance(value, bool):
raise ValueError(_("Unsupported search operator"))
po_line_obj = self.env["purchase.order.line"]
po_lines = po_line_obj.search([("qty_to_receive", ">", 0.0)])
orders = po_lines.mapped("order_id")
if value:
return [("id", "in", orders.ids)]
else:
return [("id", "not in", orders.ids)]
@api.model
def _search_pending_qty_to_invoice(self, operator, value):
if operator != "=" or not isinstance(value, bool):
raise ValueError(_("Unsupported search operator"))
po_line_obj = self.env["purchase.order.line"]
po_lines = po_line_obj.search([("qty_to_invoice", ">", 0.0)])
orders = po_lines.mapped("order_id")
if value:
return [("id", "in", orders.ids)]
else:
return [("id", "not in", orders.ids)]
qty_to_invoice = fields.Float(
compute="_compute_qty_to_invoice",
string="Qty to Bill",
default=0.0,
)
pending_qty_to_invoice = fields.Boolean(
compute="_compute_qty_to_invoice",
search="_search_pending_qty_to_invoice",
string="Pending Qty to Bill",
)
qty_to_receive = fields.Float(
compute="_compute_qty_to_receive",
string="Qty to Receive",
default=0.0,
)
pending_qty_to_receive = fields.Boolean(
compute="_compute_qty_to_receive",
search="_search_pending_qty_to_receive",
string="Pending Qty to Receive",
)

View file

@ -0,0 +1,9 @@
* Miquel Raïch <miquel.raich@forgeflow.com>
* Andreas Dian Sukarno Putro <andreasdian777@gmail.com>
* Kitti Upariphutthiphong <kittiu@ecosoft.co.th>
* Eric Antones <eantones@nuobit.com>
* Juany Davila <juany.davila@forgeflow.com>
* `Tecnativa <https://www.tecnativa.com>`_:
* Carlos Roca

View file

@ -0,0 +1,2 @@
This module allows purchase users to identify what are the purchase orders
that currently have quantities pending to invoice or to receive.

View file

@ -0,0 +1 @@
To use this module, you need to go to Purchase Orders and select the new filters in the search.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,437 @@
<!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>Purchase Open Qty</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" id="purchase-open-qty">
<h1 class="title">Purchase Open Qty</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:bc179ebbc6167f99230611bbc44c046df5c6a1666f9ff554df288f6e6a7cdd93
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/purchase-workflow/tree/16.0/purchase_open_qty"><img alt="OCA/purchase-workflow" src="https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_open_qty"><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/purchase-workflow&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 purchase users to identify what are the purchase orders
that currently have quantities pending to invoice or to receive.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
<p>To use this module, you need to go to Purchase Orders and select the new filters in the search.</p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/purchase-workflow/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/purchase-workflow/issues/new?body=module:%20purchase_open_qty%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">
<h1><a class="toc-backref" href="#toc-entry-3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-4">Authors</a></h2>
<ul class="simple">
<li>ForgeFlow</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
<ul class="simple">
<li>Miquel Raïch &lt;<a class="reference external" href="mailto:miquel.raich&#64;forgeflow.com">miquel.raich&#64;forgeflow.com</a>&gt;</li>
<li>Andreas Dian Sukarno Putro &lt;<a class="reference external" href="mailto:andreasdian777&#64;gmail.com">andreasdian777&#64;gmail.com</a>&gt;</li>
<li>Kitti Upariphutthiphong &lt;<a class="reference external" href="mailto:kittiu&#64;ecosoft.co.th">kittiu&#64;ecosoft.co.th</a>&gt;</li>
<li>Eric Antones &lt;<a class="reference external" href="mailto:eantones&#64;nuobit.com">eantones&#64;nuobit.com</a>&gt;</li>
<li>Juany Davila &lt;<a class="reference external" href="mailto:juany.davila&#64;forgeflow.com">juany.davila&#64;forgeflow.com</a>&gt;</li>
<li><a class="reference external" href="https://www.tecnativa.com">Tecnativa</a>:<ul>
<li>Carlos Roca</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h2>
<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>This module is part of the <a class="reference external" href="https://github.com/OCA/purchase-workflow/tree/16.0/purchase_open_qty">OCA/purchase-workflow</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>
</body>
</html>

View file

@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import test_purchase_open_qty

View file

@ -0,0 +1,218 @@
# Copyright 2017 ForgeFlow S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.fields import Datetime
from odoo.tests.common import TransactionCase
class TestPurchaseOpenQty(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.purchase_order_model = cls.env["purchase.order"]
purchase_order_line_model = cls.env["purchase.order.line"]
partner_model = cls.env["res.partner"]
prod_model = cls.env["product.product"]
analytic_account_model = cls.env["account.analytic.account"]
# partners
pa_dict = {"name": "Partner 1"}
cls.partner = partner_model.sudo().create(pa_dict)
pa_dict2 = {"name": "Partner 2"}
cls.partner2 = partner_model.sudo().create(pa_dict2)
# account
ac_dict = {
"name": "analytic account 1",
"plan_id": cls.env.ref("analytic.analytic_plan_projects").id,
}
cls.analytic_account_1 = analytic_account_model.sudo().create(ac_dict)
# Purchase Order Num 1
po_dict = {"partner_id": cls.partner.id}
cls.purchase_order_1 = cls.purchase_order_model.create(po_dict)
uom_id = prod_model.uom_id.search([("name", "=", "Units")], limit=1).id
pr_dict = {
"name": "Product Test",
"uom_id": uom_id,
"purchase_method": "purchase",
}
cls.product = prod_model.sudo().create(pr_dict)
pl_dict1 = {
"date_planned": Datetime.now(),
"name": "PO01",
"order_id": cls.purchase_order_1.id,
"product_id": cls.product.id,
"product_uom": uom_id,
"price_unit": 1.0,
"product_qty": 5.0,
"analytic_distribution": {cls.analytic_account_1.id: 100},
}
cls.purchase_order_line_1 = purchase_order_line_model.sudo().create(pl_dict1)
cls.purchase_order_1.button_confirm()
# Purchase Order Num 2
po_dict2 = {"partner_id": cls.partner2.id}
cls.purchase_order_2 = cls.purchase_order_model.create(po_dict2)
pr_dict2 = {
"name": "Product Test 2",
"uom_id": uom_id,
"purchase_method": "receive",
}
cls.product2 = prod_model.sudo().create(pr_dict2)
pl_dict2 = {
"date_planned": Datetime.now(),
"name": "PO02",
"order_id": cls.purchase_order_2.id,
"product_id": cls.product2.id,
"product_uom": uom_id,
"price_unit": 1.0,
"product_qty": 5.0,
"analytic_distribution": {cls.analytic_account_1.id: 100},
}
cls.purchase_order_line_2 = purchase_order_line_model.sudo().create(pl_dict2)
cls.purchase_order_2.button_confirm()
# Purchase Order Num 3 (service)
po_dict3 = {"partner_id": cls.partner2.id}
cls.purchase_order_3 = cls.purchase_order_model.create(po_dict3)
pr_dict3 = {
"name": "Product Test 3",
"uom_id": uom_id,
"purchase_method": "receive",
"type": "service",
}
cls.product3 = prod_model.sudo().create(pr_dict3)
pl_dict3 = {
"date_planned": Datetime.now(),
"name": "PO03",
"order_id": cls.purchase_order_3.id,
"product_id": cls.product3.id,
"product_uom": uom_id,
"price_unit": 10.0,
"product_qty": 5.0,
}
cls.purchase_order_line_3 = purchase_order_line_model.sudo().create(pl_dict3)
cls.purchase_order_3.button_confirm()
def test_compute_qty_to_invoice_and_receive(self):
self.assertEqual(
self.purchase_order_line_1.qty_to_invoice,
5.0,
"Expected 5 as qty_to_invoice in the PO line",
)
self.assertEqual(
self.purchase_order_line_1.qty_to_receive,
5.0,
"Expected 5 as qty_to_receive in the PO line",
)
self.assertEqual(
self.purchase_order_1.qty_to_invoice,
5.0,
"Expected 5 as qty_to_invoice in the PO",
)
self.assertEqual(
self.purchase_order_1.qty_to_receive,
5.0,
"Expected 5 as qty_to_receive in the PO",
)
self.assertEqual(
self.purchase_order_line_2.qty_to_invoice,
0.0,
"Expected 0 as qty_to_invoice in the PO line",
)
self.assertEqual(
self.purchase_order_line_2.qty_to_receive,
5.0,
"Expected 5 as qty_to_receive in the PO line",
)
self.assertEqual(
self.purchase_order_2.qty_to_invoice,
0.0,
"Expected 0 as qty_to_invoice in the PO",
)
self.assertEqual(
self.purchase_order_2.qty_to_receive,
5.0,
"Expected 5 as qty_to_receive in the PO",
)
# Now we receive the products
for picking in self.purchase_order_2.picking_ids:
picking.action_confirm()
picking.move_ids.write({"quantity_done": 5.0})
picking.button_validate()
# The value is computed when you run it as at user but not in the test
self.purchase_order_2._compute_qty_to_invoice()
self.purchase_order_2._compute_qty_to_receive()
self.assertEqual(
self.purchase_order_line_2.qty_to_invoice,
5.0,
"Expected 5 as qty_to_invoice in the PO line",
)
self.assertEqual(
self.purchase_order_line_2.qty_to_receive,
0.0,
"Expected 0 as qty_to_receive in the PO line",
)
self.assertEqual(
self.purchase_order_2.qty_to_invoice,
5.0,
"Expected 5 as qty_to_invoice in the PO",
)
self.assertEqual(
self.purchase_order_2.qty_to_receive,
0.0,
"Expected 0 as qty_to_receive in the PO",
)
def test_search_qty_to_invoice_and_receive(self):
found = self.purchase_order_model.search(
[
"|",
("pending_qty_to_invoice", "=", True),
("pending_qty_to_receive", "=", True),
]
)
self.assertTrue(
self.purchase_order_1.id in found.ids,
"Expected PO {} in POs {}".format(self.purchase_order_1.id, found.ids),
)
found = self.purchase_order_model.search(
[
"|",
("pending_qty_to_invoice", "=", False),
("pending_qty_to_receive", "=", False),
]
)
self.assertFalse(
self.purchase_order_2.id not in found.ids,
"Expected PO %s not to be in POs %s"
% (self.purchase_order_2.id, found.ids),
)
def test_03_po_line_with_services(self):
self.assertEqual(
self.purchase_order_line_3.qty_to_receive,
5.0,
)
self.assertEqual(
self.purchase_order_line_3.qty_received,
0.0,
)
self.purchase_order_line_3.qty_received = 3.0
self.assertEqual(
self.purchase_order_line_3.qty_to_receive,
2.0,
)
self.assertEqual(
self.purchase_order_line_3.qty_received,
3.0,
)
self.assertEqual(
self.purchase_order_line_3.qty_to_invoice,
3.0,
)

View file

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--Copyright 2017 ForgeFlow S.L.-->
<!--(http://www.forgeflow.com)-->
<!--License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).-->
<odoo>
<record id="purchase_order_form" model="ir.ui.view">
<field name="name">purchase.order.form -- open qty fields</field>
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.purchase_order_form" />
<field name="arch" type="xml">
<field name="qty_received" position="before">
<field
name="qty_to_receive"
attrs="{'column_invisible': [('parent.state', 'not in', ('purchase', 'done'))]}"
optional="hide"
/>
</field>
<field name="qty_invoiced" position="before">
<field
name="qty_to_invoice"
attrs="{'column_invisible': [('parent.state', 'not in', ('purchase', 'done'))]}"
optional="hide"
/>
</field>
</field>
</record>
<!-- Show open quantities fields wherever the tree view is used -->
<record model="ir.ui.view" id="view_purchase_order_line_tree">
<field name="model">purchase.order.line</field>
<field
name="inherit_id"
ref="purchase_order_line_menu.purchase_order_line_tree"
/>
<field name="arch" type="xml">
<field name="qty_received" position="before">
<field name="qty_to_receive" optional="hide" />
</field>
</field>
</record>
<record id="view_purchase_order_filter" model="ir.ui.view">
<field name="name">request.quotation.select -- open qty filters</field>
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.purchase_order_view_search" />
<field name="arch" type="xml">
<filter name="invoiced" position="after">
<filter
name="pending_qty_to_invoice"
string="Pending Qty to Bill"
domain="[('pending_qty_to_invoice','=',True)]"
/>
<filter
name="pending_qty_to_receive"
string="Pending Qty to Receive"
domain="[('pending_qty_to_receive','=',True)]"
/>
</filter>
</field>
</record>
<record id="purchase_order_line_search" model="ir.ui.view">
<field name="name">purchase.order.line.search - purchase_open_qty</field>
<field name="model">purchase.order.line</field>
<field name="inherit_id" ref="purchase.purchase_order_line_search" />
<field name="arch" type="xml">
<filter name="hide_cancelled" position="after">
<filter
name="pending_qty_to_invoice"
string="Pending Qty to Bill"
domain="[('qty_to_invoice','!=',0.0)]"
/>
<filter
name="pending_qty_to_receive"
string="Pending Qty to Receive"
domain="[('qty_to_receive','>',0.0)]"
/>
</filter>
</field>
</record>
</odoo>

View file

@ -0,0 +1,43 @@
[project]
name = "odoo-bringout-oca-purchase-workflow-purchase_open_qty"
version = "16.0.0"
description = "Purchase Open Qty - Allows to identify the purchase orders that have quantities pending to invoice or to receive."
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-purchase-workflow-purchase_stock>=16.0.0",
"odoo-bringout-oca-purchase-workflow-purchase_order_line_menu>=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 = ["purchase_open_qty"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]