Initial commit: OCA Financial packages (186 packages)

This commit is contained in:
Ernad Husremovic 2025-08-29 15:43:04 +02:00
commit 3e0e8473fb
8757 changed files with 947473 additions and 0 deletions

View file

@ -0,0 +1,47 @@
# Stock Picking Invoicing
Odoo addon: stock_picking_invoicing
## Installation
```bash
pip install odoo-bringout-oca-account-invoicing-stock_picking_invoicing
```
## Dependencies
This addon depends on:
- stock
- account
- stock_picking_invoice_link
- base_view_inheritance_extension
## Manifest Information
- **Name**: Stock Picking Invoicing
- **Version**: 16.0.1.0.3
- **Category**: Warehouse Management
- **License**: AGPL-3
- **Installable**: True
## Source
Based on [OCA/account-invoicing](https://github.com/OCA/account-invoicing) branch 16.0, addon `stock_picking_invoicing`.
## 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
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

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

View file

@ -0,0 +1,3 @@
# Configuration
Refer to Odoo settings for stock_picking_invoicing. 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,8 @@
# Dependencies
This addon depends on:
- [stock](../../odoo-bringout-oca-ocb-stock)
- [account](../../odoo-bringout-oca-ocb-account)
- [stock_picking_invoice_link](../../odoo-bringout-oca-stock-logistics-workflow-stock_picking_invoice_link)
- [base_view_inheritance_extension](../../odoo-bringout-oca-server-tools-base_view_inheritance_extension)

View file

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

View file

@ -0,0 +1,7 @@
# Install
```bash
pip install odoo-bringout-oca-account-invoicing-stock_picking_invoicing"
# or
uv pip install odoo-bringout-oca-account-invoicing-stock_picking_invoicing"
```

View file

@ -0,0 +1,17 @@
# Models
Detected core models and extensions in stock_picking_invoicing.
```mermaid
classDiagram
class stock_invoice_state_mixin
class stock_move
class stock_picking
class account_move
class stock_picking_type
class stock_rule
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

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

View file

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

View file

@ -0,0 +1,34 @@
# Security
Access control and security definitions in stock_picking_invoicing.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../stock_picking_invoicing/security/ir.model.access.csv)**
- 1 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](../stock_picking_invoicing/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 stock_picking_invoicing
```

View file

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

View file

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

View file

@ -0,0 +1,145 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association
=======================
Stock Picking Invoicing
=======================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:b1a69161b939de69e9014e13ae28d1d768d4ea4a782e5340b0fc2e253ec43b55
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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%2Faccount--invoicing-lightgray.png?logo=github
:target: https://github.com/OCA/account-invoicing/tree/16.0/stock_picking_invoicing
:alt: OCA/account-invoicing
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/account-invoicing-16-0/account-invoicing-16-0-stock_picking_invoicing
: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/account-invoicing&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows to create invoices directly from picking, without having to
use sale or purchase orders.
**Table of contents**
.. contents::
:local:
Installation
============
This module depends on *stock_picking_invoice_link* module that is hosted on
https://github.com/OCA/stock-logistics-workflow.git.
Usage
=====
To use this module, you need to:
#. Go to your picking;
#. If the invoice status is 'To be invoiced', a button will ask you to create an invoice;
#. Into the Tree view, you can select many pickings and create a grouped invoice;
#. If at least an invoice is created for a picking, a new "Invoicing" tab appears.
If an invoice (not refund) is cancelled or deleted, invoice status of related picking is automatically
updated to "To be invoiced".
Changelog
=========
16.0.1.0.0 (2023-05-25)
~~~~~~~~~~~~~~~~~~~~~~~
* Migration to version 16.0 .
* Included dependency from module base_view_inheritance_extension
from repository https://https://github.com/OCA/server-tools .
15.0.1.0.0 (2023-04-28)
~~~~~~~~~~~~~~~~~~~~~~~
* Migration to version 15.0 .
14.0.1.0.0 (2021-11-12)
~~~~~~~~~~~~~~~~~~~~~~~
* Migration to version 14.0 .
13.0.3.1.0 (2021-10-05)
~~~~~~~~~~~~~~~~~~~~~~~
* Migration to version 13.0 .
12.0.2.0.0 (2019-12-19)
~~~~~~~~~~~~~~~~~~~~~~~
* Included dependency from module stock_picking_invoice_link
from repository https://github.com/OCA/stock-logistics-workflow.git.
12.0.1.0.0 (2019-07-16)
~~~~~~~~~~~~~~~~~~~~~~~
* Migration to version 12.0 .
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-invoicing/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/account-invoicing/issues/new?body=module:%20stock_picking_invoicing%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
~~~~~~~
* Agile Business Group
Contributors
~~~~~~~~~~~~
* Lorenzo Battistini <lorenzo.battistini@agilebg.com>
* Leonardo Pistone <leonardo.pistone@agilebg.com>
* Daniel Sadamo <daniel.sadamo@kmee.com.br>
* Alex Comba <alex.comba@agilebg.com>
* Florent THOMAS <florent.thomas@mind-and-go.com>
* François Honoré <francois.honore@acsone.eu>
* Magno Costa <magno.costa@akretion.com.br>
* Luis Felipe Mileo <mileo@kmee.com.br>
* Radovan Skolnik <radovan@skolnik.info>
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/account-invoicing <https://github.com/OCA/account-invoicing/tree/16.0/stock_picking_invoicing>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,5 @@
# Copyright (C) 2019-Today: Odoo Community Association (OCA)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models
from . import wizards

View file

@ -0,0 +1,26 @@
# Copyright (C) 2019-Today: Odoo Community Association (OCA)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Stock Picking Invoicing",
"version": "16.0.1.0.3",
"category": "Warehouse Management",
"author": "Agile Business Group,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/account-invoicing",
"license": "AGPL-3",
"depends": [
"stock",
"account",
"stock_picking_invoice_link",
"base_view_inheritance_extension",
],
"data": [
"security/ir.model.access.csv",
"wizards/stock_invoice_onshipping_view.xml",
"wizards/stock_return_picking_view.xml",
"views/stock_move_views.xml",
"views/stock_picking_views.xml",
"views/stock_picking_type_views.xml",
],
"demo": ["demo/stock_picking_demo.xml"],
"installable": True,
}

View file

@ -0,0 +1,271 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- Fiscal Position -->
<record id="fiscal_position_demo" model="account.fiscal.position">
<field name="name">Test - Stock Picking Invocing</field>
<field name="company_id" ref="base.main_company" />
<field name="auto_apply">1</field>
</record>
<!-- Customer -->
<!-- Stocking Picking - To be Invoiced - State Draft-->
<record id="stock_picking_invoicing_1" model="stock.picking">
<field name="partner_id" ref="base.res_partner_2" />
<field name="picking_type_id" ref="stock.picking_type_out" />
<field name="invoice_state">2binvoiced</field>
<field name="origin">stock_picking_invoicing demo</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
</record>
<record id="stock_move_invoicing_1-1" model="stock.move">
<field name="product_id" ref="product.product_product_6" />
<field name="name">Test</field>
<field name="picking_id" ref="stock_picking_invoicing_1" />
<field name="invoice_state">2binvoiced</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
<field name="product_uom_qty">1</field>
<field name="product_uom" ref="uom.product_uom_unit" />
</record>
<record id="stock_move_invoicing_1-2" model="stock.move">
<field name="product_id" ref="product.product_product_16" />
<field name="name">Test</field>
<field name="picking_id" ref="stock_picking_invoicing_1" />
<field name="invoice_state">2binvoiced</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
<field name="product_uom_qty">1</field>
<field name="product_uom" ref="uom.product_uom_unit" />
</record>
<!-- Stocking Picking - To be Invoiced - State Assigned-->
<record id="stock_picking_invoicing_2" model="stock.picking">
<field name="partner_id" ref="base.res_partner_2" />
<field name="picking_type_id" ref="stock.picking_type_out" />
<field name="invoice_state">2binvoiced</field>
<field name="origin">stock_picking_invoicing demo</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
</record>
<record id="stock_move_invoicing_2-1" model="stock.move">
<field name="product_id" ref="product.product_product_6" />
<field name="name">Test</field>
<field name="picking_id" ref="stock_picking_invoicing_2" />
<field name="invoice_state">2binvoiced</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
<field name="product_uom_qty">1</field>
<field name="product_uom" ref="uom.product_uom_unit" />
</record>
<record id="stock_move_invoicing_2-2" model="stock.move">
<field name="product_id" ref="product.product_product_16" />
<field name="name">Test</field>
<field name="picking_id" ref="stock_picking_invoicing_2" />
<field name="invoice_state">2binvoiced</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
<field name="product_uom_qty">1</field>
<field name="product_uom" ref="uom.product_uom_unit" />
</record>
<function
model="stock.picking"
name="action_confirm"
eval="[[ref('stock_picking_invoicing_2')]]"
/>
<function
model="stock.picking"
name="action_assign"
eval="[[ref('stock_picking_invoicing_2')]]"
/>
<function
model="stock.picking"
name="button_validate"
eval="[[ref('stock_picking_invoicing_2')]]"
/>
<!-- Stocking Picking - To be Invoiced - State Cancel -->
<record id="stock_picking_invoicing_3" model="stock.picking">
<field name="partner_id" ref="base.res_partner_2" />
<field name="picking_type_id" ref="stock.picking_type_out" />
<field name="invoice_state">2binvoiced</field>
<field name="origin">stock_picking_invoicing demo</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
</record>
<record id="stock_move_invoicing_3-1" model="stock.move">
<field name="product_id" ref="product.product_product_6" />
<field name="name">Test</field>
<field name="picking_id" ref="stock_picking_invoicing_3" />
<field name="invoice_state">2binvoiced</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
<field name="product_uom_qty">1</field>
<field name="product_uom" ref="uom.product_uom_unit" />
</record>
<record id="stock_move_invoicing_3-2" model="stock.move">
<field name="product_id" ref="product.product_product_16" />
<field name="name">Test</field>
<field name="picking_id" ref="stock_picking_invoicing_3" />
<field name="invoice_state">2binvoiced</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
<field name="product_uom_qty">1</field>
<field name="product_uom" ref="uom.product_uom_unit" />
</record>
<function
model="stock.picking"
name="action_cancel"
eval="[[ref('stock_picking_invoicing_3')]]"
/>
<!-- Stocking Picking - Invoiced - State Draft-->
<record id="stock_picking_invoicing_4" model="stock.picking">
<field name="partner_id" ref="base.res_partner_2" />
<field name="picking_type_id" ref="stock.picking_type_out" />
<field name="invoice_state">invoiced</field>
<field name="origin">stock_picking_invoicing demo</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
</record>
<record id="stock_move_invoicing_4-1" model="stock.move">
<field name="product_id" ref="product.product_product_6" />
<field name="name">Test</field>
<field name="picking_id" ref="stock_picking_invoicing_4" />
<field name="invoice_state">invoiced</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
<field name="product_uom_qty">1</field>
<field name="product_uom" ref="uom.product_uom_unit" />
</record>
<record id="stock_move_invoicing_4-2" model="stock.move">
<field name="product_id" ref="product.product_product_16" />
<field name="name">Test</field>
<field name="picking_id" ref="stock_picking_invoicing_4" />
<field name="invoice_state">invoiced</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
<field name="product_uom_qty">1</field>
<field name="product_uom" ref="uom.product_uom_unit" />
</record>
<!-- Stocking Picking - None - State Draft-->
<record id="stock_picking_invoicing_5" model="stock.picking">
<field name="partner_id" ref="base.res_partner_2" />
<field name="picking_type_id" ref="stock.picking_type_out" />
<field name="invoice_state">none</field>
<field name="origin">stock_picking_invoicing demo</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
</record>
<record id="stock_move_invoicing_5-1" model="stock.move">
<field name="product_id" ref="product.product_product_6" />
<field name="name">Test</field>
<field name="picking_id" ref="stock_picking_invoicing_5" />
<field name="invoice_state">none</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
<field name="product_uom_qty">1</field>
<field name="product_uom" ref="uom.product_uom_unit" />
</record>
<record id="stock_move_invoicing_5-2" model="stock.move">
<field name="product_id" ref="product.product_product_16" />
<field name="name">Test</field>
<field name="picking_id" ref="stock_picking_invoicing_5" />
<field name="invoice_state">none</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
<field name="product_uom_qty">1</field>
<field name="product_uom" ref="uom.product_uom_unit" />
</record>
<function
model="stock.picking"
name="action_confirm"
eval="[[ref('stock_picking_invoicing_5')]]"
/>
<function
model="stock.picking"
name="action_assign"
eval="[[ref('stock_picking_invoicing_5')]]"
/>
<function
model="stock.picking"
name="button_validate"
eval="[[ref('stock_picking_invoicing_5')]]"
/>
<!-- Stocking Picking - To be Invoiced - State Cancel -->
<record id="stock_picking_invoicing_6" model="stock.picking">
<field name="partner_id" ref="base.res_partner_2" />
<field name="picking_type_id" ref="stock.picking_type_out" />
<field name="invoice_state">none</field>
<field name="origin">stock_picking_invoicing demo</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
</record>
<record id="stock_move_invoicing_6-1" model="stock.move">
<field name="product_id" ref="product.product_product_6" />
<field name="name">Test</field>
<field name="picking_id" ref="stock_picking_invoicing_6" />
<field name="invoice_state">none</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
<field name="product_uom_qty">1</field>
<field name="product_uom" ref="uom.product_uom_unit" />
</record>
<record id="stock_move_invoicing_6-2" model="stock.move">
<field name="product_id" ref="product.product_product_16" />
<field name="name">Test</field>
<field name="picking_id" ref="stock_picking_invoicing_6" />
<field name="invoice_state">none</field>
<field name="location_id" ref="stock.stock_location_stock" />
<field name="location_dest_id" ref="stock.stock_location_customers" />
<field name="product_uom_qty">1</field>
<field name="product_uom" ref="uom.product_uom_unit" />
</record>
<function
model="stock.picking"
name="action_cancel"
eval="[[ref('stock_picking_invoicing_6')]]"
/>
<!-- Supplier -->
<!-- Stocking Picking - To be Invoiced - State Assigned-->
<record id="stock_picking_invoicing_7" model="stock.picking">
<field name="partner_id" ref="base.res_partner_4" />
<field name="picking_type_id" ref="stock.picking_type_in" />
<field name="invoice_state">2binvoiced</field>
<field name="origin">stock_picking_invoicing demo</field>
<field name="location_id" ref="stock.stock_location_suppliers" />
<field name="location_dest_id" ref="stock.stock_location_stock" />
</record>
<record id="stock_move_invoicing_7-1" model="stock.move">
<field name="product_id" ref="product.product_product_6" />
<field name="name">Test</field>
<field name="picking_id" ref="stock_picking_invoicing_7" />
<field name="invoice_state">2binvoiced</field>
<field name="location_id" ref="stock.stock_location_suppliers" />
<field name="location_dest_id" ref="stock.stock_location_stock" />
<field name="product_uom_qty">1</field>
<field name="product_uom" ref="uom.product_uom_unit" />
</record>
<record id="stock_move_invoicing_7-2" model="stock.move">
<field name="product_id" ref="product.product_product_16" />
<field name="name">Test</field>
<field name="picking_id" ref="stock_picking_invoicing_7" />
<field name="invoice_state">2binvoiced</field>
<field name="location_id" ref="stock.stock_location_suppliers" />
<field name="location_dest_id" ref="stock.stock_location_stock" />
<field name="product_uom_qty">1</field>
<field name="product_uom" ref="uom.product_uom_unit" />
</record>
<function
model="stock.picking"
name="action_confirm"
eval="[[ref('stock_picking_invoicing_7')]]"
/>
<function
model="stock.picking"
name="action_assign"
eval="[[ref('stock_picking_invoicing_7')]]"
/>
<function
model="stock.picking"
name="button_validate"
eval="[[ref('stock_picking_invoicing_7')]]"
/>
</odoo>

View file

@ -0,0 +1,297 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_picking_invoicing
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "All pickings are not related to your company!"
msgstr "Nisu sva skladišna kretanja iz vaše Tvrtke!"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Cancel"
msgstr "Otkaži"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking_type__count_picking_2binvoiced
msgid "Count Picking 2Binvoiced"
msgstr "Broj otpremnica za izdavanje računa"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create"
msgstr "Kreiraj"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__sale
msgid "Create Customer Invoice"
msgstr "Kreiraj izlazni račun"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.action_stock_invoice_onshipping
msgid "Create Draft Invoices"
msgstr "Kreiraj nacrt računa"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Create Invoice"
msgstr "Kreiraj račun"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__purchase
msgid "Create Supplier Invoice"
msgstr "Kreiraj ulazni račun"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create invoice"
msgstr "Kreiraj račun"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__display_name
msgid "Display Name"
msgstr "Naziv za prikaz"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid "Group"
msgstr "Grupiraj"
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid ""
"Group pickings/moves to create invoice(s):\n"
"Picking: One invoice per picking;\n"
"Partner: One invoice for each picking's partner;\n"
"Partner/Product: One invoice per picking's partner and group product into a single invoice line."
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__id
msgid "ID"
msgstr "ID"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__invoice_date
msgid "Invoice Date"
msgstr "Datum računa"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking__invoice_state
msgid "Invoice Status"
msgstr "Status računa"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__invoiced
msgid "Invoiced"
msgstr "Izdani računi"
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_picking__invoice_state
msgid ""
"Invoiced: an invoice already exists\n"
"To Be Invoiced: need to be invoiced\n"
"Not Applicable: no invoice to create"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_return_picking__invoice_state
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_move_picking_form
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Invoicing"
msgstr "Računovodstvo"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_account_move
msgid "Journal Entry"
msgstr "Zapis dnevnika"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__journal_type
msgid "Journal Type"
msgstr "Tip dnevnika"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping____last_update
msgid "Last Modified on"
msgstr "Zadnje modificirano"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_uid
msgid "Last Updated by"
msgstr "Zadnje ažurirao"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "No invoice created!"
msgstr "Račun nije kreiran!"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__none
msgid "No invoicing"
msgstr "Nema računa"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__none
msgid "Not Applicable"
msgstr "Nije primjenjivo"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner
msgid "Partner"
msgstr "Partner"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner_product
msgid "Partner/Product"
msgstr "Partner / Proizvod"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__picking
msgid "Picking"
msgstr "Skladišnice"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking_type
msgid "Picking Type"
msgstr "Vrsta dokumenta"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.2binvoiced_action_picking_dashboard
msgid "Picking to Invoice"
msgstr "Izbor to Invoice"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__purchase_journal
msgid "Purchase Journal"
msgstr "Purchase Journal"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_return_picking
msgid "Return Picking"
msgstr "Prikupljanje proizvoda povrata"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__sale_journal
msgid "Sale Journal"
msgstr "Sale Journal"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to Not Billable"
msgstr "Set to Not Billable"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to as invoiced"
msgstr "Set to as invoiced"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to be invoiced"
msgstr "Set to be invoiced"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_invoicing_internal_search
msgid "Shipments to Invoice"
msgstr "Shipments to Invoice"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_purchase_journal
msgid "Show Purchase Journal"
msgstr "Show Purchase Journal"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_sale_journal
msgid "Show Sale Journal"
msgstr "Show Sale Journal"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_onshipping
msgid "Stock Invoice Onshipping"
msgstr "Zalihe Invoice Onshipping"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_state_mixin
msgid "Stock Invoice State Mixin"
msgstr "Zalihe Invoice State Mixin"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_move
msgid "Stock Move"
msgstr "Skladišno kretanje"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_rule
msgid "Stock Rule"
msgstr "Skladišno pravilo"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__2binvoiced
msgid "To Be Invoiced"
msgstr "To Be Invoiced"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.stock_picking_type_kanban
msgid "To be Invoiced"
msgstr "Za fakturisanje"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__2binvoiced
msgid "To be refunded/invoiced"
msgstr "To be refunded/invoiced"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking
msgid "Transfer"
msgstr "Prijenos"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "True"
msgstr "Tačno"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "or"
msgstr "ili"

View file

@ -0,0 +1,299 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_picking_invoicing
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "All pickings are not related to your company!"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Cancel"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking_type__count_picking_2binvoiced
msgid "Count Picking 2Binvoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__sale
msgid "Create Customer Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.action_stock_invoice_onshipping
msgid "Create Draft Invoices"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Create Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__purchase
msgid "Create Supplier Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_uid
msgid "Created by"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_date
msgid "Created on"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__display_name
msgid "Display Name"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid "Group"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid ""
"Group pickings/moves to create invoice(s):\n"
"Picking: One invoice per picking;\n"
"Partner: One invoice for each picking's partner;\n"
"Partner/Product: One invoice per picking's partner and group product into a "
"single invoice line."
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__id
msgid "ID"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__invoice_date
msgid "Invoice Date"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking__invoice_state
msgid "Invoice Status"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__invoiced
msgid "Invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_picking__invoice_state
msgid ""
"Invoiced: an invoice already exists\n"
"To Be Invoiced: need to be invoiced\n"
"Not Applicable: no invoice to create"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_return_picking__invoice_state
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_move_picking_form
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Invoicing"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__journal_type
msgid "Journal Type"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping____last_update
msgid "Last Modified on"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_uid
msgid "Last Updated by"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_date
msgid "Last Updated on"
msgstr ""
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "No invoice created!"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__none
msgid "No invoicing"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__none
msgid "Not Applicable"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner
msgid "Partner"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner_product
msgid "Partner/Product"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__picking
msgid "Picking"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking_type
msgid "Picking Type"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.2binvoiced_action_picking_dashboard
msgid "Picking to Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__purchase_journal
msgid "Purchase Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_return_picking
msgid "Return Picking"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__sale_journal
msgid "Sale Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to Not Billable"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to as invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to be invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_invoicing_internal_search
msgid "Shipments to Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_purchase_journal
msgid "Show Purchase Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_sale_journal
msgid "Show Sale Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_onshipping
msgid "Stock Invoice Onshipping"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_state_mixin
msgid "Stock Invoice State Mixin"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_move
msgid "Stock Move"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_rule
msgid "Stock Rule"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__2binvoiced
msgid "To Be Invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.stock_picking_type_kanban
msgid "To be Invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__2binvoiced
msgid "To be refunded/invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking
msgid "Transfer"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "True"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "or"
msgstr ""

View file

@ -0,0 +1,299 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_picking_invoicing
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "All pickings are not related to your company!"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Cancel"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking_type__count_picking_2binvoiced
msgid "Count Picking 2Binvoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__sale
msgid "Create Customer Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.action_stock_invoice_onshipping
msgid "Create Draft Invoices"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Create Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__purchase
msgid "Create Supplier Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_uid
msgid "Created by"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_date
msgid "Created on"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__display_name
msgid "Display Name"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid "Group"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid ""
"Group pickings/moves to create invoice(s):\n"
"Picking: One invoice per picking;\n"
"Partner: One invoice for each picking's partner;\n"
"Partner/Product: One invoice per picking's partner and group product into a "
"single invoice line."
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__id
msgid "ID"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__invoice_date
msgid "Invoice Date"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking__invoice_state
msgid "Invoice Status"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__invoiced
msgid "Invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_picking__invoice_state
msgid ""
"Invoiced: an invoice already exists\n"
"To Be Invoiced: need to be invoiced\n"
"Not Applicable: no invoice to create"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_return_picking__invoice_state
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_move_picking_form
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Invoicing"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__journal_type
msgid "Journal Type"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping____last_update
msgid "Last Modified on"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_uid
msgid "Last Updated by"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_date
msgid "Last Updated on"
msgstr ""
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "No invoice created!"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__none
msgid "No invoicing"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__none
msgid "Not Applicable"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner
msgid "Partner"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner_product
msgid "Partner/Product"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__picking
msgid "Picking"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking_type
msgid "Picking Type"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.2binvoiced_action_picking_dashboard
msgid "Picking to Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__purchase_journal
msgid "Purchase Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_return_picking
msgid "Return Picking"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__sale_journal
msgid "Sale Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to Not Billable"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to as invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to be invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_invoicing_internal_search
msgid "Shipments to Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_purchase_journal
msgid "Show Purchase Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_sale_journal
msgid "Show Sale Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_onshipping
msgid "Stock Invoice Onshipping"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_state_mixin
msgid "Stock Invoice State Mixin"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_move
msgid "Stock Move"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_rule
msgid "Stock Rule"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__2binvoiced
msgid "To Be Invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.stock_picking_type_kanban
msgid "To be Invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__2binvoiced
msgid "To be refunded/invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking
msgid "Transfer"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "True"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "or"
msgstr ""

View file

@ -0,0 +1,312 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_picking_invoicing
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-29 19:33+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: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "All pickings are not related to your company!"
msgstr "¡Todas los despachos no están relacionadas con su empresa!"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Cancel"
msgstr "Cancelar"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking_type__count_picking_2binvoiced
msgid "Count Picking 2Binvoiced"
msgstr "Contar despachos a ser facturados"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create"
msgstr "Crear"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__sale
msgid "Create Customer Invoice"
msgstr "Crear Factura de Cliente"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.action_stock_invoice_onshipping
msgid "Create Draft Invoices"
msgstr "Crear Facturas Borrador"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Create Invoice"
msgstr "Crear Factura"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__purchase
msgid "Create Supplier Invoice"
msgstr "Crear Factura de Proveedor"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create invoice"
msgstr "Crear Factura"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_date
msgid "Created on"
msgstr "Creado en"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__display_name
msgid "Display Name"
msgstr "Nombre Mostrado"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid "Group"
msgstr "Grupo"
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid ""
"Group pickings/moves to create invoice(s):\n"
"Picking: One invoice per picking;\n"
"Partner: One invoice for each picking's partner;\n"
"Partner/Product: One invoice per picking's partner and group product into a "
"single invoice line."
msgstr ""
"Agrupar picking / movimientos para crear facturas:\n"
"Picking: una factura por picking;\n"
"Contacto: una factura para cada contacto de picking;\n"
"Contacto / Producto: Una factura por contacto del picking y producto grupal "
"en una sola línea de factura."
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__id
msgid "ID"
msgstr "ID"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__invoice_date
msgid "Invoice Date"
msgstr "Fecha de Factura"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking__invoice_state
msgid "Invoice Status"
msgstr "Estado de Factura"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__invoiced
msgid "Invoiced"
msgstr "Facturado"
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_picking__invoice_state
msgid ""
"Invoiced: an invoice already exists\n"
"To Be Invoiced: need to be invoiced\n"
"Not Applicable: no invoice to create"
msgstr ""
"Facturado: ya existe una factura\n"
"Para ser facturado: necesita ser facturado\n"
"No aplicable: sin factura para crear"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_return_picking__invoice_state
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_move_picking_form
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Invoicing"
msgstr "Facturación"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_account_move
msgid "Journal Entry"
msgstr "Entrada Diario"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__journal_type
msgid "Journal Type"
msgstr "Tipo de Diario"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping____last_update
msgid "Last Modified on"
msgstr "Última modificación en"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_date
msgid "Last Updated on"
msgstr "Última actualización el"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "No invoice created!"
msgstr "No se creó factura!"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__none
msgid "No invoicing"
msgstr "Sin facturación"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__none
msgid "Not Applicable"
msgstr "No aplica"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner
msgid "Partner"
msgstr "Contacto"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner_product
msgid "Partner/Product"
msgstr "Contacto/Producto"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__picking
msgid "Picking"
msgstr "Albarán"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking_type
msgid "Picking Type"
msgstr "Tipo de Picking"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.2binvoiced_action_picking_dashboard
msgid "Picking to Invoice"
msgstr "Picking a facturar"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__purchase_journal
msgid "Purchase Journal"
msgstr "Diario de Compra"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_return_picking
msgid "Return Picking"
msgstr "Albarán de Devolución"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__sale_journal
msgid "Sale Journal"
msgstr "Diario de Venta"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to Not Billable"
msgstr "Establecer como No facturable"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to as invoiced"
msgstr "Establecer como facturado"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to be invoiced"
msgstr "Configurado para ser facturado"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_invoicing_internal_search
msgid "Shipments to Invoice"
msgstr "Envíos a facturar"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_purchase_journal
msgid "Show Purchase Journal"
msgstr "Mostrar Diario de Compras"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_sale_journal
msgid "Show Sale Journal"
msgstr "Mostrar Diario de Venta"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_onshipping
msgid "Stock Invoice Onshipping"
msgstr "Envío de factura de stock"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_state_mixin
msgid "Stock Invoice State Mixin"
msgstr "Estado de la factura de existencias Mixin"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_move
msgid "Stock Move"
msgstr "Movimiento de Stock"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_rule
msgid "Stock Rule"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__2binvoiced
msgid "To Be Invoiced"
msgstr "Para ser facturado"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.stock_picking_type_kanban
msgid "To be Invoiced"
msgstr "Para ser facturado"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__2binvoiced
msgid "To be refunded/invoiced"
msgstr "A devolver/facturar"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking
msgid "Transfer"
msgstr "Transferir"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "True"
msgstr "Verdadero"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "or"
msgstr "o"
#~ msgid "Invoice"
#~ msgstr "Factura"

View file

@ -0,0 +1,349 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_picking_invoicing
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-09 12:43+0000\n"
"PO-Revision-Date: 2025-01-31 18:06+0000\n"
"Last-Translator: Arnaud LAYEC <arnaudlayec@gmail.com>\n"
"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.6.2\n"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "All pickings are not related to your company!"
msgstr "Les pickings ne sont pas liés à la même société!"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Cancel"
msgstr "Annuler"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking_type__count_picking_2binvoiced
msgid "Count Picking 2Binvoiced"
msgstr "Nombre de transfert à facturer"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create"
msgstr "Créer"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__sale
msgid "Create Customer Invoice"
msgstr "Créer une facture client"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.action_stock_invoice_onshipping
msgid "Create Draft Invoices"
msgstr "Créer factures brouillons"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Create Invoice"
msgstr "Créer une facture"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__purchase
msgid "Create Supplier Invoice"
msgstr "Créer facture fournisseur"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create invoice"
msgstr "Créer facture"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_date
msgid "Created on"
msgstr "Créé le"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__display_name
msgid "Display Name"
msgstr "Nom à afficher"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid "Group"
msgstr "Groupe"
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid ""
"Group pickings/moves to create invoice(s):\n"
"Picking: One invoice per picking;\n"
"Partner: One invoice for each picking's partner;\n"
"Partner/Product: One invoice per picking's partner and group product into a "
"single invoice line."
msgstr ""
"Grouper les pickings/mouvements à facturer:\n"
"Picking: Une facture par picking;\n"
"Partenaire: Une facture par partenaire du picking;\n"
"Partenaire/Article: Une facture par partenaire du picking et grouper les "
"articles similaires dans une seule ligne de facture."
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__id
msgid "ID"
msgstr "ID"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__invoice_date
#, fuzzy
msgid "Invoice Date"
msgstr "Date de facturation"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking__invoice_state
msgid "Invoice Status"
msgstr "État de la facture"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__invoiced
msgid "Invoiced"
msgstr "Facturé"
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_picking__invoice_state
msgid ""
"Invoiced: an invoice already exists\n"
"To Be Invoiced: need to be invoiced\n"
"Not Applicable: no invoice to create"
msgstr ""
"Facturé: Une facture existe déjà\n"
"À facturer: facturation à faire\n"
"Non applicable: Pas de facturer à créer"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_return_picking__invoice_state
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_move_picking_form
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Invoicing"
msgstr "Facturation"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_account_move
msgid "Journal Entry"
msgstr "Entrée de journal"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__journal_type
#, fuzzy
msgid "Journal Type"
msgstr "Type de journal"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping____last_update
msgid "Last Modified on"
msgstr "Dernière Modification le"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "No invoice created!"
msgstr "Pas de facture créée!"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__none
msgid "No invoicing"
msgstr "Pas de facture"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__none
msgid "Not Applicable"
msgstr "Non applicable"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner
msgid "Partner"
msgstr "Partenaire"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner_product
msgid "Partner/Product"
msgstr "Partenaire/Article"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__picking
msgid "Picking"
msgstr "Picking"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking_type
msgid "Picking Type"
msgstr "Type de transfert"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.2binvoiced_action_picking_dashboard
msgid "Picking to Invoice"
msgstr "À facturer"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__purchase_journal
#, fuzzy
msgid "Purchase Journal"
msgstr "Journal d'achat"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_return_picking
msgid "Return Picking"
msgstr "Transfert de retour"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__sale_journal
msgid "Sale Journal"
msgstr "Journal de vente"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to Not Billable"
msgstr "Non-facturable"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to as invoiced"
msgstr "Facturé"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to be invoiced"
msgstr "À facturer"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_invoicing_internal_search
msgid "Shipments to Invoice"
msgstr "À facturer"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_purchase_journal
msgid "Show Purchase Journal"
msgstr "Journal d'achat"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_sale_journal
msgid "Show Sale Journal"
msgstr "Journal de vente"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_onshipping
msgid "Stock Invoice Onshipping"
msgstr "Facture de livraison"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_state_mixin
msgid "Stock Invoice State Mixin"
msgstr "Mixin de facture de livraison"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_move
msgid "Stock Move"
msgstr "Mouvement de stock"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_rule
msgid "Stock Rule"
msgstr "Règle de stock"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__2binvoiced
msgid "To Be Invoiced"
msgstr "À facturer"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.stock_picking_type_kanban
#, fuzzy
msgid "To be Invoiced"
msgstr "À facturer"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__2binvoiced
msgid "To be refunded/invoiced"
msgstr "À facturer/rembourser"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking
msgid "Transfer"
msgstr "Transfert"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "True"
msgstr "Vrai"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "or"
msgstr "ou"
#~ msgid "Invoice"
#~ msgstr "Facture"
#~ msgid "Invoice Line"
#~ msgstr "Ligne de facture"
#~ msgid "Invoice ids"
#~ msgstr "Factures"
#~ msgid "Picking ids"
#~ msgstr "Pickings"
#~ msgid "Purchase refund journal"
#~ msgstr "Journal note de crédits d'achat"
#, fuzzy
#~ msgid "Sale refund journal"
#~ msgstr "Journal note de crédits d'achat"
#, fuzzy
#~ msgid "Show Refund Purchase Journal"
#~ msgstr "Journal d'achat"
#~ msgid "Stock moves"
#~ msgstr "Mouvements de stock"
#~ msgid "Procurement"
#~ msgstr "Approvisionnement"
#~ msgid "Procurement Rule"
#~ msgstr "Règle d'approvisionnement"
#~ msgid "Pushed Flow"
#~ msgstr "Flux poussés"

View file

@ -0,0 +1,302 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_picking_invoicing
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-06-17 11:24+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>\n"
"Language-Team: none\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.17\n"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "All pickings are not related to your company!"
msgstr "Nisu sva skladišna kretanja iz vaše Tvrtke!"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Cancel"
msgstr "Otkaži"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking_type__count_picking_2binvoiced
msgid "Count Picking 2Binvoiced"
msgstr "Broj otpremnica za izdavanje računa"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create"
msgstr "Kreiraj"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__sale
msgid "Create Customer Invoice"
msgstr "Kreiraj izlazni račun"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.action_stock_invoice_onshipping
msgid "Create Draft Invoices"
msgstr "Kreiraj nacrt računa"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Create Invoice"
msgstr "Kreiraj račun"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__purchase
msgid "Create Supplier Invoice"
msgstr "Kreiraj ulazni račun"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create invoice"
msgstr "Kreiraj račun"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__display_name
msgid "Display Name"
msgstr "Naziv za prikaz"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid "Group"
msgstr "Grupiraj"
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid ""
"Group pickings/moves to create invoice(s):\n"
"Picking: One invoice per picking;\n"
"Partner: One invoice for each picking's partner;\n"
"Partner/Product: One invoice per picking's partner and group product into a "
"single invoice line."
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__id
msgid "ID"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__invoice_date
msgid "Invoice Date"
msgstr "Datum računa"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking__invoice_state
msgid "Invoice Status"
msgstr "Status računa"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__invoiced
msgid "Invoiced"
msgstr "Izdani računi"
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_picking__invoice_state
msgid ""
"Invoiced: an invoice already exists\n"
"To Be Invoiced: need to be invoiced\n"
"Not Applicable: no invoice to create"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_return_picking__invoice_state
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_move_picking_form
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Invoicing"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_account_move
msgid "Journal Entry"
msgstr "Zapis dnevnika"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__journal_type
msgid "Journal Type"
msgstr "Tip dnevnika"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping____last_update
msgid "Last Modified on"
msgstr "Zadnje modificirano"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_uid
msgid "Last Updated by"
msgstr "Zadnje ažurirao"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_date
msgid "Last Updated on"
msgstr ""
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "No invoice created!"
msgstr "Račun nije kreiran!"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__none
msgid "No invoicing"
msgstr "Nema računa"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__none
msgid "Not Applicable"
msgstr "Nije primjenjivo"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner
msgid "Partner"
msgstr "Partner"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner_product
msgid "Partner/Product"
msgstr "Partner / Proizvod"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__picking
msgid "Picking"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking_type
msgid "Picking Type"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.2binvoiced_action_picking_dashboard
msgid "Picking to Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__purchase_journal
msgid "Purchase Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_return_picking
msgid "Return Picking"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__sale_journal
msgid "Sale Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to Not Billable"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to as invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to be invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_invoicing_internal_search
msgid "Shipments to Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_purchase_journal
msgid "Show Purchase Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_sale_journal
msgid "Show Sale Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_onshipping
msgid "Stock Invoice Onshipping"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_state_mixin
msgid "Stock Invoice State Mixin"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_move
msgid "Stock Move"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_rule
msgid "Stock Rule"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__2binvoiced
msgid "To Be Invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.stock_picking_type_kanban
msgid "To be Invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__2binvoiced
msgid "To be refunded/invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking
msgid "Transfer"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "True"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "or"
msgstr ""

View file

@ -0,0 +1,309 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_picking_invoicing
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-02-09 23:06+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.6.2\n"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "All pickings are not related to your company!"
msgstr "Tutti i prelievi non sono relativi alla vostra azienda!"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Cancel"
msgstr "Annulla"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking_type__count_picking_2binvoiced
msgid "Count Picking 2Binvoiced"
msgstr "Conteggio prelievi da fatturare"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create"
msgstr "Crea"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__sale
msgid "Create Customer Invoice"
msgstr "Crea fattura cliente"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.action_stock_invoice_onshipping
msgid "Create Draft Invoices"
msgstr "Crea bozza fattura"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Create Invoice"
msgstr "Crea fattura"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__purchase
msgid "Create Supplier Invoice"
msgstr "Crea fattura fornitore"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create invoice"
msgstr "Crea fattura"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_date
msgid "Created on"
msgstr "Creato il"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid "Group"
msgstr "Gruppo"
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid ""
"Group pickings/moves to create invoice(s):\n"
"Picking: One invoice per picking;\n"
"Partner: One invoice for each picking's partner;\n"
"Partner/Product: One invoice per picking's partner and group product into a "
"single invoice line."
msgstr ""
"Prelievi/movimenti di gruppo per creare fatture:\n"
"Prelievo: una fattura per prelievo;\n"
"Partner: una fattura per ogni partner di prelievo;\n"
"Partner/Prodotto: una fattura per ogni partner di prelievo e prodotto di "
"gruppo in un'unica riga di fattura."
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__id
msgid "ID"
msgstr "ID"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__invoice_date
msgid "Invoice Date"
msgstr "Data fattura"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking__invoice_state
msgid "Invoice Status"
msgstr "Stato fattura"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__invoiced
msgid "Invoiced"
msgstr "Fatturato"
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_picking__invoice_state
msgid ""
"Invoiced: an invoice already exists\n"
"To Be Invoiced: need to be invoiced\n"
"Not Applicable: no invoice to create"
msgstr ""
"Fatturato: esiste già una fattura\n"
"Da fatturare: deve essere fatturato\n"
"Non applicabile: nessuna fattura da creare"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_return_picking__invoice_state
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_move_picking_form
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Invoicing"
msgstr "Fatturazione"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_account_move
msgid "Journal Entry"
msgstr "Registrazione contabile"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__journal_type
msgid "Journal Type"
msgstr "Tipo registro"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "No invoice created!"
msgstr "Nessuna fattura creata!"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__none
msgid "No invoicing"
msgstr "Nessuna fatturazione"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__none
msgid "Not Applicable"
msgstr "Non applicabile"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner
msgid "Partner"
msgstr "Partner"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner_product
msgid "Partner/Product"
msgstr "Partner/prodotto"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__picking
msgid "Picking"
msgstr "Prelievo"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking_type
msgid "Picking Type"
msgstr "Tipo prelievo"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.2binvoiced_action_picking_dashboard
msgid "Picking to Invoice"
msgstr "Prelievo su fattura"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__purchase_journal
msgid "Purchase Journal"
msgstr "Registro acquisti"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_return_picking
msgid "Return Picking"
msgstr "Prelievo di reso"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__sale_journal
msgid "Sale Journal"
msgstr "Registro vendite"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to Not Billable"
msgstr "Imposta a non fatturabile"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to as invoiced"
msgstr "Imposta a fatturato"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to be invoiced"
msgstr "imposta a da fatturare"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_invoicing_internal_search
msgid "Shipments to Invoice"
msgstr "Spedizioni da fatturare"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_purchase_journal
msgid "Show Purchase Journal"
msgstr "Visualizza registro acquisti"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_sale_journal
msgid "Show Sale Journal"
msgstr "Visualizza registro vendite"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_onshipping
msgid "Stock Invoice Onshipping"
msgstr "Fattura su spedizione"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_state_mixin
msgid "Stock Invoice State Mixin"
msgstr "Mixin stato fattura magazzino"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_move
msgid "Stock Move"
msgstr "Movimento di magazzino"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_rule
msgid "Stock Rule"
msgstr "Regola di giacenza"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__2binvoiced
msgid "To Be Invoiced"
msgstr "Da fatturare"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.stock_picking_type_kanban
msgid "To be Invoiced"
msgstr "Da fatturare"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__2binvoiced
msgid "To be refunded/invoiced"
msgstr "Da rimborsare/fatturare"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking
msgid "Transfer"
msgstr "Trasferimento"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "True"
msgstr "Vero"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "or"
msgstr "o"

View file

@ -0,0 +1,313 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_picking_invoicing
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-12-19 16:06+0000\n"
"Last-Translator: Rodrigo Sottomaior Macedo "
"<sottomaiormacedotec@sottomaiormacedo.tech>\n"
"Language-Team: none\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.6.2\n"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "All pickings are not related to your company!"
msgstr "Todas as separações não estão relacionadas à sua empresa!"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Cancel"
msgstr "Cancelar"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking_type__count_picking_2binvoiced
msgid "Count Picking 2Binvoiced"
msgstr "Contagem de separações a serem faturadas"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create"
msgstr "Criar"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__sale
msgid "Create Customer Invoice"
msgstr "Criar fatura do cliente"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.action_stock_invoice_onshipping
msgid "Create Draft Invoices"
msgstr "Criar rascunho das faturas"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Create Invoice"
msgstr "Criar Fatura"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__purchase
msgid "Create Supplier Invoice"
msgstr "Criar Fatura de Fornecedor"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create invoice"
msgstr "Criar Fatura"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_uid
msgid "Created by"
msgstr "Criado por"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_date
msgid "Created on"
msgstr "Criado em"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__display_name
msgid "Display Name"
msgstr "Exibir nome"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid "Group"
msgstr "Grupo"
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid ""
"Group pickings/moves to create invoice(s):\n"
"Picking: One invoice per picking;\n"
"Partner: One invoice for each picking's partner;\n"
"Partner/Product: One invoice per picking's partner and group product into a "
"single invoice line."
msgstr ""
"Grupo de separações/Movimentos para criar faturas:\n"
"Separação: Uma fatura por Separação;\n"
"Parceiro: Uma fatura para cada parceiro de Separação;\n"
"Parceiro/Produto: Uma fatura por parceiro da Separação e agrupar o produto "
"em uma única linha da fatura."
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__id
msgid "ID"
msgstr "ID"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__invoice_date
msgid "Invoice Date"
msgstr "Data da Fatura"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking__invoice_state
msgid "Invoice Status"
msgstr "Status (situação) da Fatura"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__invoiced
msgid "Invoiced"
msgstr "Faturado"
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_picking__invoice_state
msgid ""
"Invoiced: an invoice already exists\n"
"To Be Invoiced: need to be invoiced\n"
"Not Applicable: no invoice to create"
msgstr ""
"Faturado: já existe uma fatura\n"
"Para ser faturado: precisa ser faturado\n"
"Não aplicável: nenhuma fatura para criar"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_return_picking__invoice_state
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_move_picking_form
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Invoicing"
msgstr "Faturamento"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_account_move
msgid "Journal Entry"
msgstr "Entrada Diário"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__journal_type
msgid "Journal Type"
msgstr "Tipo de diário"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping____last_update
msgid "Last Modified on"
msgstr "Última modificação em"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_uid
msgid "Last Updated by"
msgstr "Última modificação feita por"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_date
msgid "Last Updated on"
msgstr "Última modificação feita em"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "No invoice created!"
msgstr "Nenhuma fatura criada!"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__none
msgid "No invoicing"
msgstr "Não Faturar"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__none
msgid "Not Applicable"
msgstr "Não se aplica"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner
msgid "Partner"
msgstr "Parceiro"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner_product
msgid "Partner/Product"
msgstr "Parceiro/Produto"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__picking
msgid "Picking"
msgstr "Coleta"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking_type
msgid "Picking Type"
msgstr "Tipo de Coleta"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.2binvoiced_action_picking_dashboard
msgid "Picking to Invoice"
msgstr "Coleta a Faturar"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__purchase_journal
msgid "Purchase Journal"
msgstr "Diário de compras"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_return_picking
msgid "Return Picking"
msgstr "Separação de Devolução"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__sale_journal
msgid "Sale Journal"
msgstr "Diário de vendas"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to Not Billable"
msgstr "Definido como Não Faturável"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to as invoiced"
msgstr "Definir como faturado"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to be invoiced"
msgstr "Marcado para ser faturado"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_invoicing_internal_search
msgid "Shipments to Invoice"
msgstr "Remessas para faturar"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_purchase_journal
msgid "Show Purchase Journal"
msgstr "Mostrar diário de compras"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_sale_journal
msgid "Show Sale Journal"
msgstr "Mostrar diário de vendas"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_onshipping
msgid "Stock Invoice Onshipping"
msgstr "Fatura de Estoque em Transporte"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_state_mixin
msgid "Stock Invoice State Mixin"
msgstr "Fatura de Estoque com Situação Misturado"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_move
msgid "Stock Move"
msgstr "Movimentação de Estoque"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_rule
msgid "Stock Rule"
msgstr "Regra do Estoque"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__2binvoiced
msgid "To Be Invoiced"
msgstr "A ser faturado"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.stock_picking_type_kanban
msgid "To be Invoiced"
msgstr "A ser faturado"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__2binvoiced
msgid "To be refunded/invoiced"
msgstr "A ser reembolsado/faturado"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking
msgid "Transfer"
msgstr "Transferir"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "True"
msgstr "Verdadeiro"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "or"
msgstr "ou"
#~ msgid "Invoice"
#~ msgstr "Fatura"

View file

@ -0,0 +1,330 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_picking_invoicing
#
# Translators:
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015
msgid ""
msgstr ""
"Project-Id-Version: account-invoicing (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-08-25 16:48+0000\n"
"PO-Revision-Date: 2015-08-16 11:38+0000\n"
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-account-"
"invoicing-8-0/language/sl/)\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
"n%100==4 ? 2 : 3);\n"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "All pickings are not related to your company!"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Cancel"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking_type__count_picking_2binvoiced
msgid "Count Picking 2Binvoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__sale
#, fuzzy
msgid "Create Customer Invoice"
msgstr "Nastavljeno za obračun"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.action_stock_invoice_onshipping
msgid "Create Draft Invoices"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
#, fuzzy
msgid "Create Invoice"
msgstr "Nastavljeno za obračun"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__purchase
msgid "Create Supplier Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
#, fuzzy
msgid "Create invoice"
msgstr "Nastavljeno za obračun"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_uid
msgid "Created by"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_date
msgid "Created on"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__display_name
msgid "Display Name"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid "Group"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid ""
"Group pickings/moves to create invoice(s):\n"
"Picking: One invoice per picking;\n"
"Partner: One invoice for each picking's partner;\n"
"Partner/Product: One invoice per picking's partner and group product into a "
"single invoice line."
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__id
msgid "ID"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__invoice_date
msgid "Invoice Date"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking__invoice_state
msgid "Invoice Status"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__invoiced
msgid "Invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_picking__invoice_state
msgid ""
"Invoiced: an invoice already exists\n"
"To Be Invoiced: need to be invoiced\n"
"Not Applicable: no invoice to create"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_return_picking__invoice_state
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_move_picking_form
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Invoicing"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__journal_type
msgid "Journal Type"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping____last_update
msgid "Last Modified on"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_uid
msgid "Last Updated by"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_date
msgid "Last Updated on"
msgstr ""
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "No invoice created!"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__none
msgid "No invoicing"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__none
msgid "Not Applicable"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner
msgid "Partner"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner_product
msgid "Partner/Product"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__picking
#, fuzzy
msgid "Picking"
msgstr "Zbirni seznam"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking_type
#, fuzzy
msgid "Picking Type"
msgstr "Zbirni seznam"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.2binvoiced_action_picking_dashboard
#, fuzzy
msgid "Picking to Invoice"
msgstr "Nastavljeno za obračun"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__purchase_journal
msgid "Purchase Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_return_picking
msgid "Return Picking"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__sale_journal
msgid "Sale Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to Not Billable"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to as invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to be invoiced"
msgstr "Nastavljeno za obračun"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_invoicing_internal_search
#, fuzzy
msgid "Shipments to Invoice"
msgstr "Nastavljeno za obračun"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_purchase_journal
msgid "Show Purchase Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_sale_journal
msgid "Show Sale Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_onshipping
msgid "Stock Invoice Onshipping"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_state_mixin
msgid "Stock Invoice State Mixin"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_move
msgid "Stock Move"
msgstr "Premik zaloge"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_rule
msgid "Stock Rule"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__2binvoiced
#, fuzzy
msgid "To Be Invoiced"
msgstr "Nastavljeno za obračun"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.stock_picking_type_kanban
#, fuzzy
msgid "To be Invoiced"
msgstr "Nastavljeno za obračun"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__2binvoiced
msgid "To be refunded/invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking
msgid "Transfer"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "True"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "or"
msgstr ""
#~ msgid ""
#~ "Can't update invoice control for picking %s: It's 'to be invoiced' yet"
#~ msgstr ""
#~ "Nadzora obračuna za zbirnik %s ni mogoče posodobiti: ni še zaračunan"
#~ msgid "Picking %s has linked invoice %s"
#~ msgstr "Zbirnik %s je povezan z računom %s"
#, fuzzy
#~ msgid "Picking ids"
#~ msgstr "Zbirni seznam"
#, fuzzy
#~ msgid "Stock moves"
#~ msgstr "Premik zaloge"

View file

@ -0,0 +1,297 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_picking_invoicing
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "All pickings are not related to your company!"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Cancel"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking_type__count_picking_2binvoiced
msgid "Count Picking 2Binvoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__sale
msgid "Create Customer Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.action_stock_invoice_onshipping
msgid "Create Draft Invoices"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Create Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__purchase
msgid "Create Supplier Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_uid
msgid "Created by"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_date
msgid "Created on"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__display_name
msgid "Display Name"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid "Group"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid ""
"Group pickings/moves to create invoice(s):\n"
"Picking: One invoice per picking;\n"
"Partner: One invoice for each picking's partner;\n"
"Partner/Product: One invoice per picking's partner and group product into a single invoice line."
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__id
msgid "ID"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__invoice_date
msgid "Invoice Date"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking__invoice_state
msgid "Invoice Status"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__invoiced
msgid "Invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_picking__invoice_state
msgid ""
"Invoiced: an invoice already exists\n"
"To Be Invoiced: need to be invoiced\n"
"Not Applicable: no invoice to create"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_return_picking__invoice_state
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_move_picking_form
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Invoicing"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__journal_type
msgid "Journal Type"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping____last_update
msgid "Last Modified on"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_uid
msgid "Last Updated by"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_date
msgid "Last Updated on"
msgstr ""
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "No invoice created!"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__none
msgid "No invoicing"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__none
msgid "Not Applicable"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner
msgid "Partner"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner_product
msgid "Partner/Product"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__picking
msgid "Picking"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking_type
msgid "Picking Type"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.2binvoiced_action_picking_dashboard
msgid "Picking to Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__purchase_journal
msgid "Purchase Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_return_picking
msgid "Return Picking"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__sale_journal
msgid "Sale Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to Not Billable"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to as invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to be invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_invoicing_internal_search
msgid "Shipments to Invoice"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_purchase_journal
msgid "Show Purchase Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_sale_journal
msgid "Show Sale Journal"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_onshipping
msgid "Stock Invoice Onshipping"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_state_mixin
msgid "Stock Invoice State Mixin"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_move
msgid "Stock Move"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_rule
msgid "Stock Rule"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__2binvoiced
msgid "To Be Invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.stock_picking_type_kanban
msgid "To be Invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__2binvoiced
msgid "To be refunded/invoiced"
msgstr ""
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking
msgid "Transfer"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "True"
msgstr ""
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "or"
msgstr ""

View file

@ -0,0 +1,307 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * stock_picking_invoicing
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-02-17 23:06+0000\n"
"Last-Translator: İsmail Çağan Yılmaz <ismail.cagan.yilmaz@gmail.com>\n"
"Language-Team: none\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.2\n"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "All pickings are not related to your company!"
msgstr "Tüm sevkler mevcut şirkete ait değildir!"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Cancel"
msgstr "İptal"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking_type__count_picking_2binvoiced
msgid "Count Picking 2Binvoiced"
msgstr "Faturalanacak Sevk Sayısı"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create"
msgstr "Oluştur"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__sale
msgid "Create Customer Invoice"
msgstr "Müşteri Faturası Oluştur"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.action_stock_invoice_onshipping
msgid "Create Draft Invoices"
msgstr "Taslak Faturalar Oluştur"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Create Invoice"
msgstr "Fatura Oluştur"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__journal_type__purchase
msgid "Create Supplier Invoice"
msgstr "Tedarikçi Faturası Oluştur"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "Create invoice"
msgstr "Fatura oluştur"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_uid
msgid "Created by"
msgstr "Oluşturan"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__create_date
msgid "Created on"
msgstr "Oluşturuldu"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__display_name
msgid "Display Name"
msgstr "Görünüm Adı"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid "Group"
msgstr "Grup"
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_onshipping__group
msgid ""
"Group pickings/moves to create invoice(s):\n"
"Picking: One invoice per picking;\n"
"Partner: One invoice for each picking's partner;\n"
"Partner/Product: One invoice per picking's partner and group product into a single invoice line."
msgstr ""
"Fatura oluştururken sevkleri/hareketleri grupla:\n"
"Sevk: Her sevk için bir fatura,\n"
"İş Ortağı: Her müşteri için bir fatura,\n"
"İş Ortağı/Ürün: Ürünleri tek satıra gruplayarak her müşteri için bir fatura."
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__id
msgid "ID"
msgstr "ID"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__invoice_date
msgid "Invoice Date"
msgstr "Fatura Tarihi"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_picking__invoice_state
msgid "Invoice Status"
msgstr "Fatura Durumu"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__invoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__invoiced
msgid "Invoiced"
msgstr "Faturalandı"
#. module: stock_picking_invoicing
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_invoice_state_mixin__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_move__invoice_state
#: model:ir.model.fields,help:stock_picking_invoicing.field_stock_picking__invoice_state
msgid ""
"Invoiced: an invoice already exists\n"
"To Be Invoiced: need to be invoiced\n"
"Not Applicable: no invoice to create"
msgstr ""
"Faturalandı: hali hazırda bir fatura mevcut\n"
"Faturalanacak: fatura oluşturma bekleniyor\n"
"Uygun Değil: oluşturacak fatura yok"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_return_picking__invoice_state
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_move_picking_form
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Invoicing"
msgstr "Faturalama"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_account_move
msgid "Journal Entry"
msgstr "Yevmiye Kaydı"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__journal_type
msgid "Journal Type"
msgstr "Yevmiye Tipi"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping____last_update
msgid "Last Modified on"
msgstr "Son Değiştirilme"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_uid
msgid "Last Updated by"
msgstr "En Son Güncelleyen"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__write_date
msgid "Last Updated on"
msgstr "En Son Güncelleme"
#. module: stock_picking_invoicing
#. odoo-python
#: code:addons/stock_picking_invoicing/wizards/stock_invoice_onshipping.py:0
#, python-format
msgid "No invoice created!"
msgstr "Herhangi bir fatura oluşmadı!"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__none
msgid "No invoicing"
msgstr "Faturalama yok"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__none
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__none
msgid "Not Applicable"
msgstr "Uygun Değil"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner
msgid "Partner"
msgstr "İş Ortağı"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__partner_product
msgid "Partner/Product"
msgstr "İş Ortağı/Ürün"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_onshipping__group__picking
msgid "Picking"
msgstr "Sevk"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking_type
msgid "Picking Type"
msgstr "Toplama Türü"
#. module: stock_picking_invoicing
#: model:ir.actions.act_window,name:stock_picking_invoicing.2binvoiced_action_picking_dashboard
msgid "Picking to Invoice"
msgstr "Faturalanacak Sevk"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__purchase_journal
msgid "Purchase Journal"
msgstr "Satınalma Yevmiyesi"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_return_picking
msgid "Return Picking"
msgstr "İade Sevki"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__sale_journal
msgid "Sale Journal"
msgstr "Satış Yevmiyesi"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to Not Billable"
msgstr "Faturalanmayacak Olarak Ayarla"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to as invoiced"
msgstr "Faturalanmış olarak ayarla"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "Set to be invoiced"
msgstr "Faturalanacak olarak ayarla"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_invoicing_internal_search
msgid "Shipments to Invoice"
msgstr "Faturalanacak Sevkiyatlar"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_purchase_journal
msgid "Show Purchase Journal"
msgstr "Satınalma Yevmiyesini Göster"
#. module: stock_picking_invoicing
#: model:ir.model.fields,field_description:stock_picking_invoicing.field_stock_invoice_onshipping__show_sale_journal
msgid "Show Sale Journal"
msgstr "Satış Yevmiyesini Göster"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_onshipping
msgid "Stock Invoice Onshipping"
msgstr "Stok Fatura Sevkiyatta"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_invoice_state_mixin
msgid "Stock Invoice State Mixin"
msgstr "Stok Fatura Durumu Karışım"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_move
msgid "Stock Move"
msgstr "Stok Hareketi"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_rule
msgid "Stock Rule"
msgstr "Stok Kuralı"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_invoice_state_mixin__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_move__invoice_state__2binvoiced
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_picking__invoice_state__2binvoiced
msgid "To Be Invoiced"
msgstr "Faturalanacak"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.stock_picking_type_kanban
msgid "To be Invoiced"
msgstr "Faturalanacak"
#. module: stock_picking_invoicing
#: model:ir.model.fields.selection,name:stock_picking_invoicing.selection__stock_return_picking__invoice_state__2binvoiced
msgid "To be refunded/invoiced"
msgstr "İade edilecek/faturalanacak"
#. module: stock_picking_invoicing
#: model:ir.model,name:stock_picking_invoicing.model_stock_picking
msgid "Transfer"
msgstr "Transfer"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_picking_form
msgid "True"
msgstr "Doğru"
#. module: stock_picking_invoicing
#: model_terms:ir.ui.view,arch_db:stock_picking_invoicing.view_stock_invoice_onshipping
msgid "or"
msgstr "veya"

View file

@ -0,0 +1,6 @@
from . import stock_invoice_state_mixin
from . import account_move
from . import stock_move
from . import stock_picking
from . import stock_picking_type
from . import stock_rule

View file

@ -0,0 +1,57 @@
# Copyright (C) 2019-Today: Odoo Community Association (OCA)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models
class AccountMove(models.Model):
_inherit = "account.move"
def button_cancel(self):
"""
Inherit to update related picking as '2binvoiced' when the invoice is
cancelled (only for invoices, not refunds)
:return: bool
"""
result = super().button_cancel()
pickings = self.filtered(
lambda i: i.picking_ids and i.move_type in ["out_invoice", "in_invoice"]
).mapped("picking_ids")
self.mapped("invoice_line_ids.move_line_ids")._set_as_2binvoiced()
pickings._set_as_2binvoiced()
return result
def button_draft(self):
result = super().button_draft()
pickings = self.filtered(
lambda i: i.picking_ids and i.move_type in ["out_invoice", "in_invoice"]
).mapped("picking_ids")
self.mapped("invoice_line_ids.move_line_ids")._set_as_invoiced()
pickings._set_as_invoiced()
return result
def unlink(self):
"""
Inherit the unlink to update related picking as "2binvoiced"
(only for invoices, not refunds)
:return:
"""
pickings = self.filtered(
lambda i: i.picking_ids and i.move_type in ["out_invoice", "in_invoice"]
).mapped("picking_ids")
self.mapped("invoice_line_ids.move_line_ids")._set_as_2binvoiced()
pickings._set_as_2binvoiced()
return super().unlink()
def _reverse_moves(self, default_values_list=None, cancel=False):
reverse_moves = super()._reverse_moves(
default_values_list=default_values_list, cancel=cancel
)
for move, reverse_move in zip(self, reverse_moves):
for line in move.invoice_line_ids:
reverse_line = reverse_move.invoice_line_ids.filtered(
lambda l: l.product_id == line.product_id
)
reverse_line.move_line_ids = line.move_line_ids.ids
return reverse_moves

View file

@ -0,0 +1,59 @@
# Copyright (C) 2019-Today: Odoo Community Association (OCA)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class StockInvoiceStateMixin(models.AbstractModel):
"""
Abstract model used to define invoice state with selection choices
"""
_name = "stock.invoice.state.mixin"
_description = "Stock Invoice State Mixin"
invoice_state = fields.Selection(
selection=[
("invoiced", "Invoiced"),
("2binvoiced", "To Be Invoiced"),
("none", "Not Applicable"),
],
string="Invoice Status",
default="none",
help="Invoiced: an invoice already exists\n"
"To Be Invoiced: need to be invoiced\n"
"Not Applicable: no invoice to create",
copy=False,
)
def _set_as_invoiced(self):
"""
Update invoice_state on current recordset to 'invoiced'
:return: self recordset (where the updated has been executed)
"""
return self._update_invoice_state("invoiced")
def _set_as_2binvoiced(self):
"""
Update invoice_state on current recordset to '2binvoiced'
:return: self recordset (where the updated has been executed)
"""
return self._update_invoice_state("2binvoiced")
def _set_as_not_billable(self):
"""
Update invoice_state on current recordset to 'invoiced'
:return: self recordset (where the updated has been executed)
"""
return self._update_invoice_state("none")
def _update_invoice_state(self, invoice_state):
"""
Execute the write
:param invoice_state: str
:return: self recordset (where the updated has been executed)
"""
records = self.filtered(lambda r: r.invoice_state != invoice_state)
if records:
records.write({"invoice_state": invoice_state})
return records

View file

@ -0,0 +1,144 @@
# Copyright (C) 2019-Today: Odoo Community Association (OCA)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
from odoo.tools.float_utils import float_round
class StockMove(models.Model):
_name = "stock.move"
_inherit = [
_name,
"stock.invoice.state.mixin",
]
def _get_price_unit_invoice(self, inv_type, partner, qty=1):
"""
Gets price unit for invoice
:param inv_type: str
:param partner: res.partner
:param qty: float
:return: float
"""
if inv_type in ("in_invoice", "in_refund"):
price_unit = min(self.mapped("price_unit"))
else:
price_unit = max(self.mapped("price_unit"))
if price_unit > 0.0:
# Value informed by user should has preferency
return price_unit
product = self.mapped("product_id")
product.ensure_one()
sum(self.mapped("product_uom_qty"))
product_uom = self.mapped("product_uom")
company = fields.first(self).picking_id.company_id
# Only in the cases the stock.move has linked to Sale or
# Purchase Order it's possible use different Currencys
# TODO: Should this module make possible by include field
# currency_id in Stock.picking?
currency = company.currency_id
pickings = self.mapped("picking_id")
date_done = min(pickings.mapped("date_done"))
if inv_type in ("in_invoice", "in_refund"):
seller = product._select_seller(
partner_id=partner, quantity=qty, date=date_done
)
if not seller:
po_line_uom = self.mapped("product_uom") or product.uom_po_id
price_unit = self.env["account.tax"]._fix_tax_included_price_company(
product.uom_id._compute_price(product.standard_price, po_line_uom),
product.supplier_taxes_id,
# TODO: Should inform taxes_ids in stock.move?
product.supplier_taxes_id,
fields.first(self).company_id,
)
price_unit = product.currency_id._convert(
price_unit, currency, company, date_done, False
)
result = float_round(
price_unit,
precision_digits=max(
currency.decimal_places,
self.env["decimal.precision"].precision_get("Product Price"),
),
)
else:
price_unit = self.env["account.tax"]._fix_tax_included_price_company(
seller.price,
product.supplier_taxes_id,
# TODO: Should inform taxes_ids in stock.move?
product.supplier_taxes_id,
fields.first(self).company_id,
)
price_unit = seller.currency_id._convert(
price_unit, currency, company, date_done, False
)
price_unit = float_round(
price_unit,
precision_digits=max(
currency.decimal_places,
self.env["decimal.precision"].precision_get("Product Price"),
),
)
result = seller.product_uom._compute_price(price_unit, product_uom)
else:
# If partner given, search price in its sale pricelist
fiscal_position = (
self.env["account.fiscal.position"]
.with_company(company)
._get_fiscal_position(partner)
)
if partner and partner.property_product_pricelist:
price_unit = None
pricelist_rule_id = (
partner.property_product_pricelist._get_product_rule(
product,
qty or 1.0,
uom=product_uom,
date=date_done,
)
)
pricelist_rule = self.env["product.pricelist.item"].browse(
pricelist_rule_id
)
price_unit = pricelist_rule._compute_price(
product,
qty,
product_uom,
date_done,
currency=currency,
)
else:
price_unit = product.lst_price
result = product._get_tax_included_unit_price(
company,
currency,
date_done,
"sale",
fiscal_position=fiscal_position,
product_price_unit=price_unit,
product_currency=currency,
)
return result
def _prepare_extra_move_vals(self, qty):
"""Copy invoice state for a new extra stock move"""
values = super()._prepare_extra_move_vals(qty)
values["invoice_state"] = self.invoice_state
return values
def _prepare_move_split_vals(self, uom_qty):
"""Copy invoice state for a new splitted stock move"""
values = super()._prepare_move_split_vals(uom_qty)
values["invoice_state"] = self.invoice_state
return values

View file

@ -0,0 +1,50 @@
# Copyright (C) 2019-Today: Odoo Community Association (OCA)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, models
class StockPicking(models.Model):
_name = "stock.picking"
_inherit = [
_name,
"stock.invoice.state.mixin",
]
def set_to_be_invoiced(self):
"""
Button to set Invoice State to To Be Invoice.
"""
self._set_as_2binvoiced()
self.mapped("move_ids")._set_as_2binvoiced()
def set_as_invoiced(self):
"""
Button to set Invoice State to Invoiced.
"""
self._set_as_invoiced()
self.mapped("move_ids")._set_as_invoiced()
def set_as_not_billable(self):
"""
Button to set Invoice State to Not Billable.
"""
self._set_as_not_billable()
self.mapped("move_ids")._set_as_not_billable()
def _get_partner_to_invoice(self):
self.ensure_one()
partner = self.partner_id
return partner.address_get(["invoice"]).get("invoice")
def action_assign(self):
"""If any stock move is to be invoiced, picking status is updated"""
if any(m.invoice_state == "2binvoiced" for m in self.mapped("move_ids")):
self.write({"invoice_state": "2binvoiced"})
return super().action_assign()
@api.onchange("invoice_state")
def _onchange_invoice_state(self):
for record in self:
record._update_invoice_state(record.invoice_state)
record.mapped("move_ids")._update_invoice_state(record.invoice_state)

View file

@ -0,0 +1,35 @@
# Copyright (C) 2019-Today: Odoo Community Association
# @ 2019-Today: Akretion - www.akretion.com.br -
# Magno Costa <magno.costa@akretion.com.br>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class PickingType(models.Model):
_inherit = "stock.picking.type"
count_picking_2binvoiced = fields.Integer(compute="_compute_picking_2binvoiced")
def _compute_picking_2binvoiced(self):
domains = {
"count_picking_2binvoiced": [("invoice_state", "=", "2binvoiced")],
}
for field in domains:
data = self.env["stock.picking"].read_group(
domains[field]
+ [
("state", "!=", "cancel"),
("invoice_state", "=", "2binvoiced"),
("picking_type_id", "in", self.ids),
],
["picking_type_id"],
["picking_type_id"],
)
count = {
x["picking_type_id"][0]: x["picking_type_id_count"]
for x in data
if x["picking_type_id"]
}
for record in self:
record[field] = count.get(record.id, 0)

View file

@ -0,0 +1,14 @@
# Copyright (C) 2024-Today - Akretion (<http://www.akretion.com>).
# @author Magno Costa <magno.costa@akretion.com.br>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
class StockRule(models.Model):
_inherit = "stock.rule"
def _get_custom_move_fields(self):
fields = super()._get_custom_move_fields()
fields += ["invoice_state"]
return fields

View file

@ -0,0 +1,9 @@
* Lorenzo Battistini <lorenzo.battistini@agilebg.com>
* Leonardo Pistone <leonardo.pistone@agilebg.com>
* Daniel Sadamo <daniel.sadamo@kmee.com.br>
* Alex Comba <alex.comba@agilebg.com>
* Florent THOMAS <florent.thomas@mind-and-go.com>
* François Honoré <francois.honore@acsone.eu>
* Magno Costa <magno.costa@akretion.com.br>
* Luis Felipe Mileo <mileo@kmee.com.br>
* Radovan Skolnik <radovan@skolnik.info>

View file

@ -0,0 +1,2 @@
This module allows to create invoices directly from picking, without having to
use sale or purchase orders.

View file

@ -0,0 +1,32 @@
16.0.1.0.0 (2023-05-25)
~~~~~~~~~~~~~~~~~~~~~~~
* Migration to version 16.0 .
* Included dependency from module base_view_inheritance_extension
from repository https://https://github.com/OCA/server-tools .
15.0.1.0.0 (2023-04-28)
~~~~~~~~~~~~~~~~~~~~~~~
* Migration to version 15.0 .
14.0.1.0.0 (2021-11-12)
~~~~~~~~~~~~~~~~~~~~~~~
* Migration to version 14.0 .
13.0.3.1.0 (2021-10-05)
~~~~~~~~~~~~~~~~~~~~~~~
* Migration to version 13.0 .
12.0.2.0.0 (2019-12-19)
~~~~~~~~~~~~~~~~~~~~~~~
* Included dependency from module stock_picking_invoice_link
from repository https://github.com/OCA/stock-logistics-workflow.git.
12.0.1.0.0 (2019-07-16)
~~~~~~~~~~~~~~~~~~~~~~~
* Migration to version 12.0 .

View file

@ -0,0 +1,2 @@
This module depends on *stock_picking_invoice_link* module that is hosted on
https://github.com/OCA/stock-logistics-workflow.git.

View file

@ -0,0 +1,10 @@
To use this module, you need to:
#. Go to your picking;
#. If the invoice status is 'To be invoiced', a button will ask you to create an invoice;
#. Into the Tree view, you can select many pickings and create a grouped invoice;
#. If at least an invoice is created for a picking, a new "Invoicing" tab appears.
If an invoice (not refund) is cancelled or deleted, invoice status of related picking is automatically
updated to "To be invoiced".

View file

@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_stock_invoice_onshipping,access_stock_invoice_onshipping,model_stock_invoice_onshipping,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_stock_invoice_onshipping access_stock_invoice_onshipping model_stock_invoice_onshipping base.group_user 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,520 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
<img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
</a>
<div class="section" id="stock-picking-invoicing">
<h1>Stock Picking Invoicing</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:b1a69161b939de69e9014e13ae28d1d768d4ea4a782e5340b0fc2e253ec43b55
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<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/account-invoicing/tree/16.0/stock_picking_invoicing"><img alt="OCA/account-invoicing" src="https://img.shields.io/badge/github-OCA%2Faccount--invoicing-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-invoicing-16-0/account-invoicing-16-0-stock_picking_invoicing"><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/account-invoicing&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows to create invoices directly from picking, without having to
use sale or purchase orders.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#installation" id="toc-entry-1">Installation</a></li>
<li><a class="reference internal" href="#usage" id="toc-entry-2">Usage</a></li>
<li><a class="reference internal" href="#changelog" id="toc-entry-3">Changelog</a><ul>
<li><a class="reference internal" href="#section-1" id="toc-entry-4">16.0.1.0.0 (2023-05-25)</a></li>
<li><a class="reference internal" href="#section-2" id="toc-entry-5">15.0.1.0.0 (2023-04-28)</a></li>
<li><a class="reference internal" href="#section-3" id="toc-entry-6">14.0.1.0.0 (2021-11-12)</a></li>
<li><a class="reference internal" href="#section-4" id="toc-entry-7">13.0.3.1.0 (2021-10-05)</a></li>
<li><a class="reference internal" href="#section-5" id="toc-entry-8">12.0.2.0.0 (2019-12-19)</a></li>
<li><a class="reference internal" href="#section-6" id="toc-entry-9">12.0.1.0.0 (2019-07-16)</a></li>
</ul>
</li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-10">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-11">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-12">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-13">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-14">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="installation">
<h2><a class="toc-backref" href="#toc-entry-1">Installation</a></h2>
<p>This module depends on <em>stock_picking_invoice_link</em> module that is hosted on
<a class="reference external" href="https://github.com/OCA/stock-logistics-workflow.git">https://github.com/OCA/stock-logistics-workflow.git</a>.</p>
</div>
<div class="section" id="usage">
<h2><a class="toc-backref" href="#toc-entry-2">Usage</a></h2>
<p>To use this module, you need to:</p>
<ol class="arabic simple">
<li>Go to your picking;</li>
<li>If the invoice status is To be invoiced, a button will ask you to create an invoice;</li>
<li>Into the Tree view, you can select many pickings and create a grouped invoice;</li>
<li>If at least an invoice is created for a picking, a new “Invoicing” tab appears.</li>
</ol>
<p>If an invoice (not refund) is cancelled or deleted, invoice status of related picking is automatically
updated to “To be invoiced”.</p>
</div>
<div class="section" id="changelog">
<h2><a class="toc-backref" href="#toc-entry-3">Changelog</a></h2>
<div class="section" id="section-1">
<h3><a class="toc-backref" href="#toc-entry-4">16.0.1.0.0 (2023-05-25)</a></h3>
<blockquote>
<ul class="simple">
<li>Migration to version 16.0 .</li>
<li>Included dependency from module base_view_inheritance_extension
from repository <a class="reference external" href="https://https://github.com/OCA/server-tools">https://https://github.com/OCA/server-tools</a> .</li>
</ul>
</blockquote>
</div>
<div class="section" id="section-2">
<h3><a class="toc-backref" href="#toc-entry-5">15.0.1.0.0 (2023-04-28)</a></h3>
<blockquote>
<ul class="simple">
<li>Migration to version 15.0 .</li>
</ul>
</blockquote>
</div>
<div class="section" id="section-3">
<h3><a class="toc-backref" href="#toc-entry-6">14.0.1.0.0 (2021-11-12)</a></h3>
<blockquote>
<ul class="simple">
<li>Migration to version 14.0 .</li>
</ul>
</blockquote>
</div>
<div class="section" id="section-4">
<h3><a class="toc-backref" href="#toc-entry-7">13.0.3.1.0 (2021-10-05)</a></h3>
<blockquote>
<ul class="simple">
<li>Migration to version 13.0 .</li>
</ul>
</blockquote>
</div>
<div class="section" id="section-5">
<h3><a class="toc-backref" href="#toc-entry-8">12.0.2.0.0 (2019-12-19)</a></h3>
<blockquote>
<ul class="simple">
<li>Included dependency from module stock_picking_invoice_link
from repository <a class="reference external" href="https://github.com/OCA/stock-logistics-workflow.git">https://github.com/OCA/stock-logistics-workflow.git</a>.</li>
</ul>
</blockquote>
</div>
<div class="section" id="section-6">
<h3><a class="toc-backref" href="#toc-entry-9">12.0.1.0.0 (2019-07-16)</a></h3>
<blockquote>
<ul class="simple">
<li>Migration to version 12.0 .</li>
</ul>
</blockquote>
</div>
</div>
<div class="section" id="bug-tracker">
<h2><a class="toc-backref" href="#toc-entry-10">Bug Tracker</a></h2>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-invoicing/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/account-invoicing/issues/new?body=module:%20stock_picking_invoicing%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-11">Credits</a></h2>
<div class="section" id="authors">
<h3><a class="toc-backref" href="#toc-entry-12">Authors</a></h3>
<ul class="simple">
<li>Agile Business Group</li>
</ul>
</div>
<div class="section" id="contributors">
<h3><a class="toc-backref" href="#toc-entry-13">Contributors</a></h3>
<ul class="simple">
<li>Lorenzo Battistini &lt;<a class="reference external" href="mailto:lorenzo.battistini&#64;agilebg.com">lorenzo.battistini&#64;agilebg.com</a>&gt;</li>
<li>Leonardo Pistone &lt;<a class="reference external" href="mailto:leonardo.pistone&#64;agilebg.com">leonardo.pistone&#64;agilebg.com</a>&gt;</li>
<li>Daniel Sadamo &lt;<a class="reference external" href="mailto:daniel.sadamo&#64;kmee.com.br">daniel.sadamo&#64;kmee.com.br</a>&gt;</li>
<li>Alex Comba &lt;<a class="reference external" href="mailto:alex.comba&#64;agilebg.com">alex.comba&#64;agilebg.com</a>&gt;</li>
<li>Florent THOMAS &lt;<a class="reference external" href="mailto:florent.thomas&#64;mind-and-go.com">florent.thomas&#64;mind-and-go.com</a>&gt;</li>
<li>François Honoré &lt;<a class="reference external" href="mailto:francois.honore&#64;acsone.eu">francois.honore&#64;acsone.eu</a>&gt;</li>
<li>Magno Costa &lt;<a class="reference external" href="mailto:magno.costa&#64;akretion.com.br">magno.costa&#64;akretion.com.br</a>&gt;</li>
<li>Luis Felipe Mileo &lt;<a class="reference external" href="mailto:mileo&#64;kmee.com.br">mileo&#64;kmee.com.br</a>&gt;</li>
<li>Radovan Skolnik &lt;<a class="reference external" href="mailto:radovan&#64;skolnik.info">radovan&#64;skolnik.info</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h3><a class="toc-backref" href="#toc-entry-14">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/account-invoicing/tree/16.0/stock_picking_invoicing">OCA/account-invoicing</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,5 @@
# Copyright (C) 2019-Today: Odoo Community Association (OCA)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import common
from . import test_picking_invoicing

View file

@ -0,0 +1,73 @@
# Copyright (C) 2023-Today - Akretion (<http://www.akretion.com>).
# @author Magno Costa <magno.costa@akretion.com.br>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.tests.common import Form, TransactionCase
class TestPickingInvoicingCommon(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
def _run_picking_onchanges(self, record):
record._onchange_invoice_state()
def _run_line_onchanges(self, record):
record._onchange_product_id()
def picking_move_state(self, picking):
self._run_picking_onchanges(picking)
picking.action_confirm()
# Check product availability
picking.action_assign()
# Force product availability
for move in picking.move_ids_without_package:
self._run_line_onchanges(move)
move.quantity_done = move.product_uom_qty
picking.button_validate()
def create_invoice_wizard(self, pickings):
wizard_obj = self.env["stock.invoice.onshipping"].with_context(
active_ids=pickings.ids,
active_model=pickings._name,
)
fields_list = wizard_obj.fields_get().keys()
wizard_values = wizard_obj.default_get(fields_list)
wizard_values.update({"group": "partner_product"})
wizard = wizard_obj.create(wizard_values)
wizard.onchange_group()
wizard.action_generate()
domain = [("picking_ids", "in", pickings.ids)]
invoice = self.env["account.move"].search(domain)
return invoice
def return_picking_wizard(self, picking):
# Return Picking
return_wizard_form = Form(
self.env["stock.return.picking"].with_context(
**dict(active_id=picking.id, active_model="stock.picking")
)
)
return_wizard_form.invoice_state = "2binvoiced"
self.return_wizard = return_wizard_form.save()
result_wizard = self.return_wizard.create_returns()
self.assertTrue(result_wizard, "Create returns wizard fail.")
picking_devolution = self.env["stock.picking"].browse(
result_wizard.get("res_id")
)
return picking_devolution
def create_backorder_wizard(self, picking):
res_dict_for_back_order = picking.button_validate()
backorder_wizard = Form(
self.env[res_dict_for_back_order["res_model"]].with_context(
**res_dict_for_back_order["context"]
)
).save()
backorder_wizard.process()
backorder = self.env["stock.picking"].search(
[("backorder_id", "=", picking.id)]
)
return backorder

View file

@ -0,0 +1,757 @@
# Copyright (C) 2019-Today: Odoo Community Association (OCA)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import exceptions
from .common import TestPickingInvoicingCommon
class TestPickingInvoicing(TestPickingInvoicingCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.picking_model = cls.env["stock.picking"]
cls.move_model = cls.env["stock.move"]
cls.invoice_model = cls.env["account.move"]
cls.partner_model = cls.env["res.partner"]
cls.partner = cls.env.ref("base.res_partner_2")
cls.partner2 = cls.env.ref("base.res_partner_address_4")
cls.partner3 = cls.env.ref("base.res_partner_18")
cls.supplier = cls.env.ref("base.res_partner_12")
cls.pick_type_in = cls.env.ref("stock.picking_type_in")
cls.pick_type_out = cls.env.ref("stock.picking_type_out")
cls.stock_location = cls.env.ref("stock.stock_location_stock")
cls.customers_location = cls.env.ref("stock.stock_location_customers")
cls.suppliers_location = cls.env.ref("stock.stock_location_suppliers")
cls.journal = cls.env["account.journal"].create(
{
"name": "A super journal name",
"code": "ABC",
"type": "sale",
"refund_sequence": True,
}
)
cls.product_model = cls.env["product.product"]
cls.fiscal_position_model = cls.env["account.fiscal.position"]
cls.fiscal_position_tax_model = cls.env["account.fiscal.position.tax"]
cls.fiscal_position_account_model = cls.env["account.fiscal.position.account"]
cls.tax_model = cls.env["account.tax"]
cls.product_tmpl_model = cls.env["product.template"]
cls.account_receivable = cls.env["account.account"].search(
[
(
"account_type",
"=",
"asset_receivable",
)
],
limit=1,
)
cls.account_revenue = cls.env["account.account"].search(
[("account_type", "=", "expense_direct_cost")], limit=1
)
cls.tax_sale_1 = cls.tax_model.create(
{"name": "Sale tax 20", "type_tax_use": "sale", "amount": "20.00"}
)
cls.tax_sale_2 = cls.tax_model.create(
{"name": "Sale tax 10", "type_tax_use": "sale", "amount": "10.00"}
)
cls.tax_purchase_1 = cls.tax_model.create(
{"name": "Purchase tax 10", "type_tax_use": "purchase", "amount": "10.00"}
)
cls.tax_purchase_2 = cls.tax_model.create(
{"name": "Purchase tax 20", "type_tax_use": "purchase", "amount": "20.00"}
)
cls.product_test_1 = cls.product_model.create(
{
"name": "Test 1",
"lst_price": "15000",
"taxes_id": [(6, 0, [cls.tax_sale_1.id, cls.tax_sale_2.id])],
"supplier_taxes_id": [
(6, 0, [cls.tax_purchase_1.id, cls.tax_purchase_2.id])
],
"property_account_income_id": cls.account_revenue.id,
"standard_price": "500",
}
)
cls.product_test_2 = cls.product_model.create(
{
"name": "Test 2",
"lst_price": "15000",
"taxes_id": [(6, 0, [cls.tax_sale_1.id, cls.tax_sale_2.id])],
"supplier_taxes_id": [
(6, 0, [cls.tax_purchase_1.id, cls.tax_purchase_2.id])
],
"property_account_income_id": cls.account_revenue.id,
"standard_price": "500",
}
)
# Test PriceList and Sellers Price
product_price_test = cls.env.ref("product.product_product_6")
cls.price_list = cls.env.ref("product.list0")
cls.price_list.item_ids.create(
{
"compute_price": "fixed",
"fixed_price": 1234.0,
"applied_on": "0_product_variant",
"product_id": product_price_test.id,
}
)
# Data has duplicate line with 2 Prices for same Partner,
# just remove one for the test.
seller_to_delete = product_price_test.seller_ids.filtered(
lambda l: l.price == 785.0
and l.partner_id == cls.env.ref("base.res_partner_4")
)
seller_to_delete.unlink()
def test_0_picking_out_invoicing(self):
# setting Agrolait type to default, because it's 'contact' in demo data
nb_invoice_before = self.invoice_model.search_count([])
# Test case to Get Price Unit to Invoice when Partner don't has Pricelist
self.partner.write({"type": "invoice", "property_product_pricelist": False})
picking = self.picking_model.create(
{
"partner_id": self.partner2.id,
"picking_type_id": self.pick_type_out.id,
"location_id": self.stock_location.id,
"location_dest_id": self.customers_location.id,
}
)
move_vals = {
"product_id": self.product_test_1.id,
"picking_id": picking.id,
"location_dest_id": self.customers_location.id,
"location_id": self.stock_location.id,
"name": self.product_test_1.name,
"product_uom_qty": 2,
"product_uom": self.product_test_1.uom_id.id,
}
new_move = self.move_model.create(move_vals)
picking.set_to_be_invoiced()
self.picking_move_state(picking)
self.assertEqual(picking.state, "done")
invoice = self.create_invoice_wizard(picking)
self.assertEqual(picking.invoice_state, "invoiced")
self.assertEqual(invoice.partner_id, self.partner)
self.assertIn(invoice, picking.invoice_ids)
self.assertIn(picking, invoice.picking_ids)
nb_invoice_after = self.invoice_model.search_count([])
self.assertEqual(nb_invoice_before, nb_invoice_after - len(invoice))
assert invoice.invoice_user_id, "Error to map User in Invoice."
assert invoice.invoice_payment_term_id, "Error to map Payment Term in Invoice."
assert invoice.fiscal_position_id, "Error to map Fiscal Position in Invoice."
assert invoice.company_id, "Error to map Company in Invoice."
assert invoice.invoice_line_ids, "Error to create invoice line."
for inv_line in invoice.invoice_line_ids:
assert inv_line.account_id, "Error to map Account in Invoice Line."
assert inv_line.tax_ids, "Error to map Sale Tax in Invoice Line."
assert inv_line.product_uom_id, "Error to map Product UOM in Invoice Line."
assert inv_line.price_unit, "Error in Price Unit"
assert (
inv_line.move_line_ids
), "Error, there no relation between Invoice Line and Stock Move Line."
for mv_line in inv_line.move_line_ids:
self.assertEqual(
mv_line.id,
new_move.id,
"Error to link stock.move with invoice.line.",
)
def test_1_picking_out_invoicing(self):
nb_invoice_before = self.invoice_model.search_count([])
self.partner.write({"type": "invoice"})
picking = self.picking_model.create(
{
"partner_id": self.partner2.id,
"picking_type_id": self.pick_type_out.id,
"location_id": self.stock_location.id,
"location_dest_id": self.customers_location.id,
}
)
move_vals = {
"product_id": self.product_test_1.id,
"picking_id": picking.id,
"location_dest_id": self.customers_location.id,
"location_id": self.stock_location.id,
"name": self.product_test_1.name,
"product_uom_qty": 2,
"product_uom": self.product_test_1.uom_id.id,
}
self.move_model.create(move_vals)
self.picking_move_state(picking)
self.assertEqual(picking.state, "done")
# Test Wizard Error
# self.create_invoice_wizard(picking)
wizard_obj = self.env["stock.invoice.onshipping"].with_context(
active_ids=picking.ids,
active_model=picking._name,
active_id=picking.id,
)
fields_list = wizard_obj.fields_get().keys()
wizard_values = wizard_obj.default_get(fields_list)
wizard = wizard_obj.create(wizard_values)
wizard.onchange_group()
with self.assertRaises(exceptions.UserError) as e:
wizard.with_context(lang="en_US").action_generate()
msg = "No invoice created!"
self.assertIn(msg, e.exception.args[0])
nb_invoice_after = self.invoice_model.search_count([])
self.assertEqual(nb_invoice_before, nb_invoice_after)
def test_2_picking_out_invoicing(self):
nb_invoice_before = self.invoice_model.search_count([])
self.partner.write({"type": "invoice"})
picking = self.picking_model.create(
{
"partner_id": self.partner2.id,
"picking_type_id": self.pick_type_out.id,
"location_id": self.stock_location.id,
"location_dest_id": self.customers_location.id,
}
)
move_vals = {
"product_id": self.product_test_1.id,
"picking_id": picking.id,
"location_dest_id": self.customers_location.id,
"location_id": self.stock_location.id,
"name": self.product_test_1.name,
"product_uom_qty": 2,
"product_uom": self.product_test_1.uom_id.id,
}
new_move = self.move_model.create(move_vals)
picking.set_to_be_invoiced()
# Test Set Not Invoice
picking.set_as_not_billable()
self.assertEqual(picking.invoice_state, "none")
# Test Set Invoiced
picking.set_as_invoiced()
self.assertEqual(picking.invoice_state, "invoiced")
picking.set_to_be_invoiced()
self.picking_move_state(picking)
self.assertEqual(picking.state, "done")
invoice = self.create_invoice_wizard(picking)
self.assertEqual(picking.invoice_state, "invoiced")
self.assertEqual(invoice.partner_id, self.partner)
self.assertIn(invoice, picking.invoice_ids)
self.assertIn(picking, invoice.picking_ids)
nb_invoice_after = self.invoice_model.search_count([])
self.assertEqual(nb_invoice_before, nb_invoice_after - len(invoice))
assert invoice.invoice_line_ids, "Error to create invoice line."
for inv_line in invoice.invoice_line_ids:
for mv_line in inv_line.move_line_ids:
self.assertEqual(
mv_line.id,
new_move.id,
"Error to link stock.move with invoice.line.",
)
self.assertTrue(inv_line.tax_ids, "Error to map Sale Tax in invoice.line.")
def test_3_picking_out_invoicing(self):
"""
Test invoicing picking in to check if get the taxes
from supplier_taxes_id.
"""
nb_invoice_before = self.invoice_model.search_count([])
picking = self.picking_model.create(
{
"partner_id": self.supplier.id,
"picking_type_id": self.pick_type_in.id,
"location_id": self.suppliers_location.id,
"location_dest_id": self.stock_location.id,
}
)
move_vals = {
"product_id": self.product_test_1.id,
"picking_id": picking.id,
"location_dest_id": self.stock_location.id,
"location_id": self.suppliers_location.id,
"name": self.product_test_1.name,
"product_uom_qty": 2,
"product_uom": self.product_test_1.uom_id.id,
}
new_move = self.move_model.create(move_vals)
picking.set_to_be_invoiced()
self.picking_move_state(picking)
self.assertEqual(picking.state, "done")
invoice = self.create_invoice_wizard(picking)
self.assertEqual(picking.invoice_state, "invoiced")
self.assertEqual(invoice.partner_id, self.supplier)
self.assertIn(invoice, picking.invoice_ids)
self.assertIn(picking, invoice.picking_ids)
nb_invoice_after = self.invoice_model.search_count([])
self.assertEqual(nb_invoice_before, nb_invoice_after - len(invoice))
assert invoice.invoice_line_ids, "Error to create invoice line."
for inv_line in invoice.invoice_line_ids:
for mv_line in inv_line.move_line_ids:
self.assertEqual(
mv_line.id,
new_move.id,
"Error to link stock.move with invoice.line.",
)
self.assertTrue(
inv_line.tax_ids,
"Error to map Purchase Tax in invoice.line.",
)
def test_4_picking_out_invoicing_backorder(self):
"""
Test invoicing picking out to check if backorder is create
with same invoice state.
"""
nb_invoice_before = self.invoice_model.search_count([])
self.partner.write({"type": "invoice"})
picking = self.picking_model.create(
{
"partner_id": self.partner2.id,
"picking_type_id": self.pick_type_out.id,
"location_id": self.stock_location.id,
"location_dest_id": self.customers_location.id,
}
)
move_vals = {
"product_id": self.product_test_1.id,
"picking_id": picking.id,
"location_dest_id": self.customers_location.id,
"location_id": self.stock_location.id,
"name": self.product_test_1.name,
"product_uom_qty": 4,
"product_uom": self.product_test_1.uom_id.id,
}
new_move = self.move_model.create(move_vals)
new_move._onchange_product_id()
picking.set_to_be_invoiced()
# Test BackOrder need to open Wizard
# self.picking_move_state(picking)
picking.action_confirm()
# Check product availability
picking.action_assign()
# Force product availability
for move in picking.move_ids_without_package:
move.quantity_done = move.product_uom_qty / 2.0
# Test Price Unit informed by User
move.price_unit = 345.0
backorder = self.create_backorder_wizard(picking)
backorder.action_assign()
self.assertEqual(backorder.invoice_state, "2binvoiced")
self.assertEqual(picking.state, "done")
invoice = self.create_invoice_wizard(picking)
self.assertEqual(picking.invoice_state, "invoiced")
self.assertEqual(invoice.partner_id, self.partner)
self.assertIn(invoice, picking.invoice_ids)
self.assertIn(picking, invoice.picking_ids)
nb_invoice_after = self.invoice_model.search_count([])
self.assertEqual(nb_invoice_before, nb_invoice_after - len(invoice))
assert invoice.invoice_line_ids, "Error to create invoice line."
for inv_line in invoice.invoice_line_ids:
for mv_line in inv_line.move_line_ids:
self.assertEqual(
mv_line.id,
new_move.id,
"Error to link stock.move with invoice.line.",
)
self.assertTrue(inv_line.tax_ids, "Error to map Sale Tax in invoice.line.")
# Test Price Unit informed by user
self.assertEqual(
inv_line.price_unit, 345.0, "Error in Price Unit informed by User."
)
def test_picking_cancel(self):
"""
Ensure that the invoice_state of the picking is correctly
updated when an invoice is cancelled
:return:
"""
nb_invoice_before = self.invoice_model.search_count([])
self.partner.write({"type": "invoice"})
picking = self.picking_model.create(
{
"partner_id": self.partner2.id,
"picking_type_id": self.pick_type_out.id,
"location_id": self.stock_location.id,
"location_dest_id": self.customers_location.id,
}
)
move_vals = {
"product_id": self.product_test_1.id,
"picking_id": picking.id,
"location_dest_id": self.customers_location.id,
"location_id": self.stock_location.id,
"name": self.product_test_1.name,
"product_uom_qty": 2,
"product_uom": self.product_test_1.uom_id.id,
}
self.move_model.create(move_vals)
picking.set_to_be_invoiced()
self.picking_move_state(picking)
self.assertEqual(picking.state, "done")
invoice = self.create_invoice_wizard(picking)
self.assertEqual(picking.invoice_state, "invoiced")
self.assertEqual(invoice.partner_id, self.partner)
invoice.button_cancel()
self.assertEqual(picking.invoice_state, "2binvoiced")
invoice.button_draft()
self.assertEqual(picking.invoice_state, "invoiced")
self.assertIn(invoice, picking.invoice_ids)
self.assertIn(picking, invoice.picking_ids)
nb_invoice_after = self.invoice_model.search_count([])
self.assertEqual(nb_invoice_before, nb_invoice_after - len(invoice))
def test_picking_invoice_refund(self):
"""
Ensure that a refund keep the link to the picking
:return:
"""
nb_invoice_before = self.invoice_model.search_count([])
self.partner.write({"type": "invoice"})
picking = self.picking_model.create(
{
"partner_id": self.partner2.id,
"picking_type_id": self.pick_type_out.id,
"location_id": self.stock_location.id,
"location_dest_id": self.customers_location.id,
}
)
move_vals = {
"product_id": self.product_test_1.id,
"picking_id": picking.id,
"location_dest_id": self.customers_location.id,
"location_id": self.stock_location.id,
"name": self.product_test_1.name,
"product_uom_qty": 2,
"product_uom": self.product_test_1.uom_id.id,
}
self.move_model.create(move_vals)
picking.set_to_be_invoiced()
self.picking_move_state(picking)
self.assertEqual(picking.state, "done")
invoice = self.create_invoice_wizard(picking)
self.assertEqual(picking.invoice_state, "invoiced")
self.assertEqual(invoice.partner_id, self.partner)
self.assertIn(invoice, picking.invoice_ids)
self.assertIn(picking, invoice.picking_ids)
invoice.action_post()
refund = invoice._reverse_moves(cancel=True)
self.assertEqual(picking.invoice_state, "invoiced")
self.assertIn(picking, refund.picking_ids)
nb_invoice_after = self.invoice_model.search_count([])
self.assertEqual(nb_invoice_before, nb_invoice_after - len(invoice | refund))
def test_picking_invoicing_by_product1(self):
"""
Test the invoice generation grouped by partner/product with 1
picking and 2 moves.
:return:
"""
nb_invoice_before = self.invoice_model.search_count([])
self.partner.write({"type": "invoice"})
picking = self.picking_model.create(
{
"partner_id": self.partner.id,
"picking_type_id": self.pick_type_out.id,
"location_id": self.stock_location.id,
"location_dest_id": self.customers_location.id,
}
)
move_vals = {
"product_id": self.product_test_1.id,
"picking_id": picking.id,
"location_dest_id": self.customers_location.id,
"location_id": self.stock_location.id,
"name": self.product_test_1.name,
"product_uom_qty": 1,
"product_uom": self.product_test_1.uom_id.id,
}
self.move_model.create(move_vals)
move_vals2 = {
"product_id": self.product_test_2.id,
"picking_id": picking.id,
"location_dest_id": self.customers_location.id,
"location_id": self.stock_location.id,
"name": self.product_test_2.name,
"product_uom_qty": 1,
"product_uom": self.product_test_2.uom_id.id,
}
self.move_model.create(move_vals2)
picking.set_to_be_invoiced()
self.picking_move_state(picking)
self.assertEqual(picking.state, "done")
invoice = self.create_invoice_wizard(picking)
self.assertEqual(picking.invoice_state, "invoiced")
self.assertEqual(invoice.partner_id, self.partner)
self.assertIn(invoice, picking.invoice_ids)
self.assertIn(picking, invoice.picking_ids)
products = invoice.invoice_line_ids.mapped("product_id")
self.assertEqual(len(invoice.invoice_line_ids), 2)
self.assertIn(self.product_test_1, products)
self.assertIn(self.product_test_2, products)
nb_invoice_after = self.invoice_model.search_count([])
self.assertEqual(nb_invoice_before, nb_invoice_after - len(invoice))
def test_picking_invoicing_by_product2(self):
"""
Test the invoice generation grouped by partner/product with 2
picking and 2 moves per picking.
We use same partner for 2 picking so we should have 1 invoice with 2
lines (and qty 2)
:return:
"""
nb_invoice_before = self.invoice_model.search_count([])
self.partner.write({"type": "invoice"})
picking = self.picking_model.create(
{
"partner_id": self.partner.id,
"picking_type_id": self.pick_type_out.id,
"location_id": self.stock_location.id,
"location_dest_id": self.customers_location.id,
}
)
move_vals = {
"product_id": self.product_test_1.id,
"picking_id": picking.id,
"location_dest_id": self.customers_location.id,
"location_id": self.stock_location.id,
"name": self.product_test_1.name,
"product_uom_qty": 1,
"product_uom": self.product_test_1.uom_id.id,
}
self.move_model.create(move_vals)
picking2 = picking.copy()
move_vals2 = {
"product_id": self.product_test_1.id,
"picking_id": picking2.id,
"location_dest_id": self.customers_location.id,
"location_id": self.stock_location.id,
"name": self.product_test_1.name,
"product_uom_qty": 1,
"product_uom": self.product_test_1.uom_id.id,
}
self.move_model.create(move_vals2)
picking.set_to_be_invoiced()
self.picking_move_state(picking)
picking2.set_to_be_invoiced()
self.picking_move_state(picking2)
self.assertEqual(picking.state, "done")
self.assertEqual(picking2.state, "done")
pickings = picking | picking2
invoice = self.create_invoice_wizard(pickings)
self.assertEqual(len(invoice), 1)
self.assertEqual(picking.invoice_state, "invoiced")
self.assertEqual(picking2.invoice_state, "invoiced")
self.assertEqual(invoice.partner_id, self.partner)
self.assertIn(invoice, picking.invoice_ids)
self.assertIn(invoice, picking2.invoice_ids)
self.assertIn(picking, invoice.picking_ids)
self.assertIn(picking2, invoice.picking_ids)
products = invoice.invoice_line_ids.mapped("product_id")
self.assertIn(self.product_test_1, products)
for inv_line in invoice.invoice_line_ids:
# qty = 3 because 1 move + duplicate one + 1 new
self.assertAlmostEqual(inv_line.quantity, 3)
self.assertTrue(inv_line.tax_ids, "Error to map Sale Tax in invoice.line.")
# Now test behaviour if the invoice is delete
invoice.unlink()
for picking in pickings:
self.assertEqual(picking.invoice_state, "2binvoiced")
nb_invoice_after = self.invoice_model.search_count([])
# Should be equals because we delete the invoice
self.assertEqual(nb_invoice_before, nb_invoice_after)
def test_picking_invoicing_by_product3(self):
"""
Test the invoice generation grouped by partner/product with 2
picking and 2 moves per picking.
We use different partner for 2 picking so we should have 2 invoice
with 2 lines (and qty 1)
:return:
"""
nb_invoice_before = self.invoice_model.search_count([])
self.partner.write({"type": "invoice"})
picking = self.picking_model.create(
{
"partner_id": self.partner.id,
"picking_type_id": self.pick_type_out.id,
"location_id": self.stock_location.id,
"location_dest_id": self.customers_location.id,
}
)
move_vals = {
"product_id": self.product_test_1.id,
"picking_id": picking.id,
"location_dest_id": self.customers_location.id,
"location_id": self.stock_location.id,
"name": self.product_test_1.name,
"product_uom_qty": 1,
"product_uom": self.product_test_1.uom_id.id,
}
self.move_model.create(move_vals)
picking2 = picking.copy({"partner_id": self.partner3.id})
move_vals2 = {
"product_id": self.product_test_2.id,
"picking_id": picking2.id,
"location_dest_id": self.customers_location.id,
"location_id": self.stock_location.id,
"name": self.product_test_2.name,
"product_uom_qty": 1,
"product_uom": self.product_test_2.uom_id.id,
}
self.move_model.create(move_vals2)
picking.set_to_be_invoiced()
self.picking_move_state(picking)
picking2.set_to_be_invoiced()
self.picking_move_state(picking2)
self.assertEqual(picking.state, "done")
self.assertEqual(picking2.state, "done")
pickings = picking | picking2
invoices = self.create_invoice_wizard(pickings)
self.assertEqual(len(invoices), 2)
self.assertEqual(picking.invoice_state, "invoiced")
self.assertEqual(picking2.invoice_state, "invoiced")
self.assertIn(self.partner, invoices.mapped("partner_id"))
self.assertIn(self.partner3, invoices.mapped("partner_id"))
for invoice in invoices:
self.assertEqual(len(invoice.picking_ids), 1)
picking = invoice.picking_ids
self.assertIn(invoice, picking.invoice_ids)
for inv_line in invoice.invoice_line_ids:
self.assertAlmostEqual(inv_line.quantity, 1)
self.assertTrue(
inv_line.tax_ids,
"Error to map Sale Tax in invoice.line.",
)
# Test the behaviour when the invoice is cancelled
# The picking invoice_status should be updated
invoice.button_cancel()
self.assertEqual(picking.invoice_state, "2binvoiced")
nb_invoice_after = self.invoice_model.search_count([])
self.assertEqual(nb_invoice_before, nb_invoice_after - len(invoices))
def test_0_counting_2binvoiced(self):
"""
Check method counting 2binvoice used in kanban view
"""
self.assertEqual(1, self.pick_type_in.count_picking_2binvoiced)
def test_return_customer_picking(self):
"""
Test Return Customer Picking and Invoice created.
"""
picking = self.env.ref("stock_picking_invoicing.stock_picking_invoicing_2")
self.picking_move_state(picking)
self.assertEqual(picking.state, "done")
invoice = self.create_invoice_wizard(picking)
# Confirm Invoice
invoice.action_post()
self.assertEqual(invoice.state, "posted", "Invoice should be in state Posted")
# Check Invoice Type
self.assertEqual(
invoice.move_type, "out_invoice", "Invoice Type should be Out Invoice"
)
# Return Picking
picking_devolution = self.return_picking_wizard(picking)
self.assertEqual(picking_devolution.invoice_state, "2binvoiced")
for line in picking_devolution.move_ids:
self.assertEqual(line.invoice_state, "2binvoiced")
self.picking_move_state(picking_devolution)
self.assertEqual(picking_devolution.state, "done", "Change state fail.")
invoice_devolution = self.create_invoice_wizard(picking_devolution)
# Confirm Return Invoice
invoice_devolution.action_post()
self.assertEqual(
invoice_devolution.state, "posted", "Invoice should be in state Posted"
)
# Check Invoice Type
self.assertEqual(
invoice_devolution.move_type,
"out_refund",
"Invoice Type should be Out Refund",
)
def test_return_supplier_picking(self):
"""
Test Return Supplier Picking and Invoice created.
"""
picking = self.env.ref("stock_picking_invoicing.stock_picking_invoicing_7")
self.picking_move_state(picking)
self.assertEqual(picking.state, "done")
invoice = self.create_invoice_wizard(picking)
for line in invoice.invoice_line_ids:
for seller in line.product_id.seller_ids:
if seller.partner_id == invoice.partner_id:
self.assertEqual(
seller.price,
line.price_unit,
"Product Price in invoice line should be the same of Seller Price.",
)
# Confirm Invoice
invoice.action_post()
self.assertEqual(invoice.state, "posted", "Invoice should be in state Posted")
# Check Invoice Type
self.assertEqual(
invoice.move_type, "in_invoice", "Invoice Type should be In Invoice"
)
# Return Picking
picking_devolution = self.return_picking_wizard(picking)
self.assertEqual(picking_devolution.invoice_state, "2binvoiced")
for line in picking_devolution.move_ids:
self.assertEqual(line.invoice_state, "2binvoiced")
self.picking_move_state(picking_devolution)
self.assertEqual(picking_devolution.state, "done", "Change state fail.")
invoice_devolution = self.create_invoice_wizard(picking_devolution)
# Confirm Return Invoice
invoice_devolution.action_post()
self.assertEqual(
invoice_devolution.state, "posted", "Invoice should be in state Posted"
)
# Check Invoice Type
self.assertEqual(
invoice_devolution.move_type,
"in_refund",
"Invoice Type should be In Refund",
)
def test_get_price_from_pricelist(self):
"""Test get Price from PriceList."""
picking = self.env.ref("stock_picking_invoicing.stock_picking_invoicing_1")
self.picking_move_state(picking)
self.assertEqual(picking.state, "done")
invoice = self.create_invoice_wizard(picking)
self.assertEqual(picking.invoice_state, "invoiced")
for inv_line in invoice.invoice_line_ids:
if inv_line.product_id == self.env.ref("product.product_product_6"):
self.assertEqual(
inv_line.price_unit,
1234.0,
"Error to get sale Price from Price List.",
)
def test_picking_extra_vals(self):
"""Test Picking Extra Vals"""
picking = self.env.ref("stock_picking_invoicing.stock_picking_invoicing_1")
self._run_picking_onchanges(picking)
for line in picking.move_ids_without_package:
self._run_line_onchanges(line)
# Force Split
line.quantity_done = 10
picking.button_validate()

View file

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_move_picking_form" model="ir.ui.view">
<field name="name">stock.move.form.invoice_state</field>
<field name="model">stock.move</field>
<field name="inherit_id" ref="stock.view_move_form" />
<field name="arch" type="xml">
<field name="date_deadline" position="after">
<field name="invoice_state" groups="account.group_account_invoice" />
<field name="invoice_state" invisible="1" />
</field>
<group name="linked_group" position="after">
<group
name="invoice_lines"
string="Invoicing"
colspan="4"
groups="base.group_no_one"
attrs="{'invisible': [('invoice_state', 'in', [False, 'none'])]}"
>
<field name="invoice_line_ids" readonly="1" nolabel="1" />
</group>
</group>
</field>
</record>
<record id="view_move_form_inherit" model="ir.ui.view">
<field name="name">stock.move.form.inherit</field>
<field name="model">stock.move</field>
<field name="inherit_id" ref="stock_picking_invoice_link.view_move_form" />
<field name="arch" type="xml">
<field name="date" position="after">
<field name="invoice_state" groups="account.group_account_invoice" />
<field name="invoice_state" invisible="1" />
</field>
<field name="invoice_line_ids" position="attributes">
<attribute
name="attrs"
>{'invisible': [('invoice_state', 'in', [False, 'none'])]}</attribute>
</field>
</field>
</record>
<record id="view_move_tree" model="ir.ui.view">
<field name="name">stock.move.tree (in stock_picking_invoicing)</field>
<field name="model">stock.move</field>
<field name="inherit_id" ref="stock.view_move_tree" />
<field name="arch" type="xml">
<field name="state" position="before">
<field name="invoice_state" groups="account.group_account_invoice" />
</field>
</field>
</record>
<!--Tree view used into stock.picking form view-->
<record id="view_picking_move_tree" model="ir.ui.view">
<field name="name">stock.move.tree (in stock_picking_invoicing)</field>
<field name="model">stock.move</field>
<field name="inherit_id" ref="stock.view_picking_move_tree" />
<field name="arch" type="xml">
<field name="state" position="before">
<field name="invoice_state" groups="account.group_account_invoice" />
</field>
</field>
</record>
</odoo>

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="2binvoiced_action_picking_dashboard" model="ir.actions.act_window">
<field name="name">Picking to Invoice</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">stock.picking</field>
<field name="view_mode">tree,form</field>
<field name="view_id" eval="False" />
<field
name="domain"
>[('state', '!=', 'cancel'), ('picking_type_id', '=', active_id),
('invoice_state', '=', '2binvoiced')]</field>
<field name="context">{'default_picking_type_id': active_id}</field>
</record>
<record id="stock_picking_type_kanban" model="ir.ui.view">
<field name="name">stock.picking.type.kanban</field>
<field name="model">stock.picking.type</field>
<field name="inherit_id" ref="stock.stock_picking_type_kanban" />
<field name="arch" type="xml">
<field name="code" position="after">
<field name="count_picking_2binvoiced" />
</field>
<xpath expr="//div[hasclass('o_kanban_primary_right')]" position="inside">
<div t-if="record.count_picking_2binvoiced.raw_value > 0" class="row">
<div class="col-9">
<a name="%(2binvoiced_action_picking_dashboard)d" type="action">
To be Invoiced
</a>
</div>
<div class="col-3">
<field name="count_picking_2binvoiced" />
</div>
</div>
</xpath>
</field>
</record>
</odoo>

View file

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_picking_inherit_tree2" model="ir.ui.view">
<field name="name">stock.picking.tree.inherit</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.vpicktree" />
<field name="arch" type="xml">
<field name="backorder_id" position="after">
<field name="invoice_state" groups="account.group_account_invoice" />
</field>
</field>
</record>
<record id="view_picking_invoicing_internal_search" model="ir.ui.view">
<field name="name">stock.picking.search.inherit</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_internal_search" />
<field name="arch" type="xml">
<field name="product_id" position="before">
<filter
name="picking_to_invoice"
string="Shipments to Invoice"
domain="[('invoice_state', '=', '2binvoiced')]"
/>
</field>
</field>
</record>
<record id="view_picking_form" model="ir.ui.view">
<field name="name">stock.picking.form.inherit</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock_picking_invoice_link.view_picking_form" />
<field name="arch" type="xml">
<notebook position="inside">
<page
string="Invoicing"
name="page_invoicing"
groups="account.group_account_invoice"
attrs="{'invisible': [('invoice_state', 'in', [False, 'none'])]}"
>
<field name="invoice_ids">
<tree>
<field name="partner_id" />
<field name="name" />
<field name="ref" />
<field name="invoice_date" />
<field name="state" />
<field name="amount_untaxed" sum="True" />
<field name="amount_tax" />
<field name="amount_total" sum="True" />
</tree>
</field>
</page>
</notebook>
<button name="do_unreserve" position="after">
<button
name="%(action_stock_invoice_onshipping)d"
string="Create Invoice"
attrs="{'invisible': ['|', ('state', '!=', 'done'), ('invoice_state', '!=', '2binvoiced')]}"
type="action"
class="oe_highlight"
groups="base.group_user"
/>
</button>
<field name="move_ids_without_package" position="attributes">
<attribute name="context" operation="update">
{
'default_invoice_state': invoice_state,
}
</attribute>
</field>
<field name="move_type" position="before">
<field name="invoice_state" groups="account.group_account_invoice" />
<field name="invoice_state" invisible="1" />
</field>
<xpath
expr="//field[@name='move_ids_without_package']/tree/field[@name='product_id']"
position="after"
>
<field name="invoice_state" groups="account.group_account_invoice" />
<field name="invoice_state" invisible="1" />
<field
name="price_unit"
attrs="{'invisible':[('invoice_state', '=', 'none')], 'readonly':[('invoice_state', '=', 'invoiced')]}"
optional="hide"
/>
</xpath>
<button name="%(stock.act_stock_return_picking)d" position="after">
<button
name="set_to_be_invoiced"
type="object"
string="Set to be invoiced"
attrs="{'invisible':['|', '|',
('invoice_state', 'not in', ('invoiced', 'none')),
('invoice_ids', '=', True), ('state', '=', 'cancel')]}"
/>
<button
name="set_as_invoiced"
type="object"
string="Set to as invoiced"
attrs="{'invisible':['|', '|',
('invoice_state', 'not in', ('2binvoiced', 'none')),
('invoice_ids', '=', True), ('state', '=', 'cancel')]}"
/>
<button
name="set_as_not_billable"
type="object"
string="Set to Not Billable"
attrs="{'invisible':['|', '|',
('invoice_state', 'not in', ('invoiced', '2binvoiced')),
('invoice_ids', '=', True), ('state', '=', 'cancel')]}"
/>
</button>
</field>
</record>
</odoo>

View file

@ -0,0 +1,5 @@
# Copyright (C) 2019-Today: Odoo Community Association (OCA)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import stock_invoice_onshipping
from . import stock_return_picking

View file

@ -0,0 +1,533 @@
# Copyright (C) 2019-Today: Odoo Community Association (OCA)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import _, api, fields, models
from odoo.exceptions import UserError
JOURNAL_TYPE_MAP = {
("outgoing", "customer"): ["sale"],
("outgoing", "supplier"): ["purchase"],
("outgoing", "transit"): ["sale", "purchase"],
("incoming", "supplier"): ["purchase"],
("incoming", "customer"): ["sale"],
("incoming", "transit"): ["purchase", "sale"],
}
INVOICE_TYPE_MAP = {
# Picking Type Code | Local Origin Usage | Local Dest Usage
("outgoing", "internal", "customer"): "out_invoice",
("incoming", "customer", "internal"): "out_refund",
("incoming", "customer", "customer"): "out_refund",
("incoming", "supplier", "internal"): "in_invoice",
("incoming", "supplier", "customer"): "in_invoice",
("outgoing", "internal", "supplier"): "in_refund",
("outgoing", "internal", "internal"): "in_refund",
("incoming", "transit", "internal"): "in_invoice",
("outgoing", "transit", "supplier"): "in_refund",
("outgoing", "transit", "customer"): "out_invoice",
}
class StockInvoiceOnshipping(models.TransientModel):
_name = "stock.invoice.onshipping"
_description = "Stock Invoice Onshipping"
@api.model
def _get_journal_type(self):
active_ids = self.env.context.get("active_ids", [])
if active_ids:
active_ids = active_ids[0]
pick_obj = self.env["stock.picking"]
picking = pick_obj.browse(active_ids)
if not picking or not picking.move_ids:
return "sale"
pick_type_code = picking.picking_type_id.code
line = fields.first(picking.move_ids)
if pick_type_code == "incoming":
usage = line.location_id.usage
else:
usage = line.location_dest_id.usage
return JOURNAL_TYPE_MAP.get((pick_type_code, usage), ["sale"])[0]
journal_type = fields.Selection(
selection=[
("purchase", "Create Supplier Invoice"),
("sale", "Create Customer Invoice"),
],
default=_get_journal_type,
readonly=True,
)
group = fields.Selection(
selection=[
("picking", "Picking"),
("partner", "Partner"),
("partner_product", "Partner/Product"),
],
default="picking",
help="Group pickings/moves to create invoice(s):\n"
"Picking: One invoice per picking;\n"
"Partner: One invoice for each picking's partner;\n"
"Partner/Product: One invoice per picking's partner and group "
"product into a single invoice line.",
required=True,
)
invoice_date = fields.Date()
sale_journal = fields.Many2one(
comodel_name="account.journal",
domain="[('type', '=', 'sale')]",
default=lambda self: self._default_journal("sale"),
ondelete="cascade",
)
purchase_journal = fields.Many2one(
comodel_name="account.journal",
domain="[('type', '=', 'purchase')]",
default=lambda self: self._default_journal("purchase"),
ondelete="cascade",
)
show_sale_journal = fields.Boolean()
show_purchase_journal = fields.Boolean()
@api.model
def default_get(self, fields_list):
"""
Inherit to add default invoice_date
:param fields_list: list of str
:return: dict
"""
result = super().default_get(fields_list)
result.update({"invoice_date": fields.Date.today()})
return result
@api.onchange("group")
def onchange_group(self):
self.ensure_one()
(
sale_pickings,
sale_refund_pickings,
purchase_pickings,
purchase_refund_pickings,
) = self.get_split_pickings()
self.show_sale_journal = bool(sale_pickings)
self.show_purchase_journal = bool(purchase_pickings)
def get_partner_sum(self, pickings, partner, inv_type, picking_type, usage):
pickings = pickings.filtered(
lambda x: x.picking_type_id.code == picking_type and x.partner_id == partner
)
lines = pickings.mapped("move_ids")
if picking_type == "outgoing":
moves = lines.filtered(lambda x: x.location_dest_id.usage == usage)
else:
moves = lines.filtered(lambda x: x.location_id.usage == usage)
total = sum(
(
m._get_price_unit_invoice(inv_type, m.picking_id.partner_id)
* m.product_uom_qty
)
for m in moves
)
return total, moves.mapped("picking_id")
def get_split_pickings(self):
self.ensure_one()
picking_obj = self.env["stock.picking"]
pickings = picking_obj.browse(self.env.context.get("active_ids", []))
if self.group != "picking":
return self.get_split_pickings_grouped(pickings)
return self.get_split_pickings_nogrouped(pickings)
def get_split_pickings_grouped(self, pickings):
sale_pickings = self.env["stock.picking"].browse()
sale_refund_pickings = self.env["stock.picking"].browse()
purchase_pickings = self.env["stock.picking"].browse()
purchase_refund_pickings = self.env["stock.picking"].browse()
for partner in pickings.mapped("partner_id"):
so_sum, so_pickings = self.get_partner_sum(
pickings, partner, "out_invoice", "outgoing", "customer"
)
si_sum, si_pickings = self.get_partner_sum(
pickings, partner, "out_invoice", "incoming", "customer"
)
if (so_sum - si_sum) >= 0:
sale_pickings |= so_pickings | si_pickings
else:
sale_refund_pickings |= so_pickings | si_pickings
pi_sum, pi_pickings = self.get_partner_sum(
pickings, partner, "in_invoice", "incoming", "supplier"
)
po_sum, po_pickings = self.get_partner_sum(
pickings, partner, "in_invoice", "outgoing", "supplier"
)
if (pi_sum - po_sum) >= 0:
purchase_pickings |= pi_pickings | po_pickings
else:
purchase_refund_pickings |= pi_pickings | po_pickings
return (
sale_pickings,
sale_refund_pickings,
purchase_pickings,
purchase_refund_pickings,
)
def get_split_pickings_nogrouped(self, pickings):
first = fields.first
sale_pickings = pickings.filtered(
lambda x: x.picking_type_id.code == "outgoing"
and first(x.move_ids).location_dest_id.usage == "customer"
)
sale_refund_pickings = pickings.filtered(
lambda x: x.picking_type_id.code == "incoming"
and first(x.move_ids).location_id.usage == "customer"
)
purchase_pickings = pickings.filtered(
lambda x: x.picking_type_id.code == "incoming"
and first(x.move_ids).location_id.usage == "supplier"
)
purchase_refund_pickings = pickings.filtered(
lambda x: x.picking_type_id.code == "outgoing"
and first(x.move_ids).location_dest_id.usage == "supplier"
)
return (
sale_pickings,
sale_refund_pickings,
purchase_pickings,
purchase_refund_pickings,
)
@api.model
def _default_journal(self, journal_type):
"""
Get the default journal based on the given type
:param journal_type: str
:return: account.journal recordset
"""
default_journal = self.env["account.journal"].search(
[
("type", "=", journal_type),
("company_id", "=", self.env.company.id),
],
limit=1,
)
return default_journal
def action_generate(self):
"""
Launch the invoice generation
:return:
"""
self.ensure_one()
invoices = self._action_generate_invoices()
if not invoices:
raise UserError(_("No invoice created!"))
# Update the state on pickings related to new invoices only
self._update_picking_invoice_status(invoices.mapped("picking_ids"))
inv_type = self._get_invoice_type()
if inv_type in ["out_invoice", "out_refund"]:
xmlid = "account.action_move_out_invoice_type"
else:
xmlid = "account.action_move_in_invoice_type"
action_dict = self.env["ir.actions.act_window"]._for_xml_id(xmlid)
if len(invoices) > 1:
action_dict["domain"] = [("id", "in", invoices.ids)]
elif len(invoices) == 1:
if inv_type in ["out_invoice", "out_refund"]:
form_view = [(self.env.ref("account.view_move_form").id, "form")]
else:
form_view = [(self.env.ref("account.view_move_form").id, "form")]
if "views" in action_dict:
action_dict["views"] = form_view + [
(state, view)
for state, view in action_dict["views"]
if view != "form"
]
else:
action_dict["views"] = form_view
action_dict["res_id"] = invoices.ids[0]
return action_dict
def _load_pickings(self):
"""
Load pickings from context
:return: stock.picking recordset
"""
picking_obj = self.env["stock.picking"]
active_ids = self.env.context.get("active_ids", [])
pickings = picking_obj.browse(active_ids)
pickings = pickings.filtered(lambda p: p.invoice_state == "2binvoiced")
return pickings
def _get_journal(self):
"""
Get the journal depending on the journal_type
:return: account.journal recordset
"""
self.ensure_one()
journal_field = "%s_journal" % self.journal_type
journal = self[journal_field]
return journal
def _get_invoice_type(self):
"""
Get the invoice type
:return: str
"""
self.ensure_one()
active_ids = self.env.context.get("active_ids", [])
if active_ids:
active_ids = active_ids[0]
picking = self.env["stock.picking"].browse(active_ids)
inv_type = (
INVOICE_TYPE_MAP.get(
(
picking.picking_type_code,
picking.location_id.usage,
picking.location_dest_id.usage,
)
)
or "out_invoice"
)
return inv_type
@api.model
def _get_picking_key(self, picking):
"""
Get the key for the given picking.
By default, it's based on the invoice partner and the picking_type_id
of the picking
:param picking: stock.picking recordset
:return: key (tuple,...)
"""
key = (picking,)
if self.group in ["partner", "partner_product"]:
# Pickings with same Partner to create Invoice but the
# Partner to Shipping is different should not be grouping.
key = (
picking._get_partner_to_invoice(),
picking.picking_type_id,
picking.partner_id,
)
return key
def _group_pickings(self, pickings):
"""
Group given picking
:param pickings:
:return: list of stock.picking recordset
"""
grouped_picking = {}
pickings = pickings.filtered(lambda p: p.invoice_state == "2binvoiced")
for picking in pickings:
key = self._get_picking_key(picking)
picks_grouped = grouped_picking.get(key, self.env["stock.picking"].browse())
picks_grouped |= picking
grouped_picking.update({key: picks_grouped})
return grouped_picking.values()
def _simulate_invoice_onchange(self, values):
"""
Simulate onchange for invoice
:param values: dict
:return: dict
"""
invoice = self.env["account.move"].new(values.copy())
invoice._onchange_partner_id()
invoice._inverse_company_id()
invoice._inverse_currency_id()
invoice._onchange_date()
new_values = invoice._convert_to_write(invoice._cache)
# Ensure basic values are not updated
values.update(new_values)
return invoice, values
def _build_invoice_values_from_pickings(self, pickings):
"""
Build dict to create a new invoice from given pickings
:param pickings: stock.picking recordset
:return: dict
"""
picking = fields.first(pickings)
partner_id = picking._get_partner_to_invoice()
partner = self.env["res.partner"].browse(partner_id)
inv_type = self._get_invoice_type()
currency = self.env.company.currency_id
if partner:
code = picking.picking_type_id.code
if partner.property_product_pricelist and code == "outgoing":
currency = partner.property_product_pricelist.currency_id
journal = self._get_journal()
invoice_obj = self.env["account.move"]
values = invoice_obj.default_get(invoice_obj.fields_get().keys())
values.update(
{
"invoice_origin": ", ".join(pickings.mapped("name")),
"partner_id": partner_id,
"move_type": inv_type,
"currency_id": currency.id,
"journal_id": journal.id,
}
)
invoice, values = self._simulate_invoice_onchange(values)
return invoice, values
def _get_move_key(self, move):
"""
Get the key based on the given move
:param move: stock.move recordset
:return: (key,)
"""
key = (move,)
if self.group == "partner_product":
key = (move.product_id,)
return key
def _group_moves(self, moves):
"""
Possibility to group moves (to create 1 invoice line with many moves)
:param moves: stock.move recordset
:return: list of stock.move recordset
"""
grouped_moves = {}
moves = moves.filtered(lambda m: m.invoice_state == "2binvoiced")
for move in moves:
key = self._get_move_key(move)
move_grouped = grouped_moves.get(key, self.env["stock.move"].browse())
move_grouped |= move
grouped_moves.update({key: move_grouped})
return grouped_moves.values()
def _simulate_invoice_line_onchange(self, values, price_unit=None):
"""
Simulate onchange for invoice line
:param values: dict
:return: dict
"""
line = self.env["account.move.line"].new(values.copy())
line._inverse_partner_id()
line._inverse_product_id()
line._inverse_account_id()
line._inverse_amount_currency()
new_values = line._convert_to_write(line._cache)
if price_unit:
new_values["price_unit"] = price_unit
# Ensure basic values are not updated
values.update(new_values)
return values
def _get_invoice_line_values(self, moves, invoice_values, invoice):
"""
Create invoice line values from given moves
:param moves: stock.move
:param invoice: account.move
:return: dict
"""
move = fields.first(moves)
product = move.product_id
partner_id = self.env["res.partner"].browse(invoice_values["partner_id"])
inv_type = invoice_values["move_type"]
quantity = 0
move_line_ids = []
for move in moves:
qty = move.product_uom_qty
loc = move.location_id
loc_dst = move.location_dest_id
# Better to understand with IF/ELIF than many OR
if inv_type == "out_invoice" and loc.usage == "customer":
qty *= -1
elif inv_type == "out_refund" and loc_dst.usage == "customer":
qty *= -1
elif inv_type == "in_invoice" and loc_dst.usage == "supplier":
qty *= -1
elif inv_type == "in_refund" and loc.usage == "supplier":
qty *= -1
quantity += qty
move_line_ids.append((4, move.id))
price = moves._get_price_unit_invoice(inv_type, partner_id, quantity)
line_obj = self.env["account.move.line"]
values = line_obj.default_get(line_obj.fields_get().keys())
values.update(
{
"name": move.name,
"product_id": product.id,
"quantity": quantity,
"price_unit": price,
"move_line_ids": move_line_ids,
"move_id": invoice.id,
}
)
values = self._simulate_invoice_line_onchange(values, price_unit=price)
return values
def _update_picking_invoice_status(self, pickings):
"""
Update invoice_state on pickings
:param pickings: stock.picking recordset
:return: stock.picking recordset
"""
return pickings.set_as_invoiced()
def ungroup_moves(self, grouped_moves_list):
"""Ungroup your moves, split them again, grouping by
fiscal position, max itens per invoice and etc
:param grouped_moves_list:
:return: list of grouped moves list
"""
return [grouped_moves_list]
def _create_invoice(self, invoice_values):
"""Override this method if you need to change any values of the
invoice and the lines before the invoice creation
:param invoice_values: dict with the invoice and its lines
:return: invoice
"""
return self.env["account.move"].create(invoice_values)
def _action_generate_invoices(self):
"""
Action to generate invoices based on pickings
:return: account.move recordset
"""
pickings = self._load_pickings()
company = pickings.mapped("company_id")
if company and company != self.env.company:
raise UserError(_("All pickings are not related to your company!"))
pick_list = self._group_pickings(pickings)
invoices = self.env["account.move"].browse()
for pickings in pick_list:
moves = pickings.mapped("move_ids")
grouped_moves_list = self._group_moves(moves)
parts = self.ungroup_moves(grouped_moves_list)
for moves_list in parts:
invoice, invoice_values = self._build_invoice_values_from_pickings(
pickings
)
lines = [(5, 0, {})]
line_values = False
for moves in moves_list:
line_values = self._get_invoice_line_values(
moves, invoice_values, invoice
)
if line_values:
lines.append((0, 0, line_values))
if line_values: # Only create the invoice if it has lines
invoice_values["invoice_line_ids"] = lines
# Necessary inform line_ids with empty list to avoid error
# addons/account/models/account_move.py", line 2251,
# in _sanitize_vals
# assert command not in (Command.SET, Command.CLEAR)
invoice_values["line_ids"] = []
invoice_values["invoice_date"] = self.invoice_date
invoice = self._create_invoice(invoice_values)
invoice._compute_amount()
invoices |= invoice
return invoices

View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_stock_invoice_onshipping" model="ir.ui.view">
<field name="name">Stock Invoice Onshipping</field>
<field name="model">stock.invoice.onshipping</field>
<field name="arch" type="xml">
<form string="Create invoice">
<h1>
<field name="journal_type" readonly="1" />
</h1>
<group>
<field name="show_sale_journal" invisible="1" />
<field name="show_purchase_journal" invisible="1" />
<field
name="sale_journal"
attrs="{'invisible':[('show_sale_journal', '=', False)], 'required':[('show_sale_journal', '=', True)]}"
/>
<field
name="purchase_journal"
attrs="{'invisible':[('show_purchase_journal', '=', False)], 'required':[('show_purchase_journal', '=', True)]}"
/>
<field name="group" />
<field name="invoice_date" />
</group>
<footer>
<button
name="action_generate"
string="Create"
type="object"
class="oe_highlight"
/>
or
<button string="Cancel" class="oe_link" special="cancel" />
</footer>
</form>
</field>
</record>
<record id="action_stock_invoice_onshipping" model="ir.actions.act_window">
<field name="name">Create Draft Invoices</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">stock.invoice.onshipping</field>
<field name="binding_model_id" ref="stock.model_stock_picking" />
<field name="view_id" ref="view_stock_invoice_onshipping" />
<field name="binding_view_types">list,form</field>
<field name="target">new</field>
</record>
</odoo>

View file

@ -0,0 +1,23 @@
# @ 2021-Today: Akretion - www.akretion.com -
# Magno Costa <magno.costa@akretion.com.br>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class StockReturnPicking(models.TransientModel):
_inherit = "stock.return.picking"
invoice_state = fields.Selection(
selection=[("2binvoiced", "To be refunded/invoiced"), ("none", "No invoicing")],
string="Invoicing",
required=True,
default="none",
)
def _prepare_move_default_values(self, return_line, new_picking):
vals = super()._prepare_move_default_values(return_line, new_picking)
if self.invoice_state == "2binvoiced":
vals.update({"invoice_state": self.invoice_state})
return vals

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_stock_return_picking_form_inherit" model="ir.ui.view">
<field name="name">Return lines</field>
<field name="model">stock.return.picking</field>
<field name="inherit_id" ref="stock.view_stock_return_picking_form" />
<field name="arch" type="xml">
<field name="product_return_moves" position="after">
<group>
<field name="invoice_state" />
</group>
</field>
</field>
</record>
</odoo>