mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-24 22:12:08 +02:00
Initial commit: OCA Technical packages (595 packages)
This commit is contained in:
commit
2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions
|
|
@ -0,0 +1,47 @@
|
|||
# Sale Report Delivered
|
||||
|
||||
Odoo addon: sale_report_delivered
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-oca-sale-reporting-sale_report_delivered
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
This addon depends on:
|
||||
- sale_stock
|
||||
- sale_margin
|
||||
|
||||
## Manifest Information
|
||||
|
||||
- **Name**: Sale Report Delivered
|
||||
- **Version**: 16.0.2.2.2
|
||||
- **Category**: Sales
|
||||
- **License**: AGPL-3
|
||||
- **Installable**: True
|
||||
|
||||
## Source
|
||||
|
||||
Based on [OCA/sale-reporting](https://github.com/OCA/sale-reporting) branch 16.0, addon `sale_report_delivered`.
|
||||
|
||||
## License
|
||||
|
||||
This package maintains the original AGPL-3 license from the upstream Odoo project.
|
||||
|
||||
## Documentation
|
||||
|
||||
- Overview: doc/OVERVIEW.md
|
||||
- Architecture: doc/ARCHITECTURE.md
|
||||
- Models: doc/MODELS.md
|
||||
- Controllers: doc/CONTROLLERS.md
|
||||
- Wizards: doc/WIZARDS.md
|
||||
- Reports: doc/REPORTS.md
|
||||
- Security: doc/SECURITY.md
|
||||
- Install: doc/INSTALL.md
|
||||
- Usage: doc/USAGE.md
|
||||
- Configuration: doc/CONFIGURATION.md
|
||||
- Dependencies: doc/DEPENDENCIES.md
|
||||
- Troubleshooting: doc/TROUBLESHOOTING.md
|
||||
- FAQ: doc/FAQ.md
|
||||
|
|
@ -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 Sale_report_delivered Module - sale_report_delivered
|
||||
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.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Configuration
|
||||
|
||||
Refer to Odoo settings for sale_report_delivered. Configure related models, access rights, and options as needed.
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Controllers
|
||||
|
||||
This module does not define custom HTTP controllers.
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Dependencies
|
||||
|
||||
This addon depends on:
|
||||
|
||||
- [sale_stock](../../odoo-bringout-oca-ocb-sale_stock)
|
||||
- [sale_margin](../../odoo-bringout-oca-ocb-sale_margin)
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
# FAQ
|
||||
|
||||
- Q: Which Odoo version? A: 16.0 (OCA/OCB packaged).
|
||||
- Q: How to enable? A: Start server with --addon sale_report_delivered or install in UI.
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# Install
|
||||
|
||||
```bash
|
||||
pip install odoo-bringout-oca-sale-reporting-sale_report_delivered"
|
||||
# or
|
||||
uv pip install odoo-bringout-oca-sale-reporting-sale_report_delivered"
|
||||
```
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
# Models
|
||||
|
||||
Detected core models and extensions in sale_report_delivered.
|
||||
|
||||
```mermaid
|
||||
classDiagram
|
||||
```
|
||||
|
||||
Notes
|
||||
- Classes show model technical names; fields omitted for brevity.
|
||||
- Items listed under _inherit are extensions of existing models.
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Overview
|
||||
|
||||
Packaged Odoo addon: sale_report_delivered. Provides features documented in upstream Odoo 16 under this addon.
|
||||
|
||||
- Source: OCA/OCB 16.0, addon sale_report_delivered
|
||||
- License: LGPL-3
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Reports
|
||||
|
||||
This module does not define custom reports.
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
# Security
|
||||
|
||||
Access control and security definitions in sale_report_delivered.
|
||||
|
||||
## Access Control Lists (ACLs)
|
||||
|
||||
Model access permissions defined in:
|
||||
- **[ir.model.access.csv](../sale_report_delivered/security/ir.model.access.csv)**
|
||||
- 2 model access rules
|
||||
|
||||
## Record Rules
|
||||
|
||||
Row-level security rules defined in:
|
||||
|
||||
## Security Groups & Configuration
|
||||
|
||||
Security groups and permissions defined in:
|
||||
- **[sale_report_security.xml](../sale_report_delivered/security/sale_report_security.xml)**
|
||||
|
||||
```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](../sale_report_delivered/security/ir.model.access.csv)**
|
||||
- Model access permissions (CRUD rights)
|
||||
- **[sale_report_security.xml](../sale_report_delivered/security/sale_report_security.xml)**
|
||||
- Security groups, categories, and XML-based rules
|
||||
|
||||
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
|
||||
|
|
@ -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.
|
||||
|
|
@ -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 sale_report_delivered
|
||||
```
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# Wizards
|
||||
|
||||
This module does not include UI wizards.
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
[project]
|
||||
name = "odoo-bringout-oca-sale-reporting-sale_report_delivered"
|
||||
version = "16.0.0"
|
||||
description = "Sale Report Delivered - Odoo addon"
|
||||
authors = [
|
||||
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
|
||||
]
|
||||
dependencies = [
|
||||
"odoo-bringout-oca-sale-reporting-sale_stock>=16.0.0",
|
||||
"odoo-bringout-oca-sale-reporting-sale_margin>=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 = ["sale_report_delivered"]
|
||||
|
||||
[tool.rye]
|
||||
managed = true
|
||||
dev-dependencies = [
|
||||
"pytest>=8.4.1",
|
||||
]
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
=====================
|
||||
Sale Report Delivered
|
||||
=====================
|
||||
|
||||
..
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! source digest: sha256:257e0251c07649aad140037e63ec2f390ee43cb80001ab0057842da5581e1192
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
|
||||
:target: https://odoo-community.org/page/development-status
|
||||
:alt: Beta
|
||||
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
|
||||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||
:alt: License: AGPL-3
|
||||
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsale--reporting-lightgray.png?logo=github
|
||||
:target: https://github.com/OCA/sale-reporting/tree/16.0/sale_report_delivered
|
||||
:alt: OCA/sale-reporting
|
||||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
|
||||
:target: https://translation.odoo-community.org/projects/sale-reporting-16-0/sale-reporting-16-0-sale_report_delivered
|
||||
: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/sale-reporting&target_branch=16.0
|
||||
:alt: Try me on Runboat
|
||||
|
||||
|badge1| |badge2| |badge3| |badge4| |badge5|
|
||||
|
||||
Adds subtotal price based on the delivered quantities field to the
|
||||
*Sales Report*.
|
||||
|
||||
This module takes in consideration Outgoing, Returns and Dropship.
|
||||
|
||||
**Table of contents**
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
Go to *Sales > Reporting > Sales from deliveries* and you'll find the new *Total Price
|
||||
Delivered* measure.
|
||||
|
||||
Bug Tracker
|
||||
===========
|
||||
|
||||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/sale-reporting/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/sale-reporting/issues/new?body=module:%20sale_report_delivered%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
|
||||
~~~~~~~
|
||||
|
||||
* Tecnativa
|
||||
|
||||
Contributors
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* `Tecnativa <https://www.tecnativa.com>`_:
|
||||
|
||||
* Sergio Teruel
|
||||
* Carlos Dauden
|
||||
|
||||
* Eduardo de Miguel (`Moduon <https://www.moduon.team/>`__)
|
||||
|
||||
Maintainers
|
||||
~~~~~~~~~~~
|
||||
|
||||
This module is maintained by the OCA.
|
||||
|
||||
.. image:: https://odoo-community.org/logo.png
|
||||
:alt: Odoo Community Association
|
||||
:target: https://odoo-community.org
|
||||
|
||||
OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||
mission is to support the collaborative development of Odoo features and
|
||||
promote its widespread use.
|
||||
|
||||
.. |maintainer-sergio-teruel| image:: https://github.com/sergio-teruel.png?size=40px
|
||||
:target: https://github.com/sergio-teruel
|
||||
:alt: sergio-teruel
|
||||
|
||||
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|
||||
|
||||
|maintainer-sergio-teruel|
|
||||
|
||||
This module is part of the `OCA/sale-reporting <https://github.com/OCA/sale-reporting/tree/16.0/sale_report_delivered>`_ project on GitHub.
|
||||
|
||||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
|
||||
|
|
@ -0,0 +1 @@
|
|||
from . import reports
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# Copyright 2021 Tecnativa - Sergio Teruel
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
{
|
||||
"name": "Sale Report Delivered",
|
||||
"version": "16.0.2.2.2",
|
||||
"author": "Tecnativa," "Odoo Community Association (OCA)",
|
||||
"website": "https://github.com/OCA/sale-reporting",
|
||||
"category": "Sales",
|
||||
"license": "AGPL-3",
|
||||
"depends": ["sale_stock", "sale_margin"],
|
||||
"installable": True,
|
||||
"development_status": "Beta",
|
||||
"maintainers": ["sergio-teruel"],
|
||||
"data": [
|
||||
"security/ir.model.access.csv",
|
||||
"security/sale_report_security.xml",
|
||||
"views/sale_report_delivered_views.xml",
|
||||
],
|
||||
}
|
||||
|
|
@ -0,0 +1,271 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * sale_report_delivered
|
||||
#
|
||||
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: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__nbr
|
||||
msgid "# of Lines"
|
||||
msgstr "# Linija"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__amount_cost
|
||||
msgid "Amount cost"
|
||||
msgstr "Amount cost"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__analytic_account_id
|
||||
msgid "Analytic Account"
|
||||
msgstr "Analitički konto"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__campaign_id
|
||||
msgid "Campaign"
|
||||
msgstr "Kampanja"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__cancel
|
||||
msgid "Cancelled"
|
||||
msgstr "Otkazan"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__company_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Company"
|
||||
msgstr "Preduzeće"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__partner_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Customer"
|
||||
msgstr "Kupac"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__country_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Customer Country"
|
||||
msgstr "Država kupca"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__commercial_partner_id
|
||||
msgid "Customer Entity"
|
||||
msgstr "Nadređena tvrtka"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__industry_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Customer Industry"
|
||||
msgstr "Kupčeva industrija"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__date
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Prikazani naziv"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__draft
|
||||
msgid "Draft Quotation"
|
||||
msgstr "Predračun u pripremi"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Extended Filters"
|
||||
msgstr "Prošireni filteri"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__weight
|
||||
msgid "Gross Weight"
|
||||
msgstr "Bruto težina"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Group By"
|
||||
msgstr "Grupiši po"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Zadnje mijenjano"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__margin
|
||||
msgid "Margin delivered"
|
||||
msgstr "Margin delivered"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__margin_percent
|
||||
msgid "Margin delivered(%)"
|
||||
msgstr "Margin delivered(%)"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__medium_id
|
||||
msgid "Medium"
|
||||
msgstr "Medijum"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__order_id
|
||||
msgid "Order"
|
||||
msgstr "Nalog"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__name
|
||||
msgid "Order Reference"
|
||||
msgstr "Referenca narudžbe"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__picking_id
|
||||
msgid "Picking"
|
||||
msgstr "Skladišnice"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__pricelist_id
|
||||
msgid "Pricelist"
|
||||
msgstr "Cjenik"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_tmpl_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Product"
|
||||
msgstr "Artikal"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__categ_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Product Category"
|
||||
msgstr "Kategorija proizvoda"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_id
|
||||
msgid "Product Variant"
|
||||
msgstr "Varijanta proizvoda"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_uom_qty
|
||||
msgid "Qty"
|
||||
msgstr "Količina"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__sent
|
||||
msgid "Quotation Sent"
|
||||
msgstr "Ponuda poslana"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Quotations"
|
||||
msgstr "Predračuni"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_pivot
|
||||
msgid "Sales Analysis"
|
||||
msgstr "Analiza prodaje"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.actions.act_window,name:sale_report_delivered.action_sale_report_delivered
|
||||
msgid "Sales Analysis From Deliveries"
|
||||
msgstr "Sales Analysis From Deliveries"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model,name:sale_report_delivered.model_sale_report_delivered
|
||||
msgid "Sales Delivered Analysis Report"
|
||||
msgstr "Sales Delivered Analysis Report"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__done
|
||||
msgid "Sales Done"
|
||||
msgstr "Prodaja završena"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__sale
|
||||
msgid "Sales Order"
|
||||
msgstr "Prodajni nalog"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Sales Orders"
|
||||
msgstr "Prodajni nalozi"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__team_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Sales Team"
|
||||
msgstr "Prodajni tim"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_graph
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Sales analysis from deliveries"
|
||||
msgstr "Sales analysis from deliveries"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.ui.menu,name:sale_report_delivered.menu_report_sale_stock_delivery
|
||||
msgid "Sales from deliveries"
|
||||
msgstr "Sales from deliveries"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__user_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Salesperson"
|
||||
msgstr "Referent prodaje"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__user_from_partner_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Salesperson From Partner"
|
||||
msgstr "Salesperson From Partner"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__source_id
|
||||
msgid "Source"
|
||||
msgstr "Izvor"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__state
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.actions.act_window,help:sale_report_delivered.action_sale_report_delivered
|
||||
msgid ""
|
||||
"This report performs analysis on your sales orders from deliveries. Analysis"
|
||||
" check your sales revenues and sort it by different group criteria "
|
||||
"(salesman, partner, product, etc.) Use this report to perform analysis on "
|
||||
"sales not having invoiced yet. If you want to analyse your turnover, you "
|
||||
"should use the Invoice Analysis report in the Accounting application."
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_uom
|
||||
msgid "Unit of Measure"
|
||||
msgstr "Jedinica mjere"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__price_subtotal
|
||||
msgid "Untaxed total delivered"
|
||||
msgstr "Untaxed total delivered"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__volume
|
||||
msgid "Volume"
|
||||
msgstr "Volumen"
|
||||
|
|
@ -0,0 +1,281 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * sale_report_delivered
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 13.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-11-28 20:03+0000\n"
|
||||
"PO-Revision-Date: 2024-11-28 21:03+0100\n"
|
||||
"Last-Translator: Carlos Dauden <carlos.dauden@tecnativa.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 3.4.2\n"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__nbr
|
||||
msgid "# of Lines"
|
||||
msgstr "# de líneas"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__amount_cost
|
||||
msgid "Amount cost"
|
||||
msgstr "Coste"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__analytic_account_id
|
||||
msgid "Analytic Account"
|
||||
msgstr "Cuenta analítica"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__campaign_id
|
||||
msgid "Campaign"
|
||||
msgstr "Campaña"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__cancel
|
||||
msgid "Cancelled"
|
||||
msgstr "Cancelado"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__company_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Company"
|
||||
msgstr "Compañía"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__partner_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Customer"
|
||||
msgstr "Cliente"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__country_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Customer Country"
|
||||
msgstr "País del cliente"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__commercial_partner_id
|
||||
msgid "Customer Entity"
|
||||
msgstr "Entidad del Cliente"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__industry_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Customer Industry"
|
||||
msgstr "Sector"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__date
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Date"
|
||||
msgstr "Fecha"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nombre a mostrar"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__draft
|
||||
msgid "Draft Quotation"
|
||||
msgstr "Presupuesto borrador"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Extended Filters"
|
||||
msgstr "Filtros extendidos"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__weight
|
||||
msgid "Gross Weight"
|
||||
msgstr "Peso bruto"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Group By"
|
||||
msgstr "Agrupado por"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__id
|
||||
msgid "ID"
|
||||
msgstr "ID (Identificador)"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Última modificación en"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__margin
|
||||
msgid "Margin delivered"
|
||||
msgstr "Margen entregado"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__margin_percent
|
||||
msgid "Margin delivered(%)"
|
||||
msgstr "Margen entregado(%)"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__medium_id
|
||||
msgid "Medium"
|
||||
msgstr "Media"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__order_id
|
||||
msgid "Order"
|
||||
msgstr "Pedido"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__name
|
||||
msgid "Order Reference"
|
||||
msgstr "Referencia del pedido"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__picking_id
|
||||
msgid "Picking"
|
||||
msgstr "Albarán"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__pricelist_id
|
||||
msgid "Pricelist"
|
||||
msgstr "Tarifa"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_tmpl_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Product"
|
||||
msgstr "Producto"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__categ_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Product Category"
|
||||
msgstr "Categoría"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_id
|
||||
msgid "Product Variant"
|
||||
msgstr "Variante de producto"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_uom_qty
|
||||
msgid "Qty"
|
||||
msgstr "Cantidad"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__sent
|
||||
msgid "Quotation Sent"
|
||||
msgstr "Presupuesto enviado"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Quotations"
|
||||
msgstr "Presupuestos"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_pivot
|
||||
msgid "Sales Analysis"
|
||||
msgstr "Análisis de ventas"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.actions.act_window,name:sale_report_delivered.action_sale_report_delivered
|
||||
msgid "Sales Analysis From Deliveries"
|
||||
msgstr "Análisis de ventas desde albaranes"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model,name:sale_report_delivered.model_sale_report_delivered
|
||||
msgid "Sales Delivered Analysis Report"
|
||||
msgstr "Análisis de ventas"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__done
|
||||
msgid "Sales Done"
|
||||
msgstr "Orden de venta completa"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__sale
|
||||
msgid "Sales Order"
|
||||
msgstr "Pedido de venta"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Sales Orders"
|
||||
msgstr "Pedidos de ventas"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__team_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Sales Team"
|
||||
msgstr "Equipo de ventas"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_graph
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Sales analysis from deliveries"
|
||||
msgstr "Análisis de ventas desde albaranes"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.ui.menu,name:sale_report_delivered.menu_report_sale_stock_delivery
|
||||
msgid "Sales from deliveries"
|
||||
msgstr "Ventas desde albaranes"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__user_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Salesperson"
|
||||
msgstr "Comercial"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__user_from_partner_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Salesperson From Partner"
|
||||
msgstr "Comercial del cliente"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__source_id
|
||||
msgid "Source"
|
||||
msgstr "Origen"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__state
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.actions.act_window,help:sale_report_delivered.action_sale_report_delivered
|
||||
msgid ""
|
||||
"This report performs analysis on your sales orders from deliveries. Analysis "
|
||||
"check your sales revenues and sort it by different group criteria (salesman, "
|
||||
"partner, product, etc.) Use this report to perform analysis on sales not "
|
||||
"having invoiced yet. If you want to analyse your turnover, you should use "
|
||||
"the Invoice Analysis report in the Accounting application."
|
||||
msgstr ""
|
||||
"Este informe realiza el análisis de sus pedidos de venta. El análisis "
|
||||
"comprueba su ingresos por ventas y los ordena por diferentes criterios de "
|
||||
"agrupación (comercial, cliente, producto, etc). Use este informe para "
|
||||
"analizar las ventas que aún no han sido facturadas. Si lo que quiere "
|
||||
"analizar es su volumen de negocios, debería usar el informe de análisis de "
|
||||
"facturas en la aplicación de Contabilidad."
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_uom
|
||||
msgid "Unit of Measure"
|
||||
msgstr "Unidad de medida"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__price_subtotal
|
||||
msgid "Untaxed total delivered"
|
||||
msgstr "Base imponible entregada"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__volume
|
||||
msgid "Volume"
|
||||
msgstr "Volumen"
|
||||
|
|
@ -0,0 +1,280 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * sale_report_delivered
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 16.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2025-03-05 12: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.10.2\n"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__nbr
|
||||
msgid "# of Lines"
|
||||
msgstr "N° di righe"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__amount_cost
|
||||
msgid "Amount cost"
|
||||
msgstr "Costo del valore"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__analytic_account_id
|
||||
msgid "Analytic Account"
|
||||
msgstr "Conto analitico"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__campaign_id
|
||||
msgid "Campaign"
|
||||
msgstr "Campagna"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__cancel
|
||||
msgid "Cancelled"
|
||||
msgstr "Annullata"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__company_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Company"
|
||||
msgstr "Azienda"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__partner_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Customer"
|
||||
msgstr "Cliente"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__country_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Customer Country"
|
||||
msgstr "Nazione cliente"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__commercial_partner_id
|
||||
msgid "Customer Entity"
|
||||
msgstr "Entità cliente"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__industry_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Customer Industry"
|
||||
msgstr "Settore cliente"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__date
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nome visualizzato"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__draft
|
||||
msgid "Draft Quotation"
|
||||
msgstr "Preventivo bozza"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Extended Filters"
|
||||
msgstr "Filtri estesi"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__weight
|
||||
msgid "Gross Weight"
|
||||
msgstr "Peso lordo"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Group By"
|
||||
msgstr "Raggruppa per"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Ultima modifica il"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__margin
|
||||
msgid "Margin delivered"
|
||||
msgstr "Margine consegnato"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__margin_percent
|
||||
msgid "Margin delivered(%)"
|
||||
msgstr "Margine consegnato (%)"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__medium_id
|
||||
msgid "Medium"
|
||||
msgstr "Medio"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__order_id
|
||||
msgid "Order"
|
||||
msgstr "Ordine"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__name
|
||||
msgid "Order Reference"
|
||||
msgstr "Riferimento ordine"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__picking_id
|
||||
msgid "Picking"
|
||||
msgstr "Prelievo"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__pricelist_id
|
||||
msgid "Pricelist"
|
||||
msgstr "Listino prezzi"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_tmpl_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Product"
|
||||
msgstr "Prodotto"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__categ_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Product Category"
|
||||
msgstr "Categoria prodotto"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_id
|
||||
msgid "Product Variant"
|
||||
msgstr "Variante prodotto"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_uom_qty
|
||||
msgid "Qty"
|
||||
msgstr "Q.tà"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__sent
|
||||
msgid "Quotation Sent"
|
||||
msgstr "Preventivo inviato"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Quotations"
|
||||
msgstr "Preventivi"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_pivot
|
||||
msgid "Sales Analysis"
|
||||
msgstr "Analisi delle vendite"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.actions.act_window,name:sale_report_delivered.action_sale_report_delivered
|
||||
msgid "Sales Analysis From Deliveries"
|
||||
msgstr "Analisi vendite dalle consegne"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model,name:sale_report_delivered.model_sale_report_delivered
|
||||
msgid "Sales Delivered Analysis Report"
|
||||
msgstr "Resoconto analisi vendite consegnate"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__done
|
||||
msgid "Sales Done"
|
||||
msgstr "Vendita effettuata"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__sale
|
||||
msgid "Sales Order"
|
||||
msgstr "Ordine di vendita"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Sales Orders"
|
||||
msgstr "Ordini di vendita"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__team_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Sales Team"
|
||||
msgstr "Team di vendita"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_graph
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Sales analysis from deliveries"
|
||||
msgstr "Analisi vendite dalle consegne"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.ui.menu,name:sale_report_delivered.menu_report_sale_stock_delivery
|
||||
msgid "Sales from deliveries"
|
||||
msgstr "Vendite dalle consegne"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__user_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Salesperson"
|
||||
msgstr "Addetto vendite"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__user_from_partner_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Salesperson From Partner"
|
||||
msgstr "Venditore dal partner"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__source_id
|
||||
msgid "Source"
|
||||
msgstr "Origine"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__state
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Status"
|
||||
msgstr "Stato"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.actions.act_window,help:sale_report_delivered.action_sale_report_delivered
|
||||
msgid ""
|
||||
"This report performs analysis on your sales orders from deliveries. Analysis "
|
||||
"check your sales revenues and sort it by different group criteria (salesman, "
|
||||
"partner, product, etc.) Use this report to perform analysis on sales not "
|
||||
"having invoiced yet. If you want to analyse your turnover, you should use "
|
||||
"the Invoice Analysis report in the Accounting application."
|
||||
msgstr ""
|
||||
"Questo resoconto effettua l'analisi sugli ordini di vendita dalle consegne. "
|
||||
"L'analisi controlla i ricavi delle vendite e li ordina per diversi gruppi di "
|
||||
"criteri (addetto vendita, partner, prodotto, ecc.). Utilizzare questo "
|
||||
"resoconto per effettuare analisi sulle vendite che non sono ancora state "
|
||||
"fatturate. Se si vuole analizzare il fatturato, si deve usare il resoconto "
|
||||
"analisi fatture nell'applicazione contabilità."
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_uom
|
||||
msgid "Unit of Measure"
|
||||
msgstr "Unità di misura"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__price_subtotal
|
||||
msgid "Untaxed total delivered"
|
||||
msgstr "Totale consegnato tasse escluse"
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__volume
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
|
@ -0,0 +1,271 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * sale_report_delivered
|
||||
#
|
||||
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: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__nbr
|
||||
msgid "# of Lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__amount_cost
|
||||
msgid "Amount cost"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__analytic_account_id
|
||||
msgid "Analytic Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__campaign_id
|
||||
msgid "Campaign"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__cancel
|
||||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__company_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__partner_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Customer"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__country_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Customer Country"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__commercial_partner_id
|
||||
msgid "Customer Entity"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__industry_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Customer Industry"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__date
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__draft
|
||||
msgid "Draft Quotation"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Extended Filters"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__weight
|
||||
msgid "Gross Weight"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Group By"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__margin
|
||||
msgid "Margin delivered"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__margin_percent
|
||||
msgid "Margin delivered(%)"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__medium_id
|
||||
msgid "Medium"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__order_id
|
||||
msgid "Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__name
|
||||
msgid "Order Reference"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__picking_id
|
||||
msgid "Picking"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__pricelist_id
|
||||
msgid "Pricelist"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_tmpl_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__categ_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Product Category"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_id
|
||||
msgid "Product Variant"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_uom_qty
|
||||
msgid "Qty"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__sent
|
||||
msgid "Quotation Sent"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Quotations"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_pivot
|
||||
msgid "Sales Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.actions.act_window,name:sale_report_delivered.action_sale_report_delivered
|
||||
msgid "Sales Analysis From Deliveries"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model,name:sale_report_delivered.model_sale_report_delivered
|
||||
msgid "Sales Delivered Analysis Report"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__done
|
||||
msgid "Sales Done"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields.selection,name:sale_report_delivered.selection__sale_report_delivered__state__sale
|
||||
msgid "Sales Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Sales Orders"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__team_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Sales Team"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_graph
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Sales analysis from deliveries"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.ui.menu,name:sale_report_delivered.menu_report_sale_stock_delivery
|
||||
msgid "Sales from deliveries"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__user_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Salesperson"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__user_from_partner_id
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Salesperson From Partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__source_id
|
||||
msgid "Source"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__state
|
||||
#: model_terms:ir.ui.view,arch_db:sale_report_delivered.view_sale_report_delivered_search
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model_terms:ir.actions.act_window,help:sale_report_delivered.action_sale_report_delivered
|
||||
msgid ""
|
||||
"This report performs analysis on your sales orders from deliveries. Analysis"
|
||||
" check your sales revenues and sort it by different group criteria "
|
||||
"(salesman, partner, product, etc.) Use this report to perform analysis on "
|
||||
"sales not having invoiced yet. If you want to analyse your turnover, you "
|
||||
"should use the Invoice Analysis report in the Accounting application."
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__product_uom
|
||||
msgid "Unit of Measure"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__price_subtotal
|
||||
msgid "Untaxed total delivered"
|
||||
msgstr ""
|
||||
|
||||
#. module: sale_report_delivered
|
||||
#: model:ir.model.fields,field_description:sale_report_delivered.field_sale_report_delivered__volume
|
||||
msgid "Volume"
|
||||
msgstr ""
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
* `Tecnativa <https://www.tecnativa.com>`_:
|
||||
|
||||
* Sergio Teruel
|
||||
* Carlos Dauden
|
||||
|
||||
* Eduardo de Miguel (`Moduon <https://www.moduon.team/>`__)
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Adds subtotal price based on the delivered quantities field to the
|
||||
*Sales Report*.
|
||||
|
||||
This module takes in consideration Outgoing, Returns and Dropship.
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
Go to *Sales > Reporting > Sales from deliveries* and you'll find the new *Total Price
|
||||
Delivered* measure.
|
||||
|
|
@ -0,0 +1 @@
|
|||
from . import sale_report
|
||||
|
|
@ -0,0 +1,322 @@
|
|||
# Copyright 2021 Tecnativa - Sergio Teruel
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from psycopg2.extensions import AsIs
|
||||
|
||||
from odoo import api, fields, models, tools
|
||||
|
||||
|
||||
class SaleReportDeliverd(models.Model):
|
||||
_name = "sale.report.delivered"
|
||||
_description = "Sales Delivered Analysis Report"
|
||||
_auto = False
|
||||
_rec_name = "date"
|
||||
_order = "date desc"
|
||||
|
||||
name = fields.Char("Order Reference", readonly=True)
|
||||
date = fields.Datetime(readonly=True)
|
||||
product_id = fields.Many2one("product.product", "Product Variant", readonly=True)
|
||||
product_uom = fields.Many2one("uom.uom", "Unit of Measure", readonly=True)
|
||||
product_uom_qty = fields.Float("Qty", readonly=True)
|
||||
partner_id = fields.Many2one("res.partner", "Customer", readonly=True)
|
||||
company_id = fields.Many2one("res.company", "Company", readonly=True)
|
||||
user_from_partner_id = fields.Many2one(
|
||||
"res.users", "Salesperson From Partner", readonly=True
|
||||
)
|
||||
user_id = fields.Many2one("res.users", "Salesperson", readonly=True)
|
||||
price_subtotal = fields.Float("Untaxed total delivered", readonly=True)
|
||||
product_tmpl_id = fields.Many2one("product.template", "Product", readonly=True)
|
||||
categ_id = fields.Many2one("product.category", "Product Category", readonly=True)
|
||||
nbr = fields.Integer("# of Lines", readonly=True)
|
||||
pricelist_id = fields.Many2one("product.pricelist", "Pricelist", readonly=True)
|
||||
analytic_account_id = fields.Many2one(
|
||||
"account.analytic.account", "Analytic Account", readonly=True
|
||||
)
|
||||
team_id = fields.Many2one("crm.team", "Sales Team", readonly=True)
|
||||
country_id = fields.Many2one("res.country", "Customer Country", readonly=True)
|
||||
industry_id = fields.Many2one(
|
||||
"res.partner.industry", "Customer Industry", readonly=True
|
||||
)
|
||||
commercial_partner_id = fields.Many2one(
|
||||
"res.partner", "Customer Entity", readonly=True
|
||||
)
|
||||
state = fields.Selection(
|
||||
[
|
||||
("draft", "Draft Quotation"),
|
||||
("sent", "Quotation Sent"),
|
||||
("sale", "Sales Order"),
|
||||
("done", "Sales Done"),
|
||||
("cancel", "Cancelled"),
|
||||
],
|
||||
string="Status",
|
||||
readonly=True,
|
||||
)
|
||||
weight = fields.Float("Gross Weight", readonly=True)
|
||||
volume = fields.Float(readonly=True)
|
||||
campaign_id = fields.Many2one("utm.campaign", "Campaign")
|
||||
medium_id = fields.Many2one("utm.medium", "Medium")
|
||||
source_id = fields.Many2one("utm.source", "Source")
|
||||
order_id = fields.Many2one("sale.order", "Order", readonly=True)
|
||||
picking_id = fields.Many2one("stock.picking", "Picking", readonly=True)
|
||||
amount_cost = fields.Float("Amount cost", readonly=True)
|
||||
margin = fields.Float("Margin delivered", readonly=True)
|
||||
margin_percent = fields.Float(string="Margin delivered(%)", readonly=True)
|
||||
|
||||
def _select(self):
|
||||
select_str = """
|
||||
SELECT
|
||||
min(sub.id) AS id,
|
||||
sub.product_id,
|
||||
sub.template_name,
|
||||
sub.product_uom,
|
||||
count(*) as nbr,
|
||||
sub.order_name as name,
|
||||
sub.date,
|
||||
sub.state,
|
||||
sub.partner_id,
|
||||
sub.user_from_partner_id,
|
||||
sub.user_id,
|
||||
sub.company_id,
|
||||
sub.campaign_id,
|
||||
sub.medium_id,
|
||||
sub.source_id,
|
||||
sub.categ_id,
|
||||
sub.pricelist_id,
|
||||
sub.analytic_account_id ,
|
||||
sub.team_id,
|
||||
sub.product_tmpl_id,
|
||||
sub.country_id,
|
||||
sub.industry_id,
|
||||
sub.commercial_partner_id,
|
||||
sum(signed_qty * sub.weight) as weight,
|
||||
sum(signed_qty * sub.volume) as volume,
|
||||
sub.order_id,
|
||||
sub.picking_id,
|
||||
sum(signed_qty * unsigned_product_uom_qty) AS product_uom_qty,
|
||||
sum(signed_qty * unsigned_price_subtotal) AS price_subtotal,
|
||||
CASE
|
||||
WHEN BOOL_OR(sub.amount_cost is not NULL)
|
||||
THEN sum(-sub.amount_cost)
|
||||
ELSE sum(
|
||||
signed_qty * ROUND(
|
||||
sub.unsigned_purchase_price * unsigned_product_uom_qty,
|
||||
sub.decimal_places
|
||||
)
|
||||
)
|
||||
END AS amount_cost,
|
||||
CASE
|
||||
WHEN BOOL_OR(sub.amount_cost is not NULL)
|
||||
THEN sum(
|
||||
signed_qty * unsigned_price_subtotal + COALESCE(
|
||||
sub.amount_cost, 0.0
|
||||
)
|
||||
)
|
||||
ELSE sum(
|
||||
signed_qty * unsigned_price_subtotal - (
|
||||
signed_qty * ROUND(
|
||||
sub.unsigned_purchase_price * unsigned_product_uom_qty,
|
||||
sub.decimal_places
|
||||
)
|
||||
)
|
||||
)
|
||||
END AS margin,
|
||||
0 AS margin_percent
|
||||
"""
|
||||
return select_str
|
||||
|
||||
def _sub_select_signed_qty(self):
|
||||
"""Sub select to calculate the cases for the signed quantity"""
|
||||
return """
|
||||
WHEN source_location.usage = 'internal' AND dest_location.usage = 'customer'
|
||||
THEN 1
|
||||
WHEN source_location.usage = 'customer' AND dest_location.usage = 'internal'
|
||||
THEN -1
|
||||
WHEN source_location.usage = 'supplier' AND dest_location.usage = 'customer'
|
||||
THEN 1
|
||||
WHEN source_location.usage = 'customer' AND dest_location.usage = 'supplier'
|
||||
THEN -1
|
||||
"""
|
||||
|
||||
def _sub_select(self):
|
||||
sub_select_str = """
|
||||
SELECT
|
||||
sol.id AS id,
|
||||
sol.product_id as product_id,
|
||||
t.name as template_name,
|
||||
t.uom_id as product_uom,
|
||||
cur.decimal_places,
|
||||
CASE
|
||||
WHEN dest_location.usage IS NULL
|
||||
THEN 1
|
||||
{sub_select_signed_qty}
|
||||
ELSE 0
|
||||
END AS signed_qty,
|
||||
(CASE
|
||||
WHEN t.type IN ('product', 'consu')
|
||||
THEN ABS(COALESCE(-svl.quantity, sm.quantity_done, 0.0))
|
||||
ELSE sol.product_uom_qty END
|
||||
) / u.factor * u2.factor as unsigned_product_uom_qty,
|
||||
ROUND(ABS(COALESCE(
|
||||
-svl.quantity * sol.price_reduce,
|
||||
sm.quantity_done * sol.price_reduce,
|
||||
sol.price_subtotal)) /
|
||||
CASE COALESCE(s.currency_rate, 0)
|
||||
WHEN 0 THEN 1.0 ELSE s.currency_rate END, cur.decimal_places)
|
||||
as unsigned_price_subtotal,
|
||||
s.name as order_name,
|
||||
COALESCE(sm.date, s.effective_date, s.date_order) as date,
|
||||
s.state as state,
|
||||
s.partner_id as partner_id,
|
||||
s.user_id as user_id,
|
||||
s.company_id as company_id,
|
||||
s.campaign_id as campaign_id,
|
||||
s.medium_id as medium_id,
|
||||
s.source_id as source_id,
|
||||
t.categ_id as categ_id,
|
||||
s.pricelist_id as pricelist_id,
|
||||
s.analytic_account_id as analytic_account_id,
|
||||
s.team_id as team_id,
|
||||
p.product_tmpl_id,
|
||||
partner.user_id as user_from_partner_id,
|
||||
partner.country_id as country_id,
|
||||
partner.industry_id as industry_id,
|
||||
partner.commercial_partner_id as commercial_partner_id,
|
||||
p.weight * sm.quantity_done / u.factor * u2.factor as weight,
|
||||
p.volume * sm.quantity_done / u.factor * u2.factor as volume,
|
||||
s.id as order_id,
|
||||
sp.id as picking_id,
|
||||
sol.purchase_price AS unsigned_purchase_price,
|
||||
ROUND(svl.value, cur.decimal_places) AS amount_cost
|
||||
""".format(
|
||||
sub_select_signed_qty=self._sub_select_signed_qty()
|
||||
)
|
||||
return sub_select_str
|
||||
|
||||
def _from(self):
|
||||
from_str = """
|
||||
FROM sale_order_line sol
|
||||
LEFT JOIN stock_move sm ON (sol.id = sm.sale_line_id)
|
||||
join sale_order s on (sol.order_id=s.id)
|
||||
join res_partner partner on s.partner_id = partner.id
|
||||
left join product_product p on (sol.product_id=p.id)
|
||||
left join product_template t on (p.product_tmpl_id=t.id)
|
||||
left join uom_uom u on (u.id=sol.product_uom)
|
||||
left join uom_uom u2 on (u2.id=t.uom_id)
|
||||
left join product_pricelist pp on (s.pricelist_id = pp.id)
|
||||
LEFT JOIN
|
||||
stock_location dest_location ON sm.location_dest_id = dest_location.id
|
||||
LEFT JOIN
|
||||
stock_location source_location ON sm.location_id = source_location.id
|
||||
LEFT JOIN stock_valuation_layer svl ON svl.stock_move_id = sm.id
|
||||
LEFT JOIN stock_picking sp ON sp.id = sm.picking_id
|
||||
LEFT JOIN res_currency as cur ON cur.id = sol.currency_id
|
||||
"""
|
||||
return from_str
|
||||
|
||||
def _sub_where(self):
|
||||
"""
|
||||
Take into account only stock moves from:
|
||||
|
||||
Outgoing: Internal to Customer
|
||||
Returns: Customer to Internal + to_refund
|
||||
Dropship: Supplier to Customer
|
||||
Dropship return: Customer to Supplier
|
||||
"""
|
||||
return """
|
||||
(
|
||||
source_location.usage = 'internal' AND
|
||||
dest_location.usage = 'customer'
|
||||
) OR
|
||||
(
|
||||
source_location.usage = 'customer' AND
|
||||
dest_location.usage = 'internal' AND
|
||||
sm.to_refund
|
||||
) OR
|
||||
(
|
||||
source_location.usage = 'supplier' AND
|
||||
dest_location.usage = 'customer' AND
|
||||
svl.quantity < 0
|
||||
) OR
|
||||
(
|
||||
source_location.usage = 'customer' AND
|
||||
dest_location.usage = 'supplier' AND
|
||||
svl.quantity > 0
|
||||
)
|
||||
"""
|
||||
|
||||
def _where(self):
|
||||
"""Where clause with only done mvoes or without state"""
|
||||
return """
|
||||
WHERE (sm.quantity_done <> 0.0) AND
|
||||
(sm.state = 'done' OR sm.state IS NULL) AND
|
||||
({sub_where})
|
||||
""".format(
|
||||
sub_where=self._sub_where()
|
||||
)
|
||||
|
||||
def _group_by(self):
|
||||
group_by_str = """
|
||||
GROUP BY sub.product_id,
|
||||
sub.template_name,
|
||||
sub.order_id,
|
||||
sub.picking_id,
|
||||
sub.product_uom,
|
||||
sub.categ_id,
|
||||
sub.order_name,
|
||||
sub.date,
|
||||
sub.partner_id,
|
||||
sub.user_from_partner_id,
|
||||
sub.user_id,
|
||||
sub.state,
|
||||
sub.company_id,
|
||||
sub.campaign_id,
|
||||
sub.medium_id,
|
||||
sub.source_id,
|
||||
sub.pricelist_id,
|
||||
sub.analytic_account_id,
|
||||
sub.team_id,
|
||||
sub.product_tmpl_id,
|
||||
sub.country_id,
|
||||
sub.industry_id,
|
||||
sub.commercial_partner_id
|
||||
"""
|
||||
return group_by_str
|
||||
|
||||
def init(self):
|
||||
tools.drop_view_if_exists(self.env.cr, self._table)
|
||||
self.env.cr.execute(
|
||||
"""CREATE or REPLACE VIEW %s AS (
|
||||
%s
|
||||
FROM (
|
||||
%s %s %s
|
||||
) AS sub %s)""",
|
||||
(
|
||||
AsIs(self._table),
|
||||
AsIs(self._select()),
|
||||
AsIs(self._sub_select()),
|
||||
AsIs(self._from()),
|
||||
AsIs(self._where()),
|
||||
AsIs(self._group_by()),
|
||||
),
|
||||
)
|
||||
|
||||
@api.model
|
||||
def read_group(
|
||||
self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True
|
||||
):
|
||||
res = super().read_group(
|
||||
domain,
|
||||
fields,
|
||||
groupby,
|
||||
offset=offset,
|
||||
limit=limit,
|
||||
orderby=orderby,
|
||||
lazy=lazy,
|
||||
)
|
||||
if "margin_percent:sum" not in fields:
|
||||
return res
|
||||
full_fields = all(x in fields for x in {"price_subtotal:sum", "margin:sum"})
|
||||
for line in res:
|
||||
if full_fields and line["price_subtotal"]:
|
||||
line["margin_percent"] = (line["margin"] / line["price_subtotal"]) * 100
|
||||
return res
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_sale_report_delivered_manager,sale.report.delivered,model_sale_report_delivered,sales_team.group_sale_manager,1,1,1,1
|
||||
access_sale_report_delivered_salesman,sale.report.delivered,model_sale_report_delivered,sales_team.group_sale_salesman,1,0,0,0
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
<record id="sale_report_delivered_personal_rule" model="ir.rule">
|
||||
<field name="name">Personal Delivered Analysis</field>
|
||||
<field name="model_id" ref="model_sale_report_delivered" />
|
||||
<field
|
||||
name="domain_force"
|
||||
>['|',('user_id','=',user.id),('user_id','=',False)]</field>
|
||||
<field name="groups" eval="[(4, ref('sales_team.group_sale_salesman'))]" />
|
||||
</record>
|
||||
|
||||
<record id="sale_report_delivered_see_all_rule" model="ir.rule">
|
||||
<field name="name">All Delivered Analysis</field>
|
||||
<field name="model_id" ref="model_sale_report_delivered" />
|
||||
<field name="domain_force">[(1, '=', 1)]</field>
|
||||
<field
|
||||
name="groups"
|
||||
eval="[(4, ref('sales_team.group_sale_salesman_all_leads'))]"
|
||||
/>
|
||||
</record>
|
||||
</odoo>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
|
|
@ -0,0 +1,442 @@
|
|||
<!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>Sale Report Delivered</title>
|
||||
<style type="text/css">
|
||||
|
||||
/*
|
||||
:Author: David Goodger (goodger@python.org)
|
||||
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
|
||||
:Copyright: This stylesheet has been placed in the public domain.
|
||||
|
||||
Default cascading style sheet for the HTML output of Docutils.
|
||||
Despite the name, some widely supported CSS2 features are used.
|
||||
|
||||
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
|
||||
customize this style sheet.
|
||||
*/
|
||||
|
||||
/* used to remove borders from tables and images */
|
||||
.borderless, table.borderless td, table.borderless th {
|
||||
border: 0 }
|
||||
|
||||
table.borderless td, table.borderless th {
|
||||
/* Override padding for "table.docutils td" with "! important".
|
||||
The right padding separates the table cells. */
|
||||
padding: 0 0.5em 0 0 ! important }
|
||||
|
||||
.first {
|
||||
/* Override more specific margin styles with "! important". */
|
||||
margin-top: 0 ! important }
|
||||
|
||||
.last, .with-subtitle {
|
||||
margin-bottom: 0 ! important }
|
||||
|
||||
.hidden {
|
||||
display: none }
|
||||
|
||||
.subscript {
|
||||
vertical-align: sub;
|
||||
font-size: smaller }
|
||||
|
||||
.superscript {
|
||||
vertical-align: super;
|
||||
font-size: smaller }
|
||||
|
||||
a.toc-backref {
|
||||
text-decoration: none ;
|
||||
color: black }
|
||||
|
||||
blockquote.epigraph {
|
||||
margin: 2em 5em ; }
|
||||
|
||||
dl.docutils dd {
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Uncomment (and remove this text!) to get bold-faced definition list terms
|
||||
dl.docutils dt {
|
||||
font-weight: bold }
|
||||
*/
|
||||
|
||||
div.abstract {
|
||||
margin: 2em 5em }
|
||||
|
||||
div.abstract p.topic-title {
|
||||
font-weight: bold ;
|
||||
text-align: center }
|
||||
|
||||
div.admonition, div.attention, div.caution, div.danger, div.error,
|
||||
div.hint, div.important, div.note, div.tip, div.warning {
|
||||
margin: 2em ;
|
||||
border: medium outset ;
|
||||
padding: 1em }
|
||||
|
||||
div.admonition p.admonition-title, div.hint p.admonition-title,
|
||||
div.important p.admonition-title, div.note p.admonition-title,
|
||||
div.tip p.admonition-title {
|
||||
font-weight: bold ;
|
||||
font-family: sans-serif }
|
||||
|
||||
div.attention p.admonition-title, div.caution p.admonition-title,
|
||||
div.danger p.admonition-title, div.error p.admonition-title,
|
||||
div.warning p.admonition-title, .code .error {
|
||||
color: red ;
|
||||
font-weight: bold ;
|
||||
font-family: sans-serif }
|
||||
|
||||
/* Uncomment (and remove this text!) to get reduced vertical space in
|
||||
compound paragraphs.
|
||||
div.compound .compound-first, div.compound .compound-middle {
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
div.compound .compound-last, div.compound .compound-middle {
|
||||
margin-top: 0.5em }
|
||||
*/
|
||||
|
||||
div.dedication {
|
||||
margin: 2em 5em ;
|
||||
text-align: center ;
|
||||
font-style: italic }
|
||||
|
||||
div.dedication p.topic-title {
|
||||
font-weight: bold ;
|
||||
font-style: normal }
|
||||
|
||||
div.figure {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
div.footer, div.header {
|
||||
clear: both;
|
||||
font-size: smaller }
|
||||
|
||||
div.line-block {
|
||||
display: block ;
|
||||
margin-top: 1em ;
|
||||
margin-bottom: 1em }
|
||||
|
||||
div.line-block div.line-block {
|
||||
margin-top: 0 ;
|
||||
margin-bottom: 0 ;
|
||||
margin-left: 1.5em }
|
||||
|
||||
div.sidebar {
|
||||
margin: 0 0 0.5em 1em ;
|
||||
border: medium outset ;
|
||||
padding: 1em ;
|
||||
background-color: #ffffee ;
|
||||
width: 40% ;
|
||||
float: right ;
|
||||
clear: right }
|
||||
|
||||
div.sidebar p.rubric {
|
||||
font-family: sans-serif ;
|
||||
font-size: medium }
|
||||
|
||||
div.system-messages {
|
||||
margin: 5em }
|
||||
|
||||
div.system-messages h1 {
|
||||
color: red }
|
||||
|
||||
div.system-message {
|
||||
border: medium outset ;
|
||||
padding: 1em }
|
||||
|
||||
div.system-message p.system-message-title {
|
||||
color: red ;
|
||||
font-weight: bold }
|
||||
|
||||
div.topic {
|
||||
margin: 2em }
|
||||
|
||||
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
|
||||
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
|
||||
margin-top: 0.4em }
|
||||
|
||||
h1.title {
|
||||
text-align: center }
|
||||
|
||||
h2.subtitle {
|
||||
text-align: center }
|
||||
|
||||
hr.docutils {
|
||||
width: 75% }
|
||||
|
||||
img.align-left, .figure.align-left, object.align-left, table.align-left {
|
||||
clear: left ;
|
||||
float: left ;
|
||||
margin-right: 1em }
|
||||
|
||||
img.align-right, .figure.align-right, object.align-right, table.align-right {
|
||||
clear: right ;
|
||||
float: right ;
|
||||
margin-left: 1em }
|
||||
|
||||
img.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.align-center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left }
|
||||
|
||||
.align-center {
|
||||
clear: both ;
|
||||
text-align: center }
|
||||
|
||||
.align-right {
|
||||
text-align: right }
|
||||
|
||||
/* reset inner alignment in figures */
|
||||
div.align-right {
|
||||
text-align: inherit }
|
||||
|
||||
/* div.align-center * { */
|
||||
/* text-align: left } */
|
||||
|
||||
.align-top {
|
||||
vertical-align: top }
|
||||
|
||||
.align-middle {
|
||||
vertical-align: middle }
|
||||
|
||||
.align-bottom {
|
||||
vertical-align: bottom }
|
||||
|
||||
ol.simple, ul.simple {
|
||||
margin-bottom: 1em }
|
||||
|
||||
ol.arabic {
|
||||
list-style: decimal }
|
||||
|
||||
ol.loweralpha {
|
||||
list-style: lower-alpha }
|
||||
|
||||
ol.upperalpha {
|
||||
list-style: upper-alpha }
|
||||
|
||||
ol.lowerroman {
|
||||
list-style: lower-roman }
|
||||
|
||||
ol.upperroman {
|
||||
list-style: upper-roman }
|
||||
|
||||
p.attribution {
|
||||
text-align: right ;
|
||||
margin-left: 50% }
|
||||
|
||||
p.caption {
|
||||
font-style: italic }
|
||||
|
||||
p.credits {
|
||||
font-style: italic ;
|
||||
font-size: smaller }
|
||||
|
||||
p.label {
|
||||
white-space: nowrap }
|
||||
|
||||
p.rubric {
|
||||
font-weight: bold ;
|
||||
font-size: larger ;
|
||||
color: maroon ;
|
||||
text-align: center }
|
||||
|
||||
p.sidebar-title {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold ;
|
||||
font-size: larger }
|
||||
|
||||
p.sidebar-subtitle {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold }
|
||||
|
||||
p.topic-title {
|
||||
font-weight: bold }
|
||||
|
||||
pre.address {
|
||||
margin-bottom: 0 ;
|
||||
margin-top: 0 ;
|
||||
font: inherit }
|
||||
|
||||
pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
||||
margin-left: 2em ;
|
||||
margin-right: 2em }
|
||||
|
||||
pre.code .ln { color: gray; } /* line numbers */
|
||||
pre.code, code { background-color: #eeeeee }
|
||||
pre.code .comment, code .comment { color: #5C6576 }
|
||||
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
||||
pre.code .literal.string, code .literal.string { color: #0C5404 }
|
||||
pre.code .name.builtin, code .name.builtin { color: #352B84 }
|
||||
pre.code .deleted, code .deleted { background-color: #DEB0A1}
|
||||
pre.code .inserted, code .inserted { background-color: #A3D289}
|
||||
|
||||
span.classifier {
|
||||
font-family: sans-serif ;
|
||||
font-style: oblique }
|
||||
|
||||
span.classifier-delimiter {
|
||||
font-family: sans-serif ;
|
||||
font-weight: bold }
|
||||
|
||||
span.interpreted {
|
||||
font-family: sans-serif }
|
||||
|
||||
span.option {
|
||||
white-space: nowrap }
|
||||
|
||||
span.pre {
|
||||
white-space: pre }
|
||||
|
||||
span.problematic, pre.problematic {
|
||||
color: red }
|
||||
|
||||
span.section-subtitle {
|
||||
/* font-size relative to parent (h1..h6 element) */
|
||||
font-size: 80% }
|
||||
|
||||
table.citation {
|
||||
border-left: solid 1px gray;
|
||||
margin-left: 1px }
|
||||
|
||||
table.docinfo {
|
||||
margin: 2em 4em }
|
||||
|
||||
table.docutils {
|
||||
margin-top: 0.5em ;
|
||||
margin-bottom: 0.5em }
|
||||
|
||||
table.footnote {
|
||||
border-left: solid 1px black;
|
||||
margin-left: 1px }
|
||||
|
||||
table.docutils td, table.docutils th,
|
||||
table.docinfo td, table.docinfo th {
|
||||
padding-left: 0.5em ;
|
||||
padding-right: 0.5em ;
|
||||
vertical-align: top }
|
||||
|
||||
table.docutils th.field-name, table.docinfo th.docinfo-name {
|
||||
font-weight: bold ;
|
||||
text-align: left ;
|
||||
white-space: nowrap ;
|
||||
padding-left: 0 }
|
||||
|
||||
/* "booktabs" style (no vertical lines) */
|
||||
table.docutils.booktabs {
|
||||
border: 0px;
|
||||
border-top: 2px solid;
|
||||
border-bottom: 2px solid;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table.docutils.booktabs * {
|
||||
border: 0px;
|
||||
}
|
||||
table.docutils.booktabs th {
|
||||
border-bottom: thin solid;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
|
||||
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
|
||||
font-size: 100% }
|
||||
|
||||
ul.auto-toc {
|
||||
list-style-type: none }
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="document" id="sale-report-delivered">
|
||||
<h1 class="title">Sale Report Delivered</h1>
|
||||
|
||||
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! This file is generated by oca-gen-addon-readme !!
|
||||
!! changes will be overwritten. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
!! source digest: sha256:257e0251c07649aad140037e63ec2f390ee43cb80001ab0057842da5581e1192
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
|
||||
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/sale-reporting/tree/16.0/sale_report_delivered"><img alt="OCA/sale-reporting" src="https://img.shields.io/badge/github-OCA%2Fsale--reporting-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/sale-reporting-16-0/sale-reporting-16-0-sale_report_delivered"><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/sale-reporting&target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
|
||||
<p>Adds subtotal price based on the delivered quantities field to the
|
||||
<em>Sales Report</em>.</p>
|
||||
<p>This module takes in consideration Outgoing, Returns and Dropship.</p>
|
||||
<p><strong>Table of contents</strong></p>
|
||||
<div class="contents local topic" id="contents">
|
||||
<ul class="simple">
|
||||
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
|
||||
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
|
||||
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
|
||||
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
|
||||
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
|
||||
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="usage">
|
||||
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
|
||||
<p>Go to <em>Sales > Reporting > Sales from deliveries</em> and you’ll find the new <em>Total Price
|
||||
Delivered</em> measure.</p>
|
||||
</div>
|
||||
<div class="section" id="bug-tracker">
|
||||
<h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
|
||||
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/sale-reporting/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/sale-reporting/issues/new?body=module:%20sale_report_delivered%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
|
||||
<p>Do not contact contributors directly about support or help with technical issues.</p>
|
||||
</div>
|
||||
<div class="section" id="credits">
|
||||
<h1><a class="toc-backref" href="#toc-entry-3">Credits</a></h1>
|
||||
<div class="section" id="authors">
|
||||
<h2><a class="toc-backref" href="#toc-entry-4">Authors</a></h2>
|
||||
<ul class="simple">
|
||||
<li>Tecnativa</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="contributors">
|
||||
<h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
|
||||
<ul>
|
||||
<li><p class="first"><a class="reference external" href="https://www.tecnativa.com">Tecnativa</a>:</p>
|
||||
<blockquote>
|
||||
<ul class="simple">
|
||||
<li>Sergio Teruel</li>
|
||||
<li>Carlos Dauden</li>
|
||||
</ul>
|
||||
</blockquote>
|
||||
</li>
|
||||
<li><p class="first">Eduardo de Miguel (<a class="reference external" href="https://www.moduon.team/">Moduon</a>)</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="maintainers">
|
||||
<h2><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h2>
|
||||
<p>This module is maintained by the OCA.</p>
|
||||
<a class="reference external image-reference" href="https://odoo-community.org">
|
||||
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
|
||||
</a>
|
||||
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||
mission is to support the collaborative development of Odoo features and
|
||||
promote its widespread use.</p>
|
||||
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
|
||||
<p><a class="reference external image-reference" href="https://github.com/sergio-teruel"><img alt="sergio-teruel" src="https://github.com/sergio-teruel.png?size=40px" /></a></p>
|
||||
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/sale-reporting/tree/16.0/sale_report_delivered">OCA/sale-reporting</a> project on GitHub.</p>
|
||||
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1 @@
|
|||
from . import test_sale_report_delivered
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
# Copyright 2022 Tecnativa - Víctor Martínez
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo.tests import Form, common, new_test_user
|
||||
from odoo.tests.common import users
|
||||
|
||||
|
||||
class TestSaleReportDeliveredBase(common.TransactionCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
cls.company = cls.env.company
|
||||
cls.admin = cls.env.ref("base.user_admin")
|
||||
cls.pricelist = cls.env["product.pricelist"].create(
|
||||
{
|
||||
"name": "Test pricelist",
|
||||
"currency_id": cls.company.currency_id.id,
|
||||
}
|
||||
)
|
||||
cls.partner = cls.env["res.partner"].create(
|
||||
{"name": "Test partner", "property_product_pricelist": cls.pricelist.id}
|
||||
)
|
||||
cls.user = new_test_user(
|
||||
cls.env,
|
||||
login="test_user-sale_report_delivered",
|
||||
name="test_user-one",
|
||||
groups="sales_team.group_sale_manager",
|
||||
)
|
||||
group_sale_manager = cls.env.ref("sales_team.group_sale_manager")
|
||||
group_sale_manager.write({"users": [(4, cls.admin.id)]})
|
||||
|
||||
cls.product = cls.env["product.product"].create(
|
||||
{"name": "Test product", "type": "product", "list_price": 10}
|
||||
)
|
||||
cls._create_stock_quant(cls, cls.product)
|
||||
cls.service = cls.env["product.product"].create(
|
||||
{"name": "Test service", "type": "service", "list_price": 10}
|
||||
)
|
||||
cls.order_1 = cls._create_order(cls, cls.product)
|
||||
cls.order_2 = cls._create_order(cls, cls.service)
|
||||
cls.orders = cls.order_1 + cls.order_2
|
||||
cls.orders.action_confirm()
|
||||
cls.orders.picking_ids.action_confirm()
|
||||
cls.orders.picking_ids.move_ids.write({"quantity_done": 1.0})
|
||||
cls.orders.picking_ids.button_validate()
|
||||
|
||||
def _create_stock_quant(self, product):
|
||||
res = product.action_update_quantity_on_hand()
|
||||
quant_form = Form(
|
||||
self.env["stock.quant"].with_context(**res["context"]),
|
||||
view="stock.view_stock_quant_tree_inventory_editable",
|
||||
)
|
||||
quant_form.inventory_quantity = 1
|
||||
quant_form.location_id = self.env.ref("stock.stock_location_stock")
|
||||
return quant_form.save()
|
||||
|
||||
def _create_order(self, product):
|
||||
order_form = Form(self.env["sale.order"])
|
||||
order_form.partner_id = self.partner
|
||||
with order_form.order_line.new() as line_form:
|
||||
line_form.product_id = product
|
||||
line_form.product_uom_qty = 1
|
||||
return order_form.save()
|
||||
|
||||
|
||||
class TestSaleReportDelivered(TestSaleReportDeliveredBase):
|
||||
@users("admin", "test_user-sale_report_delivered")
|
||||
def test_sale_report_delivered_misc(self):
|
||||
items = self.env["sale.report.delivered"].search(
|
||||
[("order_id", "in", self.orders.ids)]
|
||||
)
|
||||
self.assertIn(self.order_1, items.mapped("order_id"))
|
||||
self.assertNotIn(self.order_2, items.mapped("order_id"))
|
||||
self.assertIn(self.order_1.picking_ids, items.mapped("picking_id"))
|
||||
self.assertIn(self.product, items.mapped("product_id"))
|
||||
self.assertNotIn(self.service, items.mapped("product_id"))
|
||||
|
||||
def _test_sale_report_delivered_read_group(self):
|
||||
self.product.stock_valuation_layer_ids.value = 1
|
||||
res = self.env["sale.report.delivered"].read_group(
|
||||
domain=[("order_id", "in", self.orders.ids)],
|
||||
fields=[
|
||||
"order_id",
|
||||
"margin_percent:sum",
|
||||
"price_subtotal:sum",
|
||||
"margin:sum",
|
||||
],
|
||||
groupby=["order_id"],
|
||||
)
|
||||
self.assertAlmostEqual(res[0]["margin_percent"], 100.00)
|
||||
|
||||
@users("admin")
|
||||
def test_sale_report_delivered_read_group_admin(self):
|
||||
self._test_sale_report_delivered_read_group()
|
||||
|
||||
@users("test_user-sale_report_delivered")
|
||||
def test_sale_report_delivered_read_group(self):
|
||||
self._test_sale_report_delivered_read_group()
|
||||
|
|
@ -0,0 +1,150 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<odoo>
|
||||
|
||||
<record id="view_sale_report_delivered_pivot" model="ir.ui.view">
|
||||
<field name="name">sale.report.delivered.pivot</field>
|
||||
<field name="model">sale.report.delivered</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot string="Sales Analysis" disable_linking="True">
|
||||
<field name="date" interval="month" type="row" />
|
||||
<field name="product_uom_qty" type="measure" />
|
||||
<field name="price_subtotal" type="measure" />
|
||||
<field name="amount_cost" type="measure" />
|
||||
<field name="margin" type="measure" />
|
||||
</pivot>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_sale_report_delivered_graph" model="ir.ui.view">
|
||||
<field name="name">sale.report.delivered.graph</field>
|
||||
<field name="model">sale.report.delivered</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Sales analysis from deliveries" type="line">
|
||||
<field name="date" type="row" interval="day" />
|
||||
<field name="price_subtotal" type="measure" />
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_sale_report_delivered_search" model="ir.ui.view">
|
||||
<field name="name">sale.report.delivered.search</field>
|
||||
<field name="model">sale.report.delivered</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Sales analysis from deliveries">
|
||||
<field name="date" />
|
||||
<filter
|
||||
string="Date"
|
||||
name="year"
|
||||
invisible="0"
|
||||
date="date"
|
||||
default_period="this_year"
|
||||
/>
|
||||
<separator />
|
||||
<filter
|
||||
name="Quotations"
|
||||
string="Quotations"
|
||||
domain="[('state','in', ('draft', 'sent'))]"
|
||||
/>
|
||||
<filter
|
||||
name="Sales"
|
||||
string="Sales Orders"
|
||||
domain="[('state','not in',('draft', 'cancel', 'sent'))]"
|
||||
/>
|
||||
<separator />
|
||||
<field name="user_id" />
|
||||
<field name="user_from_partner_id" />
|
||||
<field name="team_id" />
|
||||
<field name="product_id" />
|
||||
<field name="categ_id" />
|
||||
<field name="partner_id" />
|
||||
<field name="country_id" />
|
||||
<field name="industry_id" />
|
||||
<group expand="0" string="Extended Filters">
|
||||
<field
|
||||
name="categ_id"
|
||||
filter_domain="[('categ_id', 'child_of', self)]"
|
||||
/>
|
||||
<field name="company_id" groups="base.group_multi_company" />
|
||||
</group>
|
||||
<group expand="1" string="Group By">
|
||||
<filter
|
||||
string="Salesperson"
|
||||
name="User"
|
||||
context="{'group_by':'user_id'}"
|
||||
/>
|
||||
<filter
|
||||
string="Salesperson From Partner"
|
||||
name="user_from_partner_id"
|
||||
context="{'group_by':'user_from_partner_id'}"
|
||||
/>
|
||||
<filter
|
||||
string="Sales Team"
|
||||
name="sales_channel"
|
||||
context="{'group_by':'team_id'}"
|
||||
/>
|
||||
<filter
|
||||
string="Customer"
|
||||
name="Customer"
|
||||
context="{'group_by':'partner_id'}"
|
||||
/>
|
||||
<filter
|
||||
string="Customer Country"
|
||||
name="country_id"
|
||||
context="{'group_by':'country_id'}"
|
||||
/>
|
||||
<filter
|
||||
string="Customer Industry"
|
||||
name="industry_id"
|
||||
context="{'group_by':'industry_id'}"
|
||||
/>
|
||||
<filter
|
||||
string="Product"
|
||||
name="Product"
|
||||
context="{'group_by':'product_id'}"
|
||||
/>
|
||||
<filter
|
||||
string="Product Category"
|
||||
name="Category"
|
||||
context="{'group_by':'categ_id'}"
|
||||
/>
|
||||
<filter
|
||||
name="status"
|
||||
string="Status"
|
||||
context="{'group_by':'state'}"
|
||||
/>
|
||||
<filter
|
||||
string="Company"
|
||||
name="company"
|
||||
groups="base.group_multi_company"
|
||||
context="{'group_by':'company_id'}"
|
||||
/>
|
||||
<separator />
|
||||
<filter string="Date" name="date" context="{'group_by':'date'}" />
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_sale_report_delivered" model="ir.actions.act_window">
|
||||
<field name="name">Sales Analysis From Deliveries</field>
|
||||
<field name="res_model">sale.report.delivered</field>
|
||||
<field name="view_mode">graph,pivot</field>
|
||||
<field name="view_id" /> <!-- force empty -->
|
||||
<field name="search_view_id" ref="view_sale_report_delivered_search" />
|
||||
<field
|
||||
name="context"
|
||||
>{'search_default_Sales':1, 'group_by_no_leaf':1,'group_by':[], 'search_default_year':1}</field>
|
||||
<field
|
||||
name="help"
|
||||
>This report performs analysis on your sales orders from deliveries. Analysis check your sales revenues and sort it by different group criteria (salesman, partner, product, etc.) Use this report to perform analysis on sales not having invoiced yet. If you want to analyse your turnover, you should use the Invoice Analysis report in the Accounting application.</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="menu_report_sale_stock_delivery"
|
||||
name="Sales from deliveries"
|
||||
action="action_sale_report_delivered"
|
||||
parent="sale.menu_sale_report"
|
||||
sequence="50"
|
||||
/>
|
||||
|
||||
</odoo>
|
||||
Loading…
Add table
Add a link
Reference in a new issue