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,46 @@
# Purchase Manual Delivery
Odoo addon: purchase_manual_delivery
## Installation
```bash
pip install odoo-bringout-oca-purchase-workflow-purchase_manual_delivery
```
## Dependencies
This addon depends on:
- purchase_stock
## Manifest Information
- **Name**: Purchase Manual Delivery
- **Version**: 16.0.2.0.3
- **Category**: N/A
- **License**: AGPL-3
- **Installable**: False
## Source
Based on [OCA/purchase-workflow](https://github.com/OCA/purchase-workflow) branch 16.0, addon `purchase_manual_delivery`.
## 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_manual_delivery Module - purchase_manual_delivery
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_manual_delivery. 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:
- [purchase_stock](../../odoo-bringout-oca-ocb-purchase_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 purchase_manual_delivery or install in UI.

View file

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

View file

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

View file

@ -0,0 +1,25 @@
# Reports
Report definitions and templates in purchase_manual_delivery.
```mermaid
classDiagram
class ReplenishmentReport
AbstractModel <|-- ReplenishmentReport
```
## Available Reports
No named reports found in XML files.
## Report Files
- **__init__.py** (Python logic)
- **stock_forecasted.py** (Python logic)
## Notes
- Named reports above are accessible through Odoo's reporting menu
- Python files define report logic and data processing
- XML files contain report templates, definitions, and formatting
- Reports are integrated with Odoo's printing and email systems

View file

@ -0,0 +1,34 @@
# Security
Access control and security definitions in purchase_manual_delivery.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../purchase_manual_delivery/security/ir.model.access.csv)**
- 2 model access rules
## Record Rules
Row-level security rules defined in:
```mermaid
graph TB
subgraph "Security Layers"
A[Users] --> B[Groups]
B --> C[Access Control Lists]
C --> D[Models]
B --> E[Record Rules]
E --> F[Individual Records]
end
```
Security files overview:
- **[ir.model.access.csv](../purchase_manual_delivery/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
Notes
- Access Control Lists define which groups can access which models
- Record Rules provide row-level security (filter records by user/group)
- Security groups organize users and define permission sets
- All security is enforced at the ORM level by Odoo

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_manual_delivery
```

View file

@ -0,0 +1,9 @@
# Wizards
Transient models exposed as UI wizards in purchase_manual_delivery.
```mermaid
classDiagram
class CreateManualStockPickingWizard
class CreateManualStockPickingWizardLine
```

View file

@ -0,0 +1,113 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association
========================
Purchase Manual Delivery
========================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:c46b537bdf9bd54fa62e0b0a67593163e2fee14b3c8756c15654114c218d0d23
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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/license-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_manual_delivery
: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_manual_delivery
: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|
The goal of this module is to allow the manual creation of incoming shipments. When installed,
a purchase order won't impact directly the stock. It will not create the pickings upon order confirmation.
It allows the reception and the impact on stock to be done manually when needed.
The goal is to be used when a supplier does not confirm the full order at once. As the supplier
confirms the different purchase order lines, the user can manually create the incoming
shipments for those specific lines.
**Table of contents**
.. contents::
:local:
Usage
=====
There are two main ways to use this module:
* From Purchase Order
When creating a purchase order and confirming it, no picking will be automatically created.
Lines with pending quantities to receive will appear in blue color, to create
the manual picking press the button "Create Incoming Shipment":
.. figure:: https://raw.githubusercontent.com/OCA/purchase-workflow/16.0/purchase_manual_delivery/static/description/create_incoming_shipment_button.png
:width: 800px
This will trigger the wizard that lets the user choose which lines should be taken for the
creation of the picking and also the quantities. Clicking on the "Create and View Picking"
will create the reception and redirect the user to the picking form.
.. figure:: https://raw.githubusercontent.com/OCA/purchase-workflow/16.0/purchase_manual_delivery/static/description/create_incoming_shipment_wizard.png
:width: 800px
* From Purchase Order Line
The module adds a new list view for Purchase Order Lines (in Purchase Menu). From there you can select multiple
PO lines (in this base module only PO lines from same PO can be selected) and create the
manual delivery. Follow the same steps as above to manually generate the incoming shipment.
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_manual_delivery%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 S.L.
Contributors
~~~~~~~~~~~~
* Adria Gil Sorribes <adria.gil@forgeflow.com>
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_manual_delivery>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,3 @@
from . import models
from . import report
from . import wizard

View file

@ -0,0 +1,27 @@
# Copyright 2022 ForgeFlow S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Purchase Manual Delivery",
"summary": """
Prevents pickings to be auto generated upon Purchase Order confirmation
and adds the ability to manually generate them as the supplier confirms
the different purchase order lines.
""",
"version": "16.0.2.0.3",
"license": "AGPL-3",
"author": "ForgeFlow S.L.," "Odoo Community Association (OCA)",
"website": "https://github.com/OCA/purchase-workflow",
"depends": ["purchase_stock"],
"data": [
"security/ir.model.access.csv",
"wizard/create_manual_stock_picking.xml",
"views/purchase_order_views.xml",
"views/res_config_view.xml",
],
"assets": {
"web.assets_backend": [
"purchase_manual_delivery/static/src/**/*",
]
},
}

View file

@ -0,0 +1,392 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_manual_delivery
#
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_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Cancel"
msgstr "Otkaži"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_res_company
msgid "Companies"
msgstr "Kompanije"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_res_config_settings
msgid "Config Settings"
msgstr "Postavke"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.purchase_order_view_form_inherit
msgid "Confirm Order"
msgstr "Potvrdi nalog"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.purchase_order_view_form_inherit
msgid "Create Incoming Shipment"
msgstr "Create Incoming Shipment"
#. module: purchase_manual_delivery
#: model:ir.actions.act_window,name:purchase_manual_delivery.action_create_manual_stock_picking
msgid "Create Manual Stock Picking"
msgstr "Create Manual Skladišno tikovanje"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_create_stock_picking_wizard
msgid "Create Manual Stock Picking Wizard"
msgstr "Create Manual Skladišno tikovanje Čarobnjak"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_create_stock_picking_wizard_line
msgid "Create Manual Stock Picking Wizard Line"
msgstr "Create Manual Skladišno tikovanje Čarobnjak Linija"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Create Stock Picking"
msgstr "Create Skladišno tikovanje"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Create and View Picking"
msgstr "Create and View Picking"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__create_uid
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__create_date
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__currency_id
msgid "Currency"
msgstr "Valuta"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Deliveries on purchase orders should be created manually."
msgstr "Deliveries on purchase orders should be created manually."
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Delivery"
msgstr "Isporuka"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__date_planned
msgid ""
"Delivery date expected from vendor. This date respectively defaults to "
"vendor pricelist lead time then today's date."
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__name
msgid "Description"
msgstr "Opis"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__location_dest_id
msgid "Destination Location"
msgstr "Odredišna lokacija"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__display_name
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Existing Qty"
msgstr "Existing Qty"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__existing_qty
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order_line__existing_qty
msgid "Existing Quantity"
msgstr "Existing Količina"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__date_planned
msgid "Expected Arrival"
msgstr "Očekivani dolazak"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Group By"
msgstr "Grupiši po"
#. module: purchase_manual_delivery
#: model_terms:ir.actions.act_window,help:purchase_manual_delivery.action_order_line_delivery_tree
msgid "Here is a list of each purchase order line to be received."
msgstr "Here is a list of each purchase order line to be received."
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__id
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__id
msgid "ID"
msgstr "ID"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "If active, Receipt of purchase orders should be manual created."
msgstr "If active, Receipt of purchase orders should be manual created."
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard____last_update
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__write_uid
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__write_date
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__line_ids
msgid "Lines"
msgstr "Stavke"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard__location_dest_id
msgid "Location where the system will stock the received products."
msgstr "Location where the system will stock the received products."
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Manual Delivery"
msgstr "Ručna isporuka"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Ordered Qty"
msgstr "Naloged Qty"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order_line__pending_to_receive
msgid "Pending Qty to Receive"
msgstr "Zaprimanje u tijeku"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order__pending_to_receive
msgid "Pending To Receive"
msgstr "Pending To Receive"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Pending to receive"
msgstr "Pending to receive"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Picking Scheduled Date"
msgstr "Picking Scheduled Datum"
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid "Please select one partner at a time"
msgstr "Please select one partner at a time"
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid "Please select one purchase order at a time"
msgstr "Please select one purchase order at a time"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_id
msgid "Product"
msgstr "Artikal"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_product_product
msgid "Product Variant"
msgstr "Varijanta proizvoda"
#. module: purchase_manual_delivery
#: model:ir.actions.act_window,name:purchase_manual_delivery.action_order_line_delivery_tree
#: model:ir.ui.menu,name:purchase_manual_delivery.menu_delivery_purchase_order_lines
msgid "Purchase Manual Receipt"
msgstr "Nabavni Manual Receipt"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_purchase_order
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__purchase_id
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Purchase Order"
msgstr "Nalog za nabavu"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_purchase_order_line
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__purchase_order_line_id
msgid "Purchase Order Line"
msgstr "Stavka naloga za nabavu"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid ""
"Purchase Order Lines that are confirmed or done and an incoming shipment is "
"created to satisfy them"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid ""
"Purchase Order Lines that are confirmed or done and no incoming shipment is "
"created to satisfy them"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order__manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_res_company__purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_res_config_settings__purchase_manual_delivery
msgid "Purchase manual delivery?"
msgstr "Nabavni manual delivery?"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_qty
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Quantity"
msgstr "Količina"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__existing_qty
#: model:ir.model.fields,help:purchase_manual_delivery.field_purchase_order_line__existing_qty
msgid "Quantity already planned or shipped (stock movements already created)"
msgstr "Količina already planned or shipped (stock movements already created)"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__qty
msgid "Quantity to Receive"
msgstr "Količina to Receive"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Reception confirmed"
msgstr "Reception confirmed"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Remaining Qty"
msgstr "Preostala kol."
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__remaining_qty
msgid "Remaining Quantity"
msgstr "Remaining Količina"
#. module: purchase_manual_delivery
#. odoo-javascript
#: code:addons/purchase_manual_delivery/static/src/purchase_manual_delivery_forecasted/forecasted_details.xml:0
#, python-format
msgid "Requests without delivery"
msgstr "Requests without delivery"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__scheduled_date
msgid "Scheduled Date"
msgstr "Zakazani datum"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard__scheduled_date
msgid ""
"Scheduled time for the first part of the shipment to be processed. Setting "
"manually a value here would set it as expected date for all the stock moves."
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Search Undelivered Lines"
msgstr "Search Undelivered Linijas"
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__picking_id
#, python-format
msgid "Stock Picking"
msgstr "Preuzimanje u skladištu"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_report_stock_report_product_product_replenishment
msgid "Stock Replenishment Report"
msgstr "Izvještaj o nadopuni skladišta"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__taxes_id
msgid "Taxes"
msgstr "Porezi"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_purchase_order_line__pending_to_receive
msgid "There is pending quantity to receive not yet planned"
msgstr "There is pending quantity to receive not yet planned"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__qty
msgid "This is the quantity taken into account to create the picking"
msgstr "This is the quantity taken into account to create the picking"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__price_unit
msgid "Unit Price"
msgstr "Cijena"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_uom
msgid "Unit of Measure"
msgstr "Jedinica mjere"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__partner_id
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__partner_id
msgid "Vendor"
msgstr "Dobavljač"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__wizard_id
msgid "Wizard"
msgstr "ID čarobnjaka"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__partner_id
msgid "You can find a vendor by its Name, TIN, Email or Internal Reference."
msgstr "Dobavljača možete pronaći po imenu, TIN-u, e-pošti ili internoj referenci."
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid ""
"You can not receive more than the remaining quantity. If you need to do so, "
"please edit the purchase order first."
msgstr ""

View file

@ -0,0 +1,416 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_manual_delivery
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-04-18 08:37+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: none\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.17\n"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Cancel"
msgstr "Cancelar"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_res_company
msgid "Companies"
msgstr "Compañías"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_res_config_settings
msgid "Config Settings"
msgstr "Ajustes de Config"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.purchase_order_view_form_inherit
msgid "Confirm Order"
msgstr "Confirmar Pedido"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.purchase_order_view_form_inherit
msgid "Create Incoming Shipment"
msgstr "Crear Envío Entrante"
#. module: purchase_manual_delivery
#: model:ir.actions.act_window,name:purchase_manual_delivery.action_create_manual_stock_picking
msgid "Create Manual Stock Picking"
msgstr "Crear Selección de Existencias Manual"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_create_stock_picking_wizard
msgid "Create Manual Stock Picking Wizard"
msgstr "Crear Asistente Manual de Selección de Acciones"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_create_stock_picking_wizard_line
msgid "Create Manual Stock Picking Wizard Line"
msgstr "Crear Línea Manual de Asistente de Selección de Acciones"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Create Stock Picking"
msgstr "Crear Selección de Existencias"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Create and View Picking"
msgstr "Crear y Visualizar la Selección"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__create_uid
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__create_date
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__create_date
msgid "Created on"
msgstr "Creado el"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__currency_id
msgid "Currency"
msgstr "Divisa"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Deliveries on purchase orders should be created manually."
msgstr "Las entregas en pedidos de compra deben crearse manualmente."
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Delivery"
msgstr "Entrega"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__date_planned
msgid ""
"Delivery date expected from vendor. This date respectively defaults to "
"vendor pricelist lead time then today's date."
msgstr ""
"Fecha de entrega prevista por el proveedor. Esta fecha es, por defecto, el "
"plazo de entrega de la lista de precios del proveedor y, a continuación, la "
"fecha actual."
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__name
msgid "Description"
msgstr "Descripción"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__location_dest_id
msgid "Destination Location"
msgstr "Ubicación de Destino"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__display_name
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__display_name
msgid "Display Name"
msgstr "Mostrar Nombre"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Existing Qty"
msgstr "Ctd. Existente"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__existing_qty
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order_line__existing_qty
msgid "Existing Quantity"
msgstr "Cantidad Existente"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__date_planned
msgid "Expected Arrival"
msgstr "Llegada Prevista"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Group By"
msgstr "Agrupado Por"
#. module: purchase_manual_delivery
#: model_terms:ir.actions.act_window,help:purchase_manual_delivery.action_order_line_delivery_tree
msgid "Here is a list of each purchase order line to be received."
msgstr "Aquí tiene una lista de cada línea de pedido que debe recibir."
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__id
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__id
msgid "ID"
msgstr "ID"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "If active, Receipt of purchase orders should be manual created."
msgstr ""
"Si está activo, la recepción de pedidos de compra debe crearse manualmente."
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard____last_update
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line____last_update
msgid "Last Modified on"
msgstr "Última Modificación el"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__write_uid
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__write_uid
msgid "Last Updated by"
msgstr "Última Actualización por"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__write_date
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__write_date
msgid "Last Updated on"
msgstr "Última Actualización el"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__line_ids
msgid "Lines"
msgstr "Líneas"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard__location_dest_id
msgid "Location where the system will stock the received products."
msgstr "Ubicación donde el sistema almacenará los productos recibidos."
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Manual Delivery"
msgstr "Entrega Manual"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Ordered Qty"
msgstr "Ctd Pedida"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order_line__pending_to_receive
msgid "Pending Qty to Receive"
msgstr "Cntd pendiente de Recibir"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order__pending_to_receive
msgid "Pending To Receive"
msgstr "Pendiente de Recibir"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Pending to receive"
msgstr "Pendiente de recibir"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Picking Scheduled Date"
msgstr "Fecha Programada de Recogida"
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid "Please select one partner at a time"
msgstr "Por favor seleccione un socio a la vez"
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid "Please select one purchase order at a time"
msgstr "Por favor, seleccione una orden de compra cada vez"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_id
msgid "Product"
msgstr "Producto"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_product_product
msgid "Product Variant"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.actions.act_window,name:purchase_manual_delivery.action_order_line_delivery_tree
#: model:ir.ui.menu,name:purchase_manual_delivery.menu_delivery_purchase_order_lines
msgid "Purchase Manual Receipt"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_purchase_order
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__purchase_id
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Purchase Order"
msgstr "Orden de Compra"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_purchase_order_line
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__purchase_order_line_id
msgid "Purchase Order Line"
msgstr "Línea de Orden de Compra"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid ""
"Purchase Order Lines that are confirmed or done and an incoming shipment is "
"created to satisfy them"
msgstr ""
"Líneas de Orden de Compra que se confirman o realizan y se crea un envío "
"entrante para satisfacerlas"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid ""
"Purchase Order Lines that are confirmed or done and no incoming shipment is "
"created to satisfy them"
msgstr ""
"Líneas de Orden de Compra que están confirmadas o hechas y no se crea ningún "
"envío entrante para satisfacerlas"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order__manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_res_company__purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_res_config_settings__purchase_manual_delivery
msgid "Purchase manual delivery?"
msgstr "¿Comprar entrega manual?"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_qty
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Quantity"
msgstr "Cantidad"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__existing_qty
#: model:ir.model.fields,help:purchase_manual_delivery.field_purchase_order_line__existing_qty
msgid "Quantity already planned or shipped (stock movements already created)"
msgstr "Cantidad ya prevista o enviada (movimientos de existencias ya creados)"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__qty
msgid "Quantity to Receive"
msgstr "Cantidad a Recibir"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Reception confirmed"
msgstr "Recepción confirmada"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Remaining Qty"
msgstr "Ctd Restante"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__remaining_qty
msgid "Remaining Quantity"
msgstr "Cantidad Restante"
#. module: purchase_manual_delivery
#. odoo-javascript
#: code:addons/purchase_manual_delivery/static/src/purchase_manual_delivery_forecasted/forecasted_details.xml:0
#, python-format
msgid "Requests without delivery"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__scheduled_date
msgid "Scheduled Date"
msgstr "Fecha Prevista"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard__scheduled_date
msgid ""
"Scheduled time for the first part of the shipment to be processed. Setting "
"manually a value here would set it as expected date for all the stock moves."
msgstr ""
"Hora programada para que se procese la primera parte del envío. Establecer "
"manualmente un valor aquí lo establecería como fecha prevista para todos los "
"movimientos de stock."
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Search Undelivered Lines"
msgstr "Buscar Líneas no Entregadas"
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__picking_id
#, python-format
msgid "Stock Picking"
msgstr "Albarán de Existencias"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_report_stock_report_product_product_replenishment
msgid "Stock Replenishment Report"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__taxes_id
msgid "Taxes"
msgstr "Impuestos"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_purchase_order_line__pending_to_receive
msgid "There is pending quantity to receive not yet planned"
msgstr "Hay cantidad pendiente de recibir aún no prevista"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__qty
msgid "This is the quantity taken into account to create the picking"
msgstr "Es la cantidad que se tiene en cuenta para crear el albarán"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__price_unit
msgid "Unit Price"
msgstr "Precio Unitario"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_uom
msgid "Unit of Measure"
msgstr "Unidad de Medida"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__partner_id
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__partner_id
msgid "Vendor"
msgstr "Vendedor"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__wizard_id
msgid "Wizard"
msgstr "Asistente"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__partner_id
msgid "You can find a vendor by its Name, TIN, Email or Internal Reference."
msgstr ""
"Puede encontrar un vendedor por su Nombre, NIF, Correo Electrónico o "
"Referencia Interna."
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid ""
"You can not receive more than the remaining quantity. If you need to do so, "
"please edit the purchase order first."
msgstr ""
"No puede recibir más de la cantidad restante. Si necesita hacerlo, edite "
"primero la orden de compra."
#~ msgid "Procurement purchase grouping settings"
#~ msgstr "Configuración de la agrupación de compra abastecida"
#~ msgid "Purchase Order Lines"
#~ msgstr "Líneas de Orden de Compra"

View file

@ -0,0 +1,416 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_manual_delivery
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-08-20 15:46+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\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 5.10.4\n"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Cancel"
msgstr "Annulla"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_res_company
msgid "Companies"
msgstr "Aziende"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_res_config_settings
msgid "Config Settings"
msgstr "Impostazioni configurazione"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.purchase_order_view_form_inherit
msgid "Confirm Order"
msgstr "Conferma ordine"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.purchase_order_view_form_inherit
msgid "Create Incoming Shipment"
msgstr "Crea spedizione in ingresso"
#. module: purchase_manual_delivery
#: model:ir.actions.act_window,name:purchase_manual_delivery.action_create_manual_stock_picking
msgid "Create Manual Stock Picking"
msgstr "Crea prelievo di magazzino manuale"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_create_stock_picking_wizard
msgid "Create Manual Stock Picking Wizard"
msgstr "Procedura guidata crea prelievo di magazzino manuale"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_create_stock_picking_wizard_line
msgid "Create Manual Stock Picking Wizard Line"
msgstr "Riga procedura guidata crea prelievo di magazzino manuale"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Create Stock Picking"
msgstr "Crea prelievo di magazzino"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Create and View Picking"
msgstr "Crea e visualizza prelievo"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__create_uid
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__create_date
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__create_date
msgid "Created on"
msgstr "Creato il"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__currency_id
msgid "Currency"
msgstr "Valuta"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Deliveries on purchase orders should be created manually."
msgstr "Le consegne negli ordini di acquisto devono essere create manualmente."
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Delivery"
msgstr "Consegna"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__date_planned
msgid ""
"Delivery date expected from vendor. This date respectively defaults to "
"vendor pricelist lead time then today's date."
msgstr ""
"Data consegna attesa dal fornitore. Questa data corrisponde al tempo di "
"attesa predefinito del fornitore dalla data odierna."
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__name
msgid "Description"
msgstr "Descrizione"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__location_dest_id
msgid "Destination Location"
msgstr "Ubicazione di destinazione"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__display_name
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Existing Qty"
msgstr "Q.tà esistente"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__existing_qty
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order_line__existing_qty
msgid "Existing Quantity"
msgstr "Quantità esistente"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__date_planned
msgid "Expected Arrival"
msgstr "Arrivo atteso"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Group By"
msgstr "Raggruppa per"
#. module: purchase_manual_delivery
#: model_terms:ir.actions.act_window,help:purchase_manual_delivery.action_order_line_delivery_tree
msgid "Here is a list of each purchase order line to be received."
msgstr "Ecco un elenco di ogni linea di ordine di acquisto da ricevere."
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__id
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__id
msgid "ID"
msgstr "ID"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "If active, Receipt of purchase orders should be manual created."
msgstr ""
"Se selezionata, la ricevuta degli ordini di acquisto deve essere creata "
"manualmente."
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard____last_update
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__write_uid
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__write_date
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__line_ids
msgid "Lines"
msgstr "Righe"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard__location_dest_id
msgid "Location where the system will stock the received products."
msgstr "Ubicazione dove il sistema posizionerà i prodotti ricevuti."
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Manual Delivery"
msgstr "Consegna manuale"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Ordered Qty"
msgstr "Q.tà ordinata"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order_line__pending_to_receive
msgid "Pending Qty to Receive"
msgstr "Q.tà da ricevere in attesa"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order__pending_to_receive
msgid "Pending To Receive"
msgstr "Da ricevere in attesa"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Pending to receive"
msgstr "Da ricevere in attesa"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Picking Scheduled Date"
msgstr "Data prelievo pianificato"
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid "Please select one partner at a time"
msgstr "Si prega di selezionare un partner alla volta"
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid "Please select one purchase order at a time"
msgstr "Si prega di selezionare un ordine di acquisto alla volta"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_id
msgid "Product"
msgstr "Prodotto"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_product_product
msgid "Product Variant"
msgstr "Variante prodotto"
#. module: purchase_manual_delivery
#: model:ir.actions.act_window,name:purchase_manual_delivery.action_order_line_delivery_tree
#: model:ir.ui.menu,name:purchase_manual_delivery.menu_delivery_purchase_order_lines
msgid "Purchase Manual Receipt"
msgstr "Ricevuta manuale acquisto"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_purchase_order
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__purchase_id
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Purchase Order"
msgstr "Ordine di acquisto"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_purchase_order_line
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__purchase_order_line_id
msgid "Purchase Order Line"
msgstr "Riga ordine di acquisto"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid ""
"Purchase Order Lines that are confirmed or done and an incoming shipment is "
"created to satisfy them"
msgstr ""
"Righe ordine acquisto che sono confermate o evase e viene creata una "
"spedizione in ingresso per soddisfarle"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid ""
"Purchase Order Lines that are confirmed or done and no incoming shipment is "
"created to satisfy them"
msgstr ""
"Righe ordine acquisto che sono confermate o evase e non viene creata una "
"spedizione in ingresso per soddisfarle"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order__manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_res_company__purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_res_config_settings__purchase_manual_delivery
msgid "Purchase manual delivery?"
msgstr "Consegna manuale acquisto?"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_qty
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Quantity"
msgstr "Quantità"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__existing_qty
#: model:ir.model.fields,help:purchase_manual_delivery.field_purchase_order_line__existing_qty
msgid "Quantity already planned or shipped (stock movements already created)"
msgstr "Quantità già programmata o spedita (movimenti di magazzino già creati)"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__qty
msgid "Quantity to Receive"
msgstr "Quantità da ricevere"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Reception confirmed"
msgstr "Ricezione confermata"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Remaining Qty"
msgstr "Q.tà rimanente"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__remaining_qty
msgid "Remaining Quantity"
msgstr "Quantità residua"
#. module: purchase_manual_delivery
#. odoo-javascript
#: code:addons/purchase_manual_delivery/static/src/purchase_manual_delivery_forecasted/forecasted_details.xml:0
#, python-format
msgid "Requests without delivery"
msgstr "Richieste senza consegna"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__scheduled_date
msgid "Scheduled Date"
msgstr "Data schedulata"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard__scheduled_date
msgid ""
"Scheduled time for the first part of the shipment to be processed. Setting "
"manually a value here would set it as expected date for all the stock moves."
msgstr ""
"Data pianificata per la lavorazione della prima parte della spedizione. "
"Impostare qui manualmente un valore lo imposterà come data prevista per "
"tutti i movimenti di magazzino."
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Search Undelivered Lines"
msgstr "Ricerca righe non consegnate"
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__picking_id
#, python-format
msgid "Stock Picking"
msgstr "Prelievo di magazzino"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_report_stock_report_product_product_replenishment
msgid "Stock Replenishment Report"
msgstr "Resoconto rifornimento di magazzino"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__taxes_id
msgid "Taxes"
msgstr "Imposte"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_purchase_order_line__pending_to_receive
msgid "There is pending quantity to receive not yet planned"
msgstr "Ci sono quantità in attesa da ricevere non ancora pianficate"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__qty
msgid "This is the quantity taken into account to create the picking"
msgstr "Questa è la quantità presa in considerazione per creare il prelievo"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__price_unit
msgid "Unit Price"
msgstr "Prezzo unitario"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_uom
msgid "Unit of Measure"
msgstr "Unità di misura"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__partner_id
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__partner_id
msgid "Vendor"
msgstr "Fornitore"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__wizard_id
msgid "Wizard"
msgstr "Procedura guidata"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__partner_id
msgid "You can find a vendor by its Name, TIN, Email or Internal Reference."
msgstr ""
"Un fornitore può essere trovato per nome, codice fiscale, e-mail o "
"riferimento interno."
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid ""
"You can not receive more than the remaining quantity. If you need to do so, "
"please edit the purchase order first."
msgstr ""
"Non è possibile ricever più della quantità rimanente. Se è necessario, "
"modificare prima l'ordine di acquisto."
#~ msgid "Procurement purchase grouping settings"
#~ msgstr "Impostazioni raggruppamento approvvigionamento acquisti"
#~ msgid "Purchase Order Lines"
#~ msgstr "Righe ordine di acquisto"

View file

@ -0,0 +1,392 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_manual_delivery
#
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_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Cancel"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_res_company
msgid "Companies"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_res_config_settings
msgid "Config Settings"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.purchase_order_view_form_inherit
msgid "Confirm Order"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.purchase_order_view_form_inherit
msgid "Create Incoming Shipment"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.actions.act_window,name:purchase_manual_delivery.action_create_manual_stock_picking
msgid "Create Manual Stock Picking"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_create_stock_picking_wizard
msgid "Create Manual Stock Picking Wizard"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_create_stock_picking_wizard_line
msgid "Create Manual Stock Picking Wizard Line"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Create Stock Picking"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Create and View Picking"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__create_uid
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__create_uid
msgid "Created by"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__create_date
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__create_date
msgid "Created on"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__currency_id
msgid "Currency"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Deliveries on purchase orders should be created manually."
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Delivery"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__date_planned
msgid ""
"Delivery date expected from vendor. This date respectively defaults to "
"vendor pricelist lead time then today's date."
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__name
msgid "Description"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__location_dest_id
msgid "Destination Location"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__display_name
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__display_name
msgid "Display Name"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Existing Qty"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__existing_qty
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order_line__existing_qty
msgid "Existing Quantity"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__date_planned
msgid "Expected Arrival"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Group By"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.actions.act_window,help:purchase_manual_delivery.action_order_line_delivery_tree
msgid "Here is a list of each purchase order line to be received."
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__id
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__id
msgid "ID"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "If active, Receipt of purchase orders should be manual created."
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard____last_update
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line____last_update
msgid "Last Modified on"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__write_uid
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__write_uid
msgid "Last Updated by"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__write_date
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__write_date
msgid "Last Updated on"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__line_ids
msgid "Lines"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard__location_dest_id
msgid "Location where the system will stock the received products."
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Manual Delivery"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Ordered Qty"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order_line__pending_to_receive
msgid "Pending Qty to Receive"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order__pending_to_receive
msgid "Pending To Receive"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Pending to receive"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Picking Scheduled Date"
msgstr ""
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid "Please select one partner at a time"
msgstr ""
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid "Please select one purchase order at a time"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_id
msgid "Product"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_product_product
msgid "Product Variant"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.actions.act_window,name:purchase_manual_delivery.action_order_line_delivery_tree
#: model:ir.ui.menu,name:purchase_manual_delivery.menu_delivery_purchase_order_lines
msgid "Purchase Manual Receipt"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_purchase_order
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__purchase_id
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Purchase Order"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_purchase_order_line
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__purchase_order_line_id
msgid "Purchase Order Line"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid ""
"Purchase Order Lines that are confirmed or done and an incoming shipment is "
"created to satisfy them"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid ""
"Purchase Order Lines that are confirmed or done and no incoming shipment is "
"created to satisfy them"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order__manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_res_company__purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_res_config_settings__purchase_manual_delivery
msgid "Purchase manual delivery?"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_qty
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Quantity"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__existing_qty
#: model:ir.model.fields,help:purchase_manual_delivery.field_purchase_order_line__existing_qty
msgid "Quantity already planned or shipped (stock movements already created)"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__qty
msgid "Quantity to Receive"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Reception confirmed"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Remaining Qty"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__remaining_qty
msgid "Remaining Quantity"
msgstr ""
#. module: purchase_manual_delivery
#. odoo-javascript
#: code:addons/purchase_manual_delivery/static/src/purchase_manual_delivery_forecasted/forecasted_details.xml:0
#, python-format
msgid "Requests without delivery"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__scheduled_date
msgid "Scheduled Date"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard__scheduled_date
msgid ""
"Scheduled time for the first part of the shipment to be processed. Setting "
"manually a value here would set it as expected date for all the stock moves."
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Search Undelivered Lines"
msgstr ""
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__picking_id
#, python-format
msgid "Stock Picking"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_report_stock_report_product_product_replenishment
msgid "Stock Replenishment Report"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__taxes_id
msgid "Taxes"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_purchase_order_line__pending_to_receive
msgid "There is pending quantity to receive not yet planned"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__qty
msgid "This is the quantity taken into account to create the picking"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__price_unit
msgid "Unit Price"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_uom
msgid "Unit of Measure"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__partner_id
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__partner_id
msgid "Vendor"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__wizard_id
msgid "Wizard"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__partner_id
msgid "You can find a vendor by its Name, TIN, Email or Internal Reference."
msgstr ""
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid ""
"You can not receive more than the remaining quantity. If you need to do so, "
"please edit the purchase order first."
msgstr ""

View file

@ -0,0 +1,409 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_manual_delivery
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-04-11 13:23+0000\n"
"Last-Translator: Matjaz Mozetic <matjaz@luxim.si>\n"
"Language-Team: none\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"
"X-Generator: Weblate 4.14.1\n"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Cancel"
msgstr "Preklic"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_res_company
msgid "Companies"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_res_config_settings
msgid "Config Settings"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.purchase_order_view_form_inherit
msgid "Confirm Order"
msgstr "Potrdi nalog"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.purchase_order_view_form_inherit
msgid "Create Incoming Shipment"
msgstr "Ustvari prejemnico"
#. module: purchase_manual_delivery
#: model:ir.actions.act_window,name:purchase_manual_delivery.action_create_manual_stock_picking
msgid "Create Manual Stock Picking"
msgstr "Ročno ustvari prejemnico"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_create_stock_picking_wizard
msgid "Create Manual Stock Picking Wizard"
msgstr "Čarovnik za ročno ustvarjanje prejemnic"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_create_stock_picking_wizard_line
msgid "Create Manual Stock Picking Wizard Line"
msgstr "Postavka čarovnika za ročno ustvarjanje prejemnic"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Create Stock Picking"
msgstr "Ustvari prejemnico"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Create and View Picking"
msgstr "Ustvari in prikaži prejemnico"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__create_uid
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__create_uid
msgid "Created by"
msgstr "Ustvaril"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__create_date
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__create_date
msgid "Created on"
msgstr "Ustvarjeno"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__currency_id
msgid "Currency"
msgstr "Valuta"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Deliveries on purchase orders should be created manually."
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Delivery"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__date_planned
msgid ""
"Delivery date expected from vendor. This date respectively defaults to "
"vendor pricelist lead time then today's date."
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__name
msgid "Description"
msgstr "Opis"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__location_dest_id
msgid "Destination Location"
msgstr "Ciljna lokacija"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__display_name
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Existing Qty"
msgstr "Obstoječa kol"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__existing_qty
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order_line__existing_qty
msgid "Existing Quantity"
msgstr "Obstoječa količina"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__date_planned
msgid "Expected Arrival"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Group By"
msgstr "Združi po"
#. module: purchase_manual_delivery
#: model_terms:ir.actions.act_window,help:purchase_manual_delivery.action_order_line_delivery_tree
msgid "Here is a list of each purchase order line to be received."
msgstr "Tu je seznam postavk nabavnega naloga za prejem."
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__id
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__id
msgid "ID"
msgstr "ID"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "If active, Receipt of purchase orders should be manual created."
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard____last_update
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line____last_update
msgid "Last Modified on"
msgstr "Zadnjič spremenjeno"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__write_uid
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__write_uid
msgid "Last Updated by"
msgstr "Zadnji posodobil"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__write_date
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__write_date
msgid "Last Updated on"
msgstr "Zadnjič posodobljeno"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__line_ids
msgid "Lines"
msgstr "Postavke"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard__location_dest_id
msgid "Location where the system will stock the received products."
msgstr "Lokacija zaloge za prejem proizvodov."
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.res_config_settings_view_form
msgid "Manual Delivery"
msgstr ""
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Ordered Qty"
msgstr "Naročena kol"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order_line__pending_to_receive
msgid "Pending Qty to Receive"
msgstr "Za prejeti je še"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order__pending_to_receive
msgid "Pending To Receive"
msgstr "Za prejem"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Pending to receive"
msgstr "Za prejem"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Picking Scheduled Date"
msgstr "Načrtovani datum dobave"
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid "Please select one partner at a time"
msgstr "Prosimo, da izberete le po enega partnerja hkrati"
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid "Please select one purchase order at a time"
msgstr "Prosimo, da izberete po en nabavni nalog hkrati"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_id
msgid "Product"
msgstr "Proizvod"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_product_product
msgid "Product Variant"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.actions.act_window,name:purchase_manual_delivery.action_order_line_delivery_tree
#: model:ir.ui.menu,name:purchase_manual_delivery.menu_delivery_purchase_order_lines
msgid "Purchase Manual Receipt"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_purchase_order
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__purchase_id
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Purchase Order"
msgstr "Nabavni nalog"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_purchase_order_line
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__purchase_order_line_id
msgid "Purchase Order Line"
msgstr "Postavka nabavnega naloga"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid ""
"Purchase Order Lines that are confirmed or done and an incoming shipment is "
"created to satisfy them"
msgstr ""
"Postavke nabavnega naloga, ki so potrjene ali opravljene in je za njih bila "
"ustvarjena prejemnica"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid ""
"Purchase Order Lines that are confirmed or done and no incoming shipment is "
"created to satisfy them"
msgstr ""
"Postavke nabavnega naloga, ki so potrjene ali opravljene in še nimajo "
"ustvarjene prejemnice"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_purchase_order__manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_res_company__purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_res_config_settings__purchase_manual_delivery
msgid "Purchase manual delivery?"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_qty
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Quantity"
msgstr "Količina"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__existing_qty
#: model:ir.model.fields,help:purchase_manual_delivery.field_purchase_order_line__existing_qty
msgid "Quantity already planned or shipped (stock movements already created)"
msgstr "Že planirana ali dobavljena količina (že ustvarjeni premiki zaloge)"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__qty
msgid "Quantity to Receive"
msgstr "Količina za prejem"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Reception confirmed"
msgstr "Prejemnica potrjena"
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_create_stock_picking
msgid "Remaining Qty"
msgstr "Preostala kol"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__remaining_qty
msgid "Remaining Quantity"
msgstr "Preostala količina"
#. module: purchase_manual_delivery
#. odoo-javascript
#: code:addons/purchase_manual_delivery/static/src/purchase_manual_delivery_forecasted/forecasted_details.xml:0
#, python-format
msgid "Requests without delivery"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__scheduled_date
msgid "Scheduled Date"
msgstr "Načrtovani datum"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard__scheduled_date
msgid ""
"Scheduled time for the first part of the shipment to be processed. Setting "
"manually a value here would set it as expected date for all the stock moves."
msgstr ""
"Načrtovani čas za prvi del dobave za obdelavo. Ročna nastavitev vrednosti na "
"tem mestu ga nastavi kot pričakovani datum za vse premike zaloge."
#. module: purchase_manual_delivery
#: model_terms:ir.ui.view,arch_db:purchase_manual_delivery.view_purchase_order_unreceived_line_filter
msgid "Search Undelivered Lines"
msgstr "Iskanje ne dobavljenih postavk"
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__picking_id
#, python-format
msgid "Stock Picking"
msgstr "Prejemnica"
#. module: purchase_manual_delivery
#: model:ir.model,name:purchase_manual_delivery.model_report_stock_report_product_product_replenishment
msgid "Stock Replenishment Report"
msgstr ""
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__taxes_id
msgid "Taxes"
msgstr "Davki"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_purchase_order_line__pending_to_receive
msgid "There is pending quantity to receive not yet planned"
msgstr "Ni količine za prejem, ki še ni planirana"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__qty
msgid "This is the quantity taken into account to create the picking"
msgstr "To je količina, ki bo upoštevana ob nastanku prejemnice"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__price_unit
msgid "Unit Price"
msgstr "Cena enote"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__product_uom
msgid "Unit of Measure"
msgstr "Enota mere"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard__partner_id
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__partner_id
msgid "Vendor"
msgstr "Dobavitelj"
#. module: purchase_manual_delivery
#: model:ir.model.fields,field_description:purchase_manual_delivery.field_create_stock_picking_wizard_line__wizard_id
msgid "Wizard"
msgstr "Čarovnik"
#. module: purchase_manual_delivery
#: model:ir.model.fields,help:purchase_manual_delivery.field_create_stock_picking_wizard_line__partner_id
msgid "You can find a vendor by its Name, TIN, Email or Internal Reference."
msgstr ""
"Dobavitelja lahko najdete po imenu, davčni številki, email naslovu ali "
"internem sklicu."
#. module: purchase_manual_delivery
#. odoo-python
#: code:addons/purchase_manual_delivery/wizard/create_manual_stock_picking.py:0
#, python-format
msgid ""
"You can not receive more than the remaining quantity. If you need to do so, "
"please edit the purchase order first."
msgstr ""
"Ne morete prejeti več, kot je preostala količina. Če je to potrebno uredite "
"popravite nabavni nalog."
#~ msgid "Purchase Order Lines"
#~ msgstr "Postavke nabavnih nalogov"

View file

@ -0,0 +1,4 @@
from . import product_product
from . import res_company
from . import res_config
from . import purchase_order

View file

@ -0,0 +1,58 @@
from odoo import models
class ProductProduct(models.Model):
_inherit = "product.product"
def _get_pending_lines_domain(self, location_ids=False, warehouse_ids=False):
domain = self._get_lines_domain(location_ids, warehouse_ids)
for domain_part in domain:
if (
isinstance(domain_part, tuple)
and len(domain_part) == 3
and domain_part[0] == "state"
):
domain_index = domain.index(domain_part)
domain[domain_index] = ("state", "in", ("purchase", "done"))
domain.insert(domain_index + 1, ("pending_to_receive", "=", True))
domain.insert(domain_index, "&")
break
return domain
def _get_quantity_in_progress(self, location_ids=False, warehouse_ids=False):
qty_by_product_location, qty_by_product_wh = super()._get_quantity_in_progress(
location_ids, warehouse_ids
)
domain = self._get_pending_lines_domain(location_ids, warehouse_ids)
groups = self.env["purchase.order.line"]._read_group(
domain,
[
"product_id",
"product_qty",
"order_id",
"product_uom",
"orderpoint_id",
"existing_qty",
],
["order_id", "product_id", "product_uom", "orderpoint_id"],
lazy=False,
)
for group in groups:
if group.get("orderpoint_id"):
location = (
self.env["stock.warehouse.orderpoint"]
.browse(group["orderpoint_id"][:1])
.location_id
)
else:
order = self.env["purchase.order"].browse(group["order_id"][0])
location = order.picking_type_id.default_location_dest_id
product = self.env["product.product"].browse(group["product_id"][0])
uom = self.env["uom.uom"].browse(group["product_uom"][0])
product_qty = uom._compute_quantity(
group["product_qty"], product.uom_id, round=False
)
remaining_qty = product_qty - group["existing_qty"]
qty_by_product_location[(product.id, location.id)] += remaining_qty
qty_by_product_wh[(product.id, location.warehouse_id.id)] += remaining_qty
return qty_by_product_location, qty_by_product_wh

View file

@ -0,0 +1,111 @@
# Copyright 2019 ForgeFlow S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
from odoo.tools import float_compare
class PurchaseOrder(models.Model):
_inherit = "purchase.order"
pending_to_receive = fields.Boolean(compute="_compute_pending_to_receive")
manual_delivery = fields.Boolean(
string="Purchase manual delivery?",
default=lambda self: self.env.company.purchase_manual_delivery,
)
def _compute_pending_to_receive(self):
for order in self:
order.pending_to_receive = True
if all(
val is False for val in order.mapped("order_line.pending_to_receive")
):
order.pending_to_receive = False
def button_confirm_manual(self):
return super(
PurchaseOrder, self.with_context(manual_delivery=True)
).button_confirm()
def button_approve(self, force=False):
if self.manual_delivery:
self = self.with_context(manual_delivery=True)
return super(PurchaseOrder, self).button_approve(force=force)
def _create_picking(self):
if self.env.context.get("manual_delivery", False) and self.manual_delivery:
# We do not want to create the picking when confirming the order
# if it comes from manual confirmation
return
return super()._create_picking()
class PurchaseOrderLine(models.Model):
_inherit = "purchase.order.line"
existing_qty = fields.Float(
compute="_compute_existing_qty",
store=True,
string="Existing Quantity",
digits="Product Unit of Measure",
help="Quantity already planned or shipped (stock movements " "already created)",
)
pending_to_receive = fields.Boolean(
compute="_compute_existing_qty",
store=True,
string="Pending Qty to Receive",
help="There is pending quantity to receive not yet planned",
)
@api.depends(
"move_ids",
"move_ids.state",
"move_ids.location_id",
"move_ids.location_dest_id",
"product_uom_qty",
)
def _compute_existing_qty(self):
for line in self:
precision_digits = self.env["decimal.precision"].precision_get(
"Product Unit of Measure"
)
total = 0.0
for move in line.move_ids:
if move.state not in ["cancel"]:
if (
move.location_id
== self.order_id.picking_type_id.default_location_dest_id
):
# This is a return to vendor
if move.to_refund:
total -= move.product_uom._compute_quantity(
move.product_uom_qty, line.product_uom
)
elif (
move.origin_returned_move_id
and move.origin_returned_move_id._is_dropshipped()
and not move._is_dropshipped_returned()
):
# Edge case: the dropship is returned to the stock,
# no to the supplier.
# In this case, the received quantity on the PO is
# set although we didn't receive the product
# physically in our stock. To avoid counting the
# quantity twice, we do nothing.
pass
else:
total += move.product_uom._compute_quantity(
move.product_uom_qty, line.product_uom
)
line.existing_qty = total
if (
float_compare(
line.product_qty,
line.existing_qty,
precision_digits=precision_digits,
)
== 1
):
line.pending_to_receive = True
else:
line.pending_to_receive = False

View file

@ -0,0 +1,12 @@
# Copyright 2022 ForgeFlow S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ResCompany(models.Model):
_inherit = "res.company"
purchase_manual_delivery = fields.Boolean(
string="Purchase manual delivery?", required=False
)

View file

@ -0,0 +1,12 @@
# Copyright 2022 ForgeFlow S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
purchase_manual_delivery = fields.Boolean(
related="company_id.purchase_manual_delivery", readonly=False
)

View file

@ -0,0 +1 @@
* Adria Gil Sorribes <adria.gil@forgeflow.com>

View file

@ -0,0 +1,6 @@
The goal of this module is to allow the manual creation of incoming shipments. When installed,
a purchase order won't impact directly the stock. It will not create the pickings upon order confirmation.
It allows the reception and the impact on stock to be done manually when needed.
The goal is to be used when a supplier does not confirm the full order at once. As the supplier
confirms the different purchase order lines, the user can manually create the incoming
shipments for those specific lines.

View file

@ -0,0 +1,24 @@
There are two main ways to use this module:
* From Purchase Order
When creating a purchase order and confirming it, no picking will be automatically created.
Lines with pending quantities to receive will appear in blue color, to create
the manual picking press the button "Create Incoming Shipment":
.. figure:: ../static/description/create_incoming_shipment_button.png
:width: 800px
This will trigger the wizard that lets the user choose which lines should be taken for the
creation of the picking and also the quantities. Clicking on the "Create and View Picking"
will create the reception and redirect the user to the picking form.
.. figure:: ../static/description/create_incoming_shipment_wizard.png
:width: 800px
* From Purchase Order Line
The module adds a new list view for Purchase Order Lines (in Purchase Menu). From there you can select multiple
PO lines (in this base module only PO lines from same PO can be selected) and create the
manual delivery. Follow the same steps as above to manually generate the incoming shipment.

View file

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

View file

@ -0,0 +1,37 @@
from odoo import models
class ReplenishmentReport(models.AbstractModel):
_inherit = "report.stock.report_product_product_replenishment"
def _serialize_docs(
self, docs, product_template_ids=False, product_variant_ids=False
):
res = super()._serialize_docs(docs, product_template_ids, product_variant_ids)
res["no_delivery_purchase_orders"] = docs["no_delivery_purchase_orders"].read(
fields=["id", "name"]
)
return res
def _compute_draft_quantity_count(
self, product_template_ids, product_variant_ids, wh_location_ids
):
res = super()._compute_draft_quantity_count(
product_template_ids, product_variant_ids, wh_location_ids
)
domain = [
("state", "in", ["purchase", "done"]),
("pending_to_receive", "=", True),
]
domain += self._product_purchase_domain(
product_template_ids, product_variant_ids
)
warehouse_id = self.env.context.get("warehouse", False)
if warehouse_id:
domain += [("order_id.picking_type_id.warehouse_id", "=", warehouse_id)]
po_lines = self.env["purchase.order.line"].search(domain)
in_sum = sum(po_lines.mapped(lambda po: po.product_qty - po.existing_qty))
res["no_delivery_purchase_qty"] = in_sum
res["no_delivery_purchase_orders"] = po_lines.mapped("order_id").sorted("name")
res["qty"]["in"] += in_sum
return res

View file

@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
create_stock_picking_wizard_all,create_stock_picking_wizard_all,model_create_stock_picking_wizard,,1,1,1,1
create_stock_picking_wizard_line_all,create_stock_picking_wizard_line_all,model_create_stock_picking_wizard_line,,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 create_stock_picking_wizard_all create_stock_picking_wizard_all model_create_stock_picking_wizard 1 1 1 1
3 create_stock_picking_wizard_line_all create_stock_picking_wizard_line_all model_create_stock_picking_wizard_line 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,460 @@
<!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="purchase-manual-delivery">
<h1>Purchase Manual Delivery</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:c46b537bdf9bd54fa62e0b0a67593163e2fee14b3c8756c15654114c218d0d23
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<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/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/purchase-workflow/tree/16.0/purchase_manual_delivery"><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_manual_delivery"><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>The goal of this module is to allow the manual creation of incoming shipments. When installed,
a purchase order wont impact directly the stock. It will not create the pickings upon order confirmation.
It allows the reception and the impact on stock to be done manually when needed.
The goal is to be used when a supplier does not confirm the full order at once. As the supplier
confirms the different purchase order lines, the user can manually create the incoming
shipments for those specific lines.</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">
<h2><a class="toc-backref" href="#toc-entry-1">Usage</a></h2>
<p>There are two main ways to use this module:</p>
<ul class="simple">
<li>From Purchase Order</li>
</ul>
<p>When creating a purchase order and confirming it, no picking will be automatically created.
Lines with pending quantities to receive will appear in blue color, to create
the manual picking press the button “Create Incoming Shipment”:</p>
<div class="figure">
<img alt="https://raw.githubusercontent.com/OCA/purchase-workflow/16.0/purchase_manual_delivery/static/description/create_incoming_shipment_button.png" src="https://raw.githubusercontent.com/OCA/purchase-workflow/16.0/purchase_manual_delivery/static/description/create_incoming_shipment_button.png" style="width: 800px;" />
</div>
<p>This will trigger the wizard that lets the user choose which lines should be taken for the
creation of the picking and also the quantities. Clicking on the “Create and View Picking”
will create the reception and redirect the user to the picking form.</p>
<div class="figure">
<img alt="https://raw.githubusercontent.com/OCA/purchase-workflow/16.0/purchase_manual_delivery/static/description/create_incoming_shipment_wizard.png" src="https://raw.githubusercontent.com/OCA/purchase-workflow/16.0/purchase_manual_delivery/static/description/create_incoming_shipment_wizard.png" style="width: 800px;" />
</div>
<ul class="simple">
<li>From Purchase Order Line</li>
</ul>
<p>The module adds a new list view for Purchase Order Lines (in Purchase Menu). From there you can select multiple
PO lines (in this base module only PO lines from same PO can be selected) and create the
manual delivery. Follow the same steps as above to manually generate the incoming shipment.</p>
</div>
<div class="section" id="bug-tracker">
<h2><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h2>
<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_manual_delivery%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-3">Credits</a></h2>
<div class="section" id="authors">
<h3><a class="toc-backref" href="#toc-entry-4">Authors</a></h3>
<ul class="simple">
<li>ForgeFlow S.L.</li>
</ul>
</div>
<div class="section" id="contributors">
<h3><a class="toc-backref" href="#toc-entry-5">Contributors</a></h3>
<ul class="simple">
<li>Adria Gil Sorribes &lt;<a class="reference external" href="mailto:adria.gil&#64;forgeflow.com">adria.gil&#64;forgeflow.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h3><a class="toc-backref" href="#toc-entry-6">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>This module is part of the <a class="reference external" href="https://github.com/OCA/purchase-workflow/tree/16.0/purchase_manual_delivery">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>
</div>
</body>
</html>

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8" ?>
<templates id="template" xml:space="preserve">
<t
t-name="purchase_manual_delivery.ForecastedDetails"
owl="1"
t-inherit="stock.ForecastedDetails"
t-inherit-mode="extension"
>
<xpath expr="//tr[@name='draft_po_in']" position="after">
<tr t-if="props.docs.no_delivery_purchase_qty" name="no_delivery_in">
<td colspan="2"> Requests without delivery</td>
<td
t-out="_formatFloat(props.docs.no_delivery_purchase_qty)"
class="text-end"
/>
<td>
<t
t-foreach="props.docs.no_delivery_purchase_orders"
t-as="purchase_order"
t-key="purchase_order_index"
>
<t t-if="purchase_order_index > 0"> | </t>
<a
t-attf-href="#"
t-out="purchase_order.name"
class="fw-bold"
t-on-click.prevent="() => this.props.openView('purchase.order', 'form', purchase_order.id)"
/>
</t>
</td>
</tr>
</xpath>
</t>
</templates>

View file

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

View file

@ -0,0 +1,408 @@
# Copyright 2019 ForgeFlow S.L.
# Copyright 2025 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields
from odoo.exceptions import UserError
from odoo.tests import Form, new_test_user
from odoo.tools import mute_logger
from odoo.addons.base.tests.common import BaseCommon
class TestPurchaseManualDelivery(BaseCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.purchase_order_obj = cls.env["purchase.order"]
cls.purchase_order_line_obj = cls.env["purchase.order.line"]
cls.stock_picking_obj = cls.env["stock.picking"]
cls.env.company.purchase_manual_delivery = True
# Products
cls.product1 = cls.env["product.product"].create(
{"name": "Test product 1", "detailed_type": "product"}
)
cls.product2 = cls.env["product.product"].create(
{"name": "Test product 2", "detailed_type": "product"}
)
# Sublocation
cls.shelf2 = cls.env.ref("stock.stock_location_14")
# Purchase Orders
cls.vendor = cls.env["res.partner"].create({"name": "Test vendor"})
cls.po1 = cls.purchase_order_obj.create({"partner_id": cls.vendor.id})
cls.po1_line1 = cls.purchase_order_line_obj.create(
{
"order_id": cls.po1.id,
"product_id": cls.product1.id,
"product_uom": cls.product1.uom_id.id,
"name": cls.product1.name,
"price_unit": cls.product1.standard_price,
"date_planned": fields.datetime.now(),
"product_qty": 42.0,
}
)
cls.po1_line2 = cls.purchase_order_line_obj.create(
{
"order_id": cls.po1.id,
"product_id": cls.product2.id,
"product_uom": cls.product2.uom_id.id,
"name": cls.product2.name,
"price_unit": cls.product2.standard_price,
"date_planned": fields.datetime.now(),
"product_qty": 12.0,
}
)
cls.po2 = cls.purchase_order_obj.create({"partner_id": cls.vendor.id})
cls.po2_line1 = cls.purchase_order_line_obj.create(
{
"order_id": cls.po2.id,
"product_id": cls.product1.id,
"product_uom": cls.product1.uom_id.id,
"name": cls.product1.name,
"price_unit": cls.product1.standard_price,
"date_planned": fields.datetime.now(),
"product_qty": 10.0,
}
)
cls.po2_line2 = cls.purchase_order_line_obj.create(
{
"order_id": cls.po2.id,
"product_id": cls.product2.id,
"product_uom": cls.product2.uom_id.id,
"name": cls.product2.name,
"price_unit": cls.product2.standard_price,
"date_planned": fields.datetime.now(),
"product_qty": 22.0,
}
)
@mute_logger("odoo.models.unlink")
def test_01_purchase_order_manual_delivery(self):
"""
Confirm Purchase Order 1, check no incoming shipments have been
pre-created, create them manually (create one with one PO line,
add second PO line to same picking afterwards)
"""
# confirm RFQ
self.po1.button_confirm_manual()
self.assertTrue(self.po1_line1.pending_to_receive)
self.assertTrue(self.po1_line2.pending_to_receive)
self.assertEqual(self.po1_line1.existing_qty, 0)
self.assertEqual(self.po1_line2.existing_qty, 0)
self.assertFalse(
self.po1.picking_ids,
"Purchase Manual Delivery: no picking should had been created",
)
# create a manual delivery for one line (product1)
wizard = (
self.env["create.stock.picking.wizard"]
.with_context(
**{
"active_model": "purchase.order",
"active_id": self.po1.id,
"active_ids": self.po1.ids,
}
)
.create({})
)
wizard.fill_lines(self.po1.order_line)
wizard.line_ids = wizard.line_ids - wizard.line_ids.filtered(
lambda l: l.product_id == self.product2
)
wizard.create_stock_picking()
# check picking is created
self.assertTrue(
self.po1.picking_ids,
'Purchase Manual Delivery: picking \
should be created after "manual delivery" wizard call',
)
picking_id = self.po1.picking_ids[0]
# create a manual delivery, other product (product2)
wizard = (
self.env["create.stock.picking.wizard"]
.with_context(
**{
"active_model": "purchase.order",
"active_id": self.po1.id,
"active_ids": self.po1.ids,
}
)
.create({})
)
wizard.fill_lines(self.po1.order_line)
self.assertEqual(len(wizard.line_ids), 1)
self.assertEqual(wizard.line_ids[0].product_id, self.product2)
wizard.picking_id = picking_id
wizard.create_stock_picking()
self.assertEqual(
len(self.po1.picking_ids),
1,
"No extra picking should have been created",
)
# create a manual delivery, no lines should be proposed
wizard = (
self.env["create.stock.picking.wizard"]
.with_context(
**{
"active_model": "purchase.order",
"active_id": self.po1.id,
"active_ids": self.po1.ids,
}
)
.create({})
)
wizard.fill_lines(self.po1.order_line)
self.assertFalse(
wizard.line_ids,
"Purchase Manual Delivery: After picking \
creation for all products, no lines should be left in the wizard",
)
self.assertFalse(self.po1_line1.pending_to_receive)
self.assertFalse(self.po1_line2.pending_to_receive)
self.assertEqual(self.po1_line1.existing_qty, self.po1_line1.product_qty)
self.assertEqual(self.po1_line2.existing_qty, self.po1_line2.product_qty)
def test_02_purchase_order_line_manual_delivery(self):
"""
Confirm Purchase Order 1 and 2, try to create incoming shipment
from two PO lines from different PO (error), create one reception
for two PO lines from same PO twice.
"""
# confirm RFQ
self.po1.button_confirm_manual()
self.po2.button_confirm_manual()
self.assertTrue(self.po1_line1.pending_to_receive)
self.assertTrue(self.po1_line2.pending_to_receive)
self.assertTrue(self.po2_line1.pending_to_receive)
self.assertTrue(self.po2_line2.pending_to_receive)
self.assertEqual(self.po1_line1.existing_qty, 0)
self.assertEqual(self.po1_line2.existing_qty, 0)
self.assertEqual(self.po2_line1.existing_qty, 0)
self.assertEqual(self.po2_line2.existing_qty, 0)
with self.assertRaises(UserError):
# create a manual delivery for two lines different PO
self.env["create.stock.picking.wizard"].with_context(
**{
"active_model": "purchase.order.line",
"active_ids": [self.po1_line1.id, self.po2_line1.id],
}
).create({})
# create a manual delivery for lines in PO2
wizard = (
self.env["create.stock.picking.wizard"]
.with_context(
**{
"active_model": "purchase.order.line",
"active_ids": self.po2.order_line.ids,
}
)
.create({})
)
wizard.fill_lines(self.po2.order_line)
wizard.create_stock_picking()
self.assertTrue(
self.po2.picking_ids,
'Purchase Manual Delivery: picking \
should be created after "manual delivery" wizard call',
)
self.assertTrue(self.po1_line1.pending_to_receive)
self.assertTrue(self.po1_line2.pending_to_receive)
self.assertFalse(self.po2_line1.pending_to_receive)
self.assertFalse(self.po2_line2.pending_to_receive)
self.assertEqual(self.po1_line1.existing_qty, 0)
self.assertEqual(self.po1_line2.existing_qty, 0)
self.assertEqual(self.po2_line1.existing_qty, self.po2_line1.product_qty)
self.assertEqual(self.po2_line2.existing_qty, self.po2_line2.product_qty)
@mute_logger("odoo.models.unlink")
def test_03_purchase_order_line_location(self):
"""
Confirm Purchase Order 1, create one reception changing the
location, check location has been correctly set in Picking.
"""
grp_multi_loc = self.env.ref("stock.group_stock_multi_locations")
self.env.user.write({"groups_id": [(4, grp_multi_loc.id, 0)]})
# confirm RFQ
self.po1.button_confirm_manual()
self.assertTrue(self.po1_line1.pending_to_receive)
self.assertTrue(self.po1_line2.pending_to_receive)
self.assertEqual(self.po1_line1.existing_qty, 0)
self.assertEqual(self.po1_line2.existing_qty, 0)
# create a manual delivery for one line (product1)
wizard = (
self.env["create.stock.picking.wizard"]
.with_context(
**{
"active_model": "purchase.order",
"active_id": self.po1.id,
"active_ids": self.po1.ids,
}
)
.create({})
)
wizard.fill_lines(self.po1.order_line)
wizard.line_ids = wizard.line_ids - wizard.line_ids.filtered(
lambda l: l.product_id == self.product2
)
wizard.location_dest_id = self.shelf2
wizard.create_stock_picking()
# check picking is created
picking_id = self.po1.picking_ids[0]
self.assertEqual(picking_id.location_dest_id, self.shelf2)
self.assertFalse(self.po1_line1.pending_to_receive)
self.assertTrue(self.po1_line2.pending_to_receive)
self.assertEqual(self.po1_line1.existing_qty, self.po1_line1.product_qty)
self.assertEqual(self.po1_line2.existing_qty, 0)
@mute_logger("odoo.models.unlink")
def test_04_pending_to_receive(self):
"""
Checks if a purchase order line with existing quantity higher than
total quantity is not pending to receive
"""
# Create PO and PO Line
po_existing_bigger = self.purchase_order_obj.create(
{
"partner_id": self.ref("base.res_partner_3"),
}
)
pol_existing_bigger = self.purchase_order_line_obj.create(
{
"order_id": po_existing_bigger.id,
"product_id": self.product1.id,
"product_uom": self.product1.uom_id.id,
"name": self.product1.name,
"price_unit": self.product1.standard_price,
"date_planned": fields.datetime.now(),
"product_qty": 5.0,
}
)
po_existing_bigger.button_confirm_manual()
# create a manual delivery for line in po_existing_bigger
wizard = (
self.env["create.stock.picking.wizard"]
.with_context(
**{
"active_model": "purchase.order.line",
"active_ids": po_existing_bigger.order_line.ids,
}
)
.create({})
)
wizard.fill_lines(po_existing_bigger.order_line)
wizard.line_ids.filtered(
lambda l: l.purchase_order_line_id.id == pol_existing_bigger.id
).qty = 1
wizard.create_stock_picking()
# Change the done quantity to be bigger than the total needed
picking_id = po_existing_bigger.picking_ids[0]
picking_id.move_ids[0].quantity_done = 6
picking_id.button_validate()
# The PO Line should not be pending to receive
self.assertFalse(po_existing_bigger.pending_to_receive)
def test_05_purchase_order_in_progress(self):
"""
Create a new Product and Purchase Order.
Confirm Purchase Order and create a Picking with only a partial amount of
the selected amount of the Purchase Order Line. Confirm the Picking.
The quantity in progress is the pending to receive quantity of the Purchase
Order Line.
"""
product_in_progress = self.env["product.product"].create(
{
"name": "Test product pending",
"type": "product",
"list_price": 1,
"standard_price": 1,
}
)
po_in_progress = self.purchase_order_obj.create(
{
"partner_id": self.ref("base.res_partner_3"),
}
)
self.purchase_order_line_obj.create(
{
"order_id": po_in_progress.id,
"product_id": product_in_progress.id,
"product_uom": product_in_progress.uom_id.id,
"name": product_in_progress.name,
"price_unit": product_in_progress.standard_price,
"date_planned": fields.datetime.now(),
"product_qty": 5.0,
}
)
po_in_progress.button_confirm_manual()
location = self.env["stock.location"].browse(
po_in_progress.picking_type_id.default_location_dest_id.id
)
wizard = (
self.env["create.stock.picking.wizard"]
.with_context(
**{
"active_model": "purchase.order",
"active_id": po_in_progress.id,
"active_ids": po_in_progress.ids,
}
)
.create({})
)
wizard.fill_lines(po_in_progress.order_line)
wizard.line_ids[0].qty = 2
wizard.create_stock_picking()
po_in_progress.picking_ids[0].button_validate()
qty, _ = product_in_progress._get_quantity_in_progress(
location_ids=location.ids
)
self.assertEqual(qty.get((product_in_progress.id, location.id)), 3)
def test_06_purchase_order_manual_delivery_double_validation(self):
"""
Confirm Purchase Order 1, check no incoming shipments have been
pre-created. Approve Purchase Order 1, check no incoming shipments
have been pre-created.
"""
self.user_purchase_user = new_test_user(
self.env,
login="test-user_purchase_user",
email="pur@example.com",
groups="purchase.group_purchase_user",
)
# make double validation two step
self.env.company.write(
{"po_double_validation": "two_step", "po_double_validation_amount": 2000.00}
)
# Create draft RFQ
order_form = Form(self.env["purchase.order"].with_user(self.user_purchase_user))
order_form.partner_id = self.vendor
with order_form.order_line.new() as line_form:
line_form.product_id = self.product1
line_form.product_qty = 5
line_form.price_unit = 5000000
self.po = order_form.save()
# confirm RFQ
self.po.button_confirm_manual()
self.assertTrue(self.po.order_line.pending_to_receive)
self.assertEqual(self.po.order_line.existing_qty, 0)
self.assertFalse(
self.po.picking_ids,
"Purchase Manual Delivery: no picking should had been created",
)
self.assertEqual(self.po.state, "to approve")
# PO approved by manager
self.po.env.user.groups_id += self.env.ref("purchase.group_purchase_manager")
self.po.button_approve()
self.assertTrue(self.po.order_line.pending_to_receive)
self.assertEqual(self.po.order_line.existing_qty, 0)
self.assertFalse(
self.po.picking_ids,
"Purchase Manual Delivery: no picking should had been created",
)
self.assertEqual(self.po.state, "purchase")

View file

@ -0,0 +1,136 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="purchase_order_view_form_inherit" model="ir.ui.view">
<field name="name">purchase.order.form</field>
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.purchase_order_form" />
<field name="arch" type="xml">
<xpath expr="//header/button[@name='action_rfq_send']" position="after">
<field name="pending_to_receive" invisible="1" />
<button
name="%(action_create_manual_stock_picking)d"
string="Create Incoming Shipment"
type="action"
class="btn-primary"
attrs="{'invisible': ['|', '|', ('state', '!=', 'purchase'), ('pending_to_receive', '=', False), ('manual_delivery', '=', False)]}"
/>
</xpath>
<button id="draft_confirm" position="attributes">
<attribute name="invisible">1</attribute>
</button>
<button id="draft_confirm" position="after">
<button
name="button_confirm_manual"
type="object"
states="draft"
string="Confirm Order"
id="draft_confirm_manual"
/>
</button>
<button id="bid_confirm" position="attributes">
<attribute name="invisible">1</attribute>
</button>
<button id="bid_confirm" position="after">
<button
name="button_confirm_manual"
type="object"
states="sent"
string="Confirm Order"
class="oe_highlight"
id="bid_confirm_manual"
/>
</button>
<field name="qty_received" position="before">
<field name="pending_to_receive" invisible="1" />
<field
name="existing_qty"
optional="hide"
attrs="{'column_invisible': [('parent.state', 'not in', ('purchase', 'done'))]}"
/>
</field>
<xpath expr="//field[@name='order_line']/tree" position="attributes">
<attribute
name="decoration-info"
>state == 'purchase' and pending_to_receive</attribute>
</xpath>
<group name="other_info" position="inside">
<field name="manual_delivery" />
</group>
</field>
</record>
<record id="purchase_order_line_tree" model="ir.ui.view">
<field name="model">purchase.order.line</field>
<field name="inherit_id" ref="purchase.purchase_order_line_tree" />
<field name="arch" type="xml">
<xpath expr="/tree" position="attributes">
<attribute
name="decoration-info"
>state == 'purchase' and pending_to_receive</attribute>
</xpath>
<field name="product_qty" position="after">
<field name="existing_qty" />
</field>
<field name="date_planned" position="after">
<field name="pending_to_receive" />
<field name="state" invisible="1" />
</field>
</field>
</record>
<record id="view_purchase_order_unreceived_line_filter" model="ir.ui.view">
<field name="name">purchase.order.unreceived.line</field>
<field name="model">purchase.order.line</field>
<field name="arch" type="xml">
<search string="Search Undelivered Lines">
<field name="order_id" />
<separator />
<filter
string="Reception confirmed"
name="received"
domain="[('pending_to_receive','=', False), ('state', '=', 'purchase')]"
help="Purchase Order Lines that are confirmed or done and an incoming shipment is created to satisfy them"
/>
<filter
string="Pending to receive"
name="unreceived"
domain="[('pending_to_receive','=', True), ('state', '=', 'purchase')]"
help="Purchase Order Lines that are confirmed or done and no incoming shipment is created to satisfy them"
/>
<group expand="0" string="Group By">
<filter
name="purchase"
string="Purchase Order"
context="{'group_by':'order_id'}"
/>
</group>
</search>
</field>
</record>
<record id="action_order_line_delivery_tree" model="ir.actions.act_window">
<field name="name">Purchase Manual Receipt</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">purchase.order.line</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_purchase_order_unreceived_line_filter" />
<field
name="context"
>{"search_default_unreceived":0, "search_default_received":0}</field>
<field name="filter" eval="True" />
<field name="help" type="html">
<p>
Here is a list of each purchase order line to be received.
</p>
</field>
</record>
<menuitem
id="menu_delivery_purchase_order_lines"
parent="purchase.menu_procurement_management"
action="action_order_line_delivery_tree"
sequence="7"
/>
</odoo>

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.manual.delivery</field>
<field name="model">res.config.settings</field>
<field
name="inherit_id"
ref="purchase.res_config_settings_view_form_purchase"
/>
<field name="arch" type="xml">
<div name="matrix_setting_container" position="after">
<h2>Delivery</h2>
<div
class="row mt16 o_settings_container"
name="matrix_setting_container"
>
<div
class="col-12 col-lg-6 o_setting_box"
id="purchase_manual_delivery"
title="If active, Receipt of purchase orders should be manual created."
>
<div class="o_setting_left_pane">
<field name="purchase_manual_delivery" />
</div>
<div class="o_setting_right_pane">
<label
for="purchase_manual_delivery"
string="Manual Delivery"
/>
<div class="text-muted">
Deliveries on purchase orders should be created manually.
</div>
</div>
</div>
</div>
</div>
</field>
</record>
</odoo>

View file

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

View file

@ -0,0 +1,255 @@
# Copyright 2019 ForgeFlow S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models
from odoo.exceptions import UserError
class CreateManualStockPickingWizard(models.TransientModel):
_name = "create.stock.picking.wizard"
_description = "Create Manual Stock Picking Wizard"
def _default_purchase_order(self):
if self.env.context["active_model"] == "purchase.order.line":
return (
self.env["purchase.order.line"]
.browse(self.env.context["active_ids"][0])
.order_id
)
return self.env["purchase.order"].browse(self.env.context["active_id"])
def _default_location_dest_id(self):
return self.env["stock.location"].browse(
self._default_purchase_order()._get_destination_location()
)
@api.model
def default_get(self, fields):
res = super(CreateManualStockPickingWizard, self).default_get(fields)
active_model = self.env.context["active_model"]
if active_model == "purchase.order.line":
po_line_ids = self.env.context["active_ids"] or []
purchase_lines = (
self.env["purchase.order.line"]
.browse(po_line_ids)
.filtered(
lambda p: p.product_id.type in ["product", "consu"]
and p.pending_to_receive
)
)
elif active_model == "purchase.order":
po_ids = self.env.context["active_ids"] or []
purchase_lines = (
self.env["purchase.order"]
.browse(po_ids)
.mapped("order_line")
.filtered(
lambda p: p.product_id.type in ["product", "consu"]
and p.pending_to_receive
)
)
self._check_purchase_line_constrains(purchase_lines)
res["line_ids"] = self.fill_lines(purchase_lines)
res["partner_id"] = purchase_lines.mapped("order_id.partner_id").id
return res
def _check_purchase_line_constrains(self, purchase_lines):
if len(purchase_lines.mapped("order_id.partner_id")) > 1:
raise UserError(_("Please select one partner at a time"))
if len(purchase_lines.mapped("order_id")) > 1:
raise UserError(_("Please select one purchase order at a time"))
def fill_lines(self, po_lines):
lines = [
(
0,
0,
{
"purchase_order_line_id": line.id,
"name": line.name,
"product_id": line.product_id.id,
"date_planned": line.date_planned,
"price_unit": line.price_unit,
"product_qty": line.product_qty,
"existing_qty": line.existing_qty,
"remaining_qty": line.product_qty - line.existing_qty,
"qty": line.product_qty - line.existing_qty,
"product_uom": line.product_uom.id,
"currency_id": line.currency_id.id,
"partner_id": line.partner_id.id,
# 'taxes_id': line.taxes_id.ids,
},
)
for line in po_lines
]
return lines
purchase_id = fields.Many2one(
"purchase.order",
string="Purchase Order",
readonly=True,
default=_default_purchase_order,
)
line_ids = fields.One2many(
comodel_name="create.stock.picking.wizard.line",
inverse_name="wizard_id",
string="Lines",
)
picking_id = fields.Many2one("stock.picking", string="Stock Picking")
partner_id = fields.Many2one("res.partner", "Vendor")
scheduled_date = fields.Datetime(
"Scheduled Date", related="picking_id.scheduled_date"
)
location_dest_id = fields.Many2one(
"stock.location",
"Destination Location",
default=_default_location_dest_id,
help="Location where the system will stock the received products.",
)
@api.onchange("picking_id")
def onchange_picking_id(self):
if self.picking_id:
self.location_dest_id = self.picking_id.location_dest_id
def _prepare_picking(self):
res = self.purchase_id._prepare_picking()
if self.location_dest_id:
res["location_dest_id"] = self.location_dest_id.id
return res
def create_stock_picking(self):
StockPicking = self.env["stock.picking"]
# If a picking has been selected, we add products to the picking
# otherwise we create a new picking
picking_id = self.picking_id
if not picking_id:
res = self._prepare_picking()
picking_id = StockPicking.create(res)
# Check quantity is not above remaining quantity
if any(line.qty > line.remaining_qty for line in self.line_ids):
raise UserError(
_(
"You can not receive more than the remaining "
"quantity. If you need to do so, please edit "
"the purchase order first."
)
)
moves = self.line_ids._create_stock_moves(picking_id)
moves = moves.filtered(
lambda x: x.state not in ("done", "cancel")
)._action_confirm()
seq = 0
for move in sorted(moves, key=lambda move: move.date_deadline or move.date):
seq += 5
move.sequence = seq
moves._action_assign()
picking_id.message_post_with_view(
"mail.message_origin_link",
values={"self": picking_id, "origin": self.purchase_id},
subtype_id=self.env.ref("mail.mt_note").id,
)
return {
"name": _("Stock Picking"),
"view_mode": "form",
"res_model": "stock.picking",
"view_id": self.env.ref("stock.view_picking_form").id,
"res_id": picking_id.id,
"type": "ir.actions.act_window",
}
class CreateManualStockPickingWizardLine(models.TransientModel):
_name = "create.stock.picking.wizard.line"
_description = "Create Manual Stock Picking Wizard Line"
wizard_id = fields.Many2one(
string="Wizard",
comodel_name="create.stock.picking.wizard",
required=True,
ondelete="cascade",
)
purchase_order_line_id = fields.Many2one("purchase.order.line")
name = fields.Text(string="Description", readonly=True)
product_id = fields.Many2one(
"product.product",
related="purchase_order_line_id.product_id",
string="Product",
)
product_uom = fields.Many2one(
"uom.uom",
related="purchase_order_line_id.product_uom",
string="Unit of Measure",
)
date_planned = fields.Datetime(related="purchase_order_line_id.date_planned")
product_qty = fields.Float(
string="Quantity",
related="purchase_order_line_id.product_qty",
digits="Product Unit of Measure",
)
existing_qty = fields.Float(
string="Existing Quantity",
related="purchase_order_line_id.existing_qty",
digits="Product Unit of Measure",
)
remaining_qty = fields.Float(
string="Remaining Quantity",
compute="_compute_remaining_qty",
readonly=True,
digits="Product Unit of Measure",
)
qty = fields.Float(
string="Quantity to Receive",
digits="Product Unit of Measure",
help="This is the quantity taken into account to create the picking",
)
price_unit = fields.Float(
related="purchase_order_line_id.price_unit", readonly=True
)
currency_id = fields.Many2one(
"res.currency", related="purchase_order_line_id.currency_id"
)
partner_id = fields.Many2one(
"res.partner",
related="purchase_order_line_id.partner_id",
string="Vendor",
)
taxes_id = fields.Many2many(
"account.tax", related="purchase_order_line_id.taxes_id"
)
def _compute_remaining_qty(self):
for line in self:
line.remaining_qty = line.product_qty - line.existing_qty
def _prepare_stock_moves(self, picking):
po_line = self.purchase_order_line_id
return po_line._prepare_stock_moves(picking)
def _create_stock_moves(self, picking):
values = []
for line in self:
for val in line._prepare_stock_moves(picking):
if val.get("product_uom_qty", False):
# CHECK ME: We can receive more than one move
product_uom = (
self.env["uom.uom"].browse(val.get("product_uom", 0))
or line.product_uom
)
val["product_uom_qty"] = line.product_uom._compute_quantity(
line.qty,
product_uom,
rounding_method="HALF-UP",
)
if (
val.get("location_dest_id", False)
and not line.wizard_id.picking_id
and line.wizard_id.location_dest_id
):
val["location_dest_id"] = line.wizard_id.location_dest_id.id
values.append(val)
return self.env["stock.move"].create(values)

View file

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_create_stock_picking" model="ir.ui.view">
<field name="name">Create Stock Picking</field>
<field name="model">create.stock.picking.wizard</field>
<field name="arch" type="xml">
<form string="Create Stock Picking">
<group>
<field name="purchase_id" />
<field
name="picking_id"
domain="[('purchase_id', '=', purchase_id)]"
/>
<field
name="scheduled_date"
string="Picking Scheduled Date"
attrs="{'invisible': [('picking_id', '=', False)]}"
/>
<field
name="location_dest_id"
attrs="{'readonly': [('picking_id', '!=', False)]}"
groups="stock.group_stock_multi_locations"
/>
</group>
<field name="line_ids" nolabel="1">
<tree create="false" editable="bottom">
<field name="purchase_order_line_id" invisible="1" />
<field name="product_id" />
<field name="partner_id" />
<field name="date_planned" />
<field name="price_unit" />
<field name="product_qty" string="Ordered Qty" />
<field name="existing_qty" string="Existing Qty" />
<field name="remaining_qty" string="Remaining Qty" />
<field name="qty" string="Quantity" />
<field name="product_uom" groups="uom.group_uom" />
</tree>
</field>
<footer>
<button
name="create_stock_picking"
string="Create and View Picking"
type="object"
class="btn-primary"
/>
<button string="Cancel" class="btn-default" special="cancel" />
</footer>
</form>
</field>
</record>
<record id="action_create_manual_stock_picking" model="ir.actions.act_window">
<field name="name">Create Manual Stock Picking</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">create.stock.picking.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="binding_model_id" ref="purchase.model_purchase_order_line" />
</record>
</odoo>

View file

@ -0,0 +1,46 @@
[project]
name = "odoo-bringout-oca-purchase-workflow-purchase_manual_delivery"
version = "16.0.0"
description = "Purchase Manual Delivery -
Prevents pickings to be auto generated upon Purchase Order confirmation
and adds the ability to manually generate them as the supplier confirms
the different purchase order lines.
"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-purchase-workflow-purchase_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 = ["purchase_manual_delivery"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]