Initial commit: OCA Workflow Process packages (456 packages)

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

View file

@ -0,0 +1,47 @@
# Sale payment sheet
Odoo addon: sale_payment_sheet
## Installation
```bash
pip install odoo-bringout-oca-sale-workflow-sale_payment_sheet
```
## Dependencies
This addon depends on:
- sale
- account
## Manifest Information
- **Name**: Sale payment sheet
- **Version**: 16.0.1.1.2
- **Category**: Account
- **License**: AGPL-3
- **Installable**: True
## Source
Based on [OCA/sale-workflow](https://github.com/OCA/sale-workflow) branch 16.0, addon `sale_payment_sheet`.
## License
This package maintains the original AGPL-3 license from the upstream Odoo project.
## Documentation
- Overview: doc/OVERVIEW.md
- Architecture: doc/ARCHITECTURE.md
- Models: doc/MODELS.md
- Controllers: doc/CONTROLLERS.md
- Wizards: doc/WIZARDS.md
- Reports: doc/REPORTS.md
- Security: doc/SECURITY.md
- Install: doc/INSTALL.md
- Usage: doc/USAGE.md
- Configuration: doc/CONFIGURATION.md
- Dependencies: doc/DEPENDENCIES.md
- Troubleshooting: doc/TROUBLESHOOTING.md
- FAQ: doc/FAQ.md

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,24 @@
# Reports
Report definitions and templates in sale_payment_sheet.
```mermaid
classDiagram
```
## Available Reports
### PDF/Document Reports
- **sale payment sheet summary** (PDF/Print)
## Report Files
- **report_sale_payment_sheet_summary.xml** (XML template/definition)
- **sale_payment_sheet_report.xml** (XML template/definition)
## Notes
- Named reports above are accessible through Odoo's reporting menu
- Python files define report logic and data processing
- XML files contain report templates, definitions, and formatting
- Reports are integrated with Odoo's printing and email systems

View file

@ -0,0 +1,41 @@
# Security
Access control and security definitions in sale_payment_sheet.
## Access Control Lists (ACLs)
Model access permissions defined in:
- **[ir.model.access.csv](../sale_payment_sheet/security/ir.model.access.csv)**
- 6 model access rules
## Record Rules
Row-level security rules defined in:
## Security Groups & Configuration
Security groups and permissions defined in:
- **[security.xml](../sale_payment_sheet/security/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_payment_sheet/security/ir.model.access.csv)**
- Model access permissions (CRUD rights)
- **[security.xml](../sale_payment_sheet/security/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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,43 @@
[project]
name = "odoo-bringout-oca-sale-workflow-sale_payment_sheet"
version = "16.0.0"
description = "Sale payment sheet - Allow to create invoice payments to commercial users without accounting permissions"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-ocb-sale>=16.0.0",
"odoo-bringout-oca-ocb-account>=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_payment_sheet"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]

View file

@ -0,0 +1,129 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association
==================
Sale payment sheet
==================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:fb9dad6b33efc14e8c268256dc5077a2bf2afe128589780461d84d04a2c71866
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github
:target: https://github.com/OCA/sale-workflow/tree/16.0/sale_payment_sheet
:alt: OCA/sale-workflow
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/sale-workflow-16-0/sale-workflow-16-0-sale_payment_sheet
: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-workflow&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows salesmen to register payments in a new document called payment sheet, accessible only with the sales permission.
This sheet includes the paid amount, and an optional reference to which invoice(s) is(are) being paid.
This payment sheet will generate a bank statement when confirmed.
**Table of contents**
.. contents::
:local:
Configuration
=============
To configure this module, you need to:
#. Go to Settings > User and Companies > Users
#. Select the allowed journals to register payments
Usage
=====
To use this module, you need to:
Create manual payment sheet:
#. Go to Sales > Orders > Payments.
#. Create new payment sheet.
You can pay invoices directly, to do this:
#. Go to Sales > Orders > Invoices.
#. Select some invoices to pay.
#. Click on Action > Sale invoice payment.
#. A wizard will be displayed and select journal and put amount that you want
to pay.
Payment one invoice:
#. Go to Sales > Orders > Invoices.
#. Enter to invoice form.
#. Click "register payment".
#. A wizard will be displayed and select journal and put amount that you want
to pay.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/sale-workflow/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/sale-workflow/issues/new?body=module:%20sale_payment_sheet%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/>`__:
* Carlos Dauden
* Sergio Teruel
* César A. Sánchez
* Carolina Fernandez
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-workflow <https://github.com/OCA/sale-workflow/tree/16.0/sale_payment_sheet>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

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

View file

@ -0,0 +1,29 @@
# Copyright 2020 Tecnativa - Carlos Dauden
# Copyright 2020 Tecnativa - Sergio Teruel
# Copyright 2023 Tecnativa - Carolina Fernandez
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Sale payment sheet",
"summary": "Allow to create invoice payments to commercial users without "
"accounting permissions",
"version": "16.0.1.1.2",
"development_status": "Beta",
"category": "Account",
"website": "https://github.com/OCA/sale-workflow",
"author": "Tecnativa, Odoo Community Association (OCA)",
"maintainers": ["sergio-teruel"],
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": ["sale", "account"],
"data": [
"security/ir.model.access.csv",
"security/security.xml",
"report/report_sale_payment_sheet_summary.xml",
"report/sale_payment_sheet_report.xml",
"views/res_users_views.xml",
"views/sale_payment_sheet_views.xml",
"views/sale_payment_sheet_menu.xml",
"wizards/sale_invoice_payment_view.xml",
],
}

View file

@ -0,0 +1,575 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_payment_sheet
#
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_payment_sheet
#: model:ir.actions.report,print_report_name:sale_payment_sheet.action_report_sale_payment_sheet
msgid "'Payment sheet %s' % (object.name)"
msgstr "'Lista plaćanja %s' % (object.name)"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "<span>Page: </span>"
msgstr "<span>Page: </span>"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "<span>Sheet: </span>"
msgstr "<span>Lista: </span>"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "<span>Total: </span>"
msgstr "<span>Ukupno: </span>"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_needaction
msgid "Action Needed"
msgstr "Potrebna akcija"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_res_users__commercial_journal_ids
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__commercial_journal_ids
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__commercial_journal_ids
msgid "Allowed journals for commercial"
msgstr "Dozvoljena dnevnici za komercijalne"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__amount
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__amount
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Amount"
msgstr "Iznos"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__amount_residual
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Amount Due"
msgstr "Iznos van valute"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_attachment_count
msgid "Attachment Count"
msgstr "Broj priloga"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__statement_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Bank statement"
msgstr "Bankovni izvještaj"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.sale_invoice_payment_wiz
msgid "Cancel"
msgstr "Otkaži"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__company_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__company_id
msgid "Company"
msgstr "Preduzeće"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__company_id
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet_line__company_id
msgid "Company related to this journal"
msgstr "Preduzeće na koje se odnose finansijski nalozi"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Confirm sheet"
msgstr "Potvrdi listu"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Confirmed"
msgstr "Potvrđeno"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__create_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__create_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__create_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__create_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__create_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__create_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__currency_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__currency_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__currency_id
msgid "Currency"
msgstr "Valuta"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__date
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Date"
msgstr "Datum"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Description"
msgstr "Opis"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__display_name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__display_name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__display_name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Draft"
msgstr "U pripremi"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__invoice_date_due
msgid "Due Date"
msgstr "Datum dospijeća"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__reference
msgid "External Reference"
msgstr "Eksterna referenca"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_follower_ids
msgid "Followers"
msgstr "Pratioci"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_partner_ids
msgid "Followers (Partners)"
msgstr "Pratioci (Partneri)"
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet_line__transaction_type__full
msgid "Full payment"
msgstr "Puno plaćanje"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet_line__sequence
msgid ""
"Gives the sequence order when displaying a list of payment sheet lines."
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Group By"
msgstr "Grupiši po"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__group_lines
msgid "Group statement lines by"
msgstr "Grupiraj linije izvještaja po"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__has_message
msgid "Has Message"
msgstr "Ima poruku"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__id
msgid "ID"
msgstr "ID"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_needaction
msgid "If checked, new messages require your attention."
msgstr "Ako je zakačeno, nove poruke će zahtjevati vašu pažnju"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_has_error
msgid "If checked, some messages have a delivery error."
msgstr "Ako je označeno neke poruke mogu imati grešku u dostavi."
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__invoice_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__invoice_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Invoice"
msgstr "Faktura"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__invoice_date
msgid "Invoice/Bill Date"
msgstr "Datum računa"
#. module: sale_payment_sheet
#: model:ir.actions.act_window,name:sale_payment_sheet.action_invoice_sale_payment_sheet
#: model:ir.ui.menu,name:sale_payment_sheet.sale_payment_invoice
msgid "Invoices"
msgstr "Fakture"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_is_follower
msgid "Is Follower"
msgstr "Pratilac"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__is_selected
msgid "Is Selected"
msgstr "Odabrano"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__journal_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__journal_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Journal"
msgstr "Vrsta naloga"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__journal_currency_id
msgid "Journal's Currency"
msgstr "Valuta dnevnika"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__name
msgid "Label"
msgstr "Opis"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz____last_update
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz____last_update
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet____last_update
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__write_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__write_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__write_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__write_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__write_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__write_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_main_attachment_id
msgid "Main Attachment"
msgstr "Glavna zakačka"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_has_error
msgid "Message Delivery error"
msgstr "Greška pri isporuci poruke"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_ids
msgid "Messages"
msgstr "Poruke"
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet__state__open
msgid "New"
msgstr "Novi"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__note
msgid "Notes"
msgstr "Zabilješke"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_needaction_counter
msgid "Number of Actions"
msgstr "Broj akcija"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_has_error_counter
msgid "Number of errors"
msgstr "Broj grešaka"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_needaction_counter
msgid "Number of messages requiring action"
msgstr "Broj poruka koje zahtijevaju aktivnost"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_has_error_counter
msgid "Number of messages with delivery error"
msgstr "Broj poruka sa greškama pri isporuci"
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet_line__transaction_type__partial
msgid "Partial payment"
msgstr "Djelomično plaćanje"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__partner_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__partner_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Partner"
msgstr "Partner"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.sale_invoice_payment_wiz
msgid "Payment"
msgstr "Plaćanje"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Payment sheet"
msgstr "Lista plaćanja"
#. module: sale_payment_sheet
#: model:ir.ui.menu,name:sale_payment_sheet.sale_payment_sheet_menu
msgid "Payments"
msgstr "Plaćanja"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__ref
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__ref
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet__group_lines__ref
msgid "Reference"
msgstr "Referenca"
#. module: sale_payment_sheet
#: model_terms:ir.actions.act_window,help:sale_payment_sheet.action_sale_payment_sheet
msgid "Register a invoice payment (Salesman)"
msgstr "Registriraj plaćanje fakture (Prodavac)"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Reset to New"
msgstr "Resetiraj na novo"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__user_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__user_id
msgid "Responsible"
msgstr "Odgovoran"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_payment_sheet
msgid "Sale Payment Sheet"
msgstr "Lista plaćanja prodaje"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_payment_sheet_line
msgid "Sale Payment Sheet Line"
msgstr "Linija liste plaćanja prodaje"
#. module: sale_payment_sheet
#: model:ir.actions.act_window,name:sale_payment_sheet.action_sale_invoice_payment_wiz
msgid "Sale invoice payment"
msgstr "Plaćanje prodajne fakture"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_invoice_payment_line_wiz
msgid "Sale invoice payment lines wizard"
msgstr "Čarobnjak linija plaćanja prodajne fakture"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_invoice_payment_wiz
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.sale_invoice_payment_wiz
msgid "Sale invoice payment wizard"
msgstr "Čarobnjak plaćanja prodajne fakture"
#. module: sale_payment_sheet
#: model:ir.actions.act_window,name:sale_payment_sheet.action_sale_payment_sheet
msgid "Sale payment sheet"
msgstr "Lista plaćanja prodaje"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Sales Person"
msgstr "Prodavac"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Search sale payment sheets"
msgstr "Pretražuj liste plaćanja prodaje"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__sequence
msgid "Sequence"
msgstr "Sekvenca"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__sheet_id
msgid "Sheet"
msgstr "List"
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "Sheet %s confirmed, bank statement were created."
msgstr "Lista %s potvrđena, bankovni izvještaj je kreiran."
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__line_ids
msgid "Sheet lines"
msgstr "Linije liste"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__statement_line_id
msgid "Statement Line"
msgstr "Stavke izvoda"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__state
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__state
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__state
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Status"
msgstr "Status"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Tax Excluded"
msgstr "Bez PDV"
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "The amount of a cash transaction cannot be 0."
msgstr "Iznos gotovinske transakcije ne može biti 0."
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid ""
"This invoice already has been included in other payment sheet or the amount payed is greather than residual invoice amount.\n"
" Invoice: %(invoice_name)s\n"
" Amount payed: %(amount_payed)s\n"
" Payment sheets: %(payment_lines_name)s"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__amount_total
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__amount_total
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Total"
msgstr "Ukupno"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Total Amount"
msgstr "Ukupan iznos"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__transaction_type
msgid "Transaction Type"
msgstr "Tip transakcije"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Transactions"
msgstr "Transakcije"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_res_users
msgid "User"
msgstr "Korisnik"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet_line__journal_currency_id
msgid "Utility field to express amount currency"
msgstr "Pomoćno polje da istakne iznos u valuti"
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet__state__confirm
msgid "Validated"
msgstr "Odobreno"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__website_message_ids
msgid "Website Messages"
msgstr "Poruke sa website-a"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__website_message_ids
msgid "Website communication history"
msgstr "Povijest komunikacije Web stranice"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__wiz_id
msgid "Wiz"
msgstr "Čar"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__wiz_line_ids
msgid "Wiz Line"
msgstr "Linija čar"
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "You can not delete a sheet if has related journal items."
msgstr "Ne možete obrisati listu ako ima povezane stavke dnevnika."
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "You can not delete payment lines if have related statement lines."
msgstr "Ne možete obrisati linije plaćanja ako imaju povezane linije izvještaja."
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "You can not reopen a sheet that has any reconciled line."
msgstr "Ne možete ponovno otvoriti listu koja ima usaglašene linije."
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/wizards/sale_invoice_payment.py:0
#, python-format
msgid "You have to select at least an invoice to make a payment."
msgstr "Morate odabrati najmanje jednu fakturu za plaćanje."
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_users_form
msgid "sale payment sheet"
msgstr "lista plaćanja prodaje"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "sale payment sheet Summary"
msgstr "Rezime liste plaćanja prodaje"
#. module: sale_payment_sheet
#: model:ir.actions.report,name:sale_payment_sheet.action_report_sale_payment_sheet
msgid "sale payment sheet summary"
msgstr "rezime liste plaćanja prodaje"

View file

@ -0,0 +1,610 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_type
#
# This file contains the translation of the following modules:
# * sale_payment_sheet
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-06-07 15:56+0000\n"
"PO-Revision-Date: 2023-11-08 13:40+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\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: Weblate 4.17\n"
#. module: sale_payment_sheet
#: model:ir.actions.report,print_report_name:sale_payment_sheet.action_report_sale_payment_sheet
msgid "'Payment sheet %s' % (object.name)"
msgstr "'Hoja de pagos %s' % (object.name)"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "<span>Page: </span>"
msgstr "<span>Página: </span>"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "<span>Sheet: </span>"
msgstr "<span> Hoja </span>"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "<span>Total: </span>"
msgstr "<span>Total: </span>"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_needaction
msgid "Action Needed"
msgstr "Necesaria acción"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_res_users__commercial_journal_ids
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__commercial_journal_ids
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__commercial_journal_ids
msgid "Allowed journals for commercial"
msgstr "Diarios permitidos"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__amount
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__amount
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Amount"
msgstr "Importe"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__amount_residual
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Amount Due"
msgstr "Importe adeudado"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_attachment_count
msgid "Attachment Count"
msgstr "Conteo de archivos adjuntos"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__statement_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Bank statement"
msgstr "Extracto bancario"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.sale_invoice_payment_wiz
msgid "Cancel"
msgstr "Cancelar"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__company_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__company_id
msgid "Company"
msgstr "Compañía"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__company_id
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet_line__company_id
msgid "Company related to this journal"
msgstr "Compañía relacionada con este diario"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Confirm sheet"
msgstr "Confirmar hoja"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Confirmed"
msgstr "Confirmado"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__create_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__create_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__create_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__create_uid
msgid "Created by"
msgstr "Creado el"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__create_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__create_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__create_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__create_date
msgid "Created on"
msgstr "Creado el"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__currency_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__currency_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__currency_id
msgid "Currency"
msgstr "Moneda"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__date
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Date"
msgstr "Fecha"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Description"
msgstr "Descripción"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__display_name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__display_name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__display_name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__display_name
msgid "Display Name"
msgstr "Nombre a mostrar"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Draft"
msgstr "Borrador"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__invoice_date_due
msgid "Due Date"
msgstr "Fecha de vencimiento"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__reference
msgid "External Reference"
msgstr "Referencia Externa"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_follower_ids
msgid "Followers"
msgstr "Seguidores"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_partner_ids
msgid "Followers (Partners)"
msgstr "Seguidores (Socios)"
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet_line__transaction_type__full
msgid "Full payment"
msgstr "Completo"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet_line__sequence
msgid "Gives the sequence order when displaying a list of payment sheet lines."
msgstr ""
"Indica el orden de secuencia cuando se muestra una lista de líneas de la "
"hoja de pagos."
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Group By"
msgstr "Agrupado por"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__group_lines
msgid "Group statement lines by"
msgstr "Agrupar Líneas del extracto bancario por"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__has_message
msgid "Has Message"
msgstr "Tiene mensaje"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__id
msgid "ID"
msgstr "ID (Identificador)"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_needaction
msgid "If checked, new messages require your attention."
msgstr "Si está marcado, hay nuevos mensajes que requieren su atención."
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_has_error
msgid "If checked, some messages have a delivery error."
msgstr "Si se encuentra marcado, algunos mensajes tienen error de envío."
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__invoice_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__invoice_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Invoice"
msgstr "Factura"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__invoice_date
msgid "Invoice/Bill Date"
msgstr "Fecha de la factura"
#. module: sale_payment_sheet
#: model:ir.actions.act_window,name:sale_payment_sheet.action_invoice_sale_payment_sheet
#: model:ir.ui.menu,name:sale_payment_sheet.sale_payment_invoice
msgid "Invoices"
msgstr "Facturas"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_is_follower
msgid "Is Follower"
msgstr "Es seguidor"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__is_selected
msgid "Is Selected"
msgstr "está seleccionado/a"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__journal_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__journal_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Journal"
msgstr "Diario"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__journal_currency_id
msgid "Journal's Currency"
msgstr "Moneda del diario"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__name
msgid "Label"
msgstr "Etiqueta"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz____last_update
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz____last_update
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet____last_update
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line____last_update
msgid "Last Modified on"
msgstr "Última modificación en"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__write_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__write_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__write_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__write_uid
msgid "Last Updated by"
msgstr "Última actualización de"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__write_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__write_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__write_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__write_date
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_main_attachment_id
msgid "Main Attachment"
msgstr "Adjuntos principales"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_has_error
msgid "Message Delivery error"
msgstr "Error de Envío de Mensaje"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_ids
msgid "Messages"
msgstr "Mensajes"
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet__state__open
msgid "New"
msgstr "Nuevo"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__note
msgid "Notes"
msgstr "Notas"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_needaction_counter
msgid "Number of Actions"
msgstr "Número de acciones"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_has_error_counter
msgid "Number of errors"
msgstr "Errores"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_needaction_counter
msgid "Number of messages requiring action"
msgstr "Número de mensajes que requieren una acción"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_has_error_counter
msgid "Number of messages with delivery error"
msgstr "Número de mensajes con error de envío"
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet_line__transaction_type__partial
msgid "Partial payment"
msgstr "Parcial"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__partner_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__partner_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Partner"
msgstr "Empresa"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.sale_invoice_payment_wiz
msgid "Payment"
msgstr "Pagos"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Payment sheet"
msgstr "Hoja de pagos"
#. module: sale_payment_sheet
#: model:ir.ui.menu,name:sale_payment_sheet.sale_payment_sheet_menu
msgid "Payments"
msgstr "Pagos"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__ref
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__ref
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet__group_lines__ref
msgid "Reference"
msgstr "Referencia"
#. module: sale_payment_sheet
#: model_terms:ir.actions.act_window,help:sale_payment_sheet.action_sale_payment_sheet
msgid "Register a invoice payment (Salesman)"
msgstr "Registrar pago de factura (Comerciales)"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Reset to New"
msgstr "Reestablecer a Nuevo"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__user_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__user_id
msgid "Responsible"
msgstr "Responsable"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_payment_sheet
msgid "Sale Payment Sheet"
msgstr "Hoja de pagos"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_payment_sheet_line
msgid "Sale Payment Sheet Line"
msgstr "Líneas de la hoja de pagos"
#. module: sale_payment_sheet
#: model:ir.actions.act_window,name:sale_payment_sheet.action_sale_invoice_payment_wiz
msgid "Sale invoice payment"
msgstr "Pago de facturas"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_invoice_payment_line_wiz
msgid "Sale invoice payment lines wizard"
msgstr "Asistente de líneas de pago de facturas de venta"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_invoice_payment_wiz
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.sale_invoice_payment_wiz
msgid "Sale invoice payment wizard"
msgstr "Asistente de pago de factura"
#. module: sale_payment_sheet
#: model:ir.actions.act_window,name:sale_payment_sheet.action_sale_payment_sheet
msgid "Sale payment sheet"
msgstr "Hoja de pagos"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Sales Person"
msgstr "Comercial"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Search sale payment sheets"
msgstr "Búsqueda de pagos de facturas"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__sequence
msgid "Sequence"
msgstr "Secuencia"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__sheet_id
msgid "Sheet"
msgstr "Hoja"
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "Sheet %s confirmed, bank statement were created."
msgstr "Hoja %s confirmada, se crearon los extractos bancarios."
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__line_ids
msgid "Sheet lines"
msgstr "Líneas"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__statement_line_id
msgid "Statement Line"
msgstr "Línea de extracto"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__state
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__state
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__state
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Status"
msgstr "Estado"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Tax Excluded"
msgstr "Impuesto no incluido"
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "The amount of a cash transaction cannot be 0."
msgstr "El importe de una transacción en efectivo no puede ser 0."
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid ""
"This invoice already has been included in other payment sheet or the amount "
"payed is greather than residual invoice amount.\n"
" Invoice: %(invoice_name)s\n"
" Amount payed: %(amount_payed)s\n"
" Payment sheets: %(payment_lines_name)s"
msgstr ""
"Esta factura ya se ha incluido en otra hoja de pagos o el importe pagado es "
"mayor al importe pendiente de la factura.\n"
" Factura: %(invoice_name)s\n"
" Importe pagado: %(amount_payed)s\n"
" Hojas de pago: %(payment_lines_name)s"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__amount_total
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__amount_total
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Total"
msgstr "Total"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Total Amount"
msgstr "Importe total"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__transaction_type
msgid "Transaction Type"
msgstr "Tipo de transacción"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Transactions"
msgstr "Transacciones"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_res_users
msgid "User"
msgstr "Usuario"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet_line__journal_currency_id
msgid "Utility field to express amount currency"
msgstr "Campo útil para expresar importe en divisa"
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet__state__confirm
msgid "Validated"
msgstr "Validado"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__website_message_ids
msgid "Website Messages"
msgstr "Mensajes del sitio web"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__website_message_ids
msgid "Website communication history"
msgstr "Historial de comunicaciones del sitio web"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__wiz_id
msgid "Wiz"
msgstr "Asistente"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__wiz_line_ids
msgid "Wiz Line"
msgstr "Línea de asistente"
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "You can not delete a sheet if has related journal items."
msgstr ""
"No puede eliminar una hoja de pagos si tiene un extracto bancario "
"relacionado."
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "You can not delete payment lines if have related statement lines."
msgstr ""
"No puede eliminar líneas de pago si tienen una línea de extracto relacionada."
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "You can not reopen a sheet that has any reconciled line."
msgstr "No puede reabrir una hoja de pagos si tiene alguna línea conciliada."
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/wizards/sale_invoice_payment.py:0
#, python-format
msgid "You have to select at least an invoice to make a payment."
msgstr "Tienes que seleccionar al menos una factura para hacer el pago."
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_users_form
msgid "sale payment sheet"
msgstr "Hoja de pagos"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "sale payment sheet Summary"
msgstr "Resumen de pagos de facturas"
#. module: sale_payment_sheet
#: model:ir.actions.report,name:sale_payment_sheet.action_report_sale_payment_sheet
msgid "sale payment sheet summary"
msgstr "Resumen de pagos de facturas"
#~ msgid "Number of messages which requires an action"
#~ msgstr "Número de mensajes que requieren una acción"
#~ msgid "Number of unread messages"
#~ msgstr "Número de mensajes no leidos"
#~ msgid "SMS Delivery error"
#~ msgstr "Error en la entrega del SMS"
#~ msgid "Unread Messages"
#~ msgstr "Mensajes sin leer"
#~ msgid "Unread Messages Counter"
#~ msgstr "Contador de mensajes no leidos"
#~ msgid "Users"
#~ msgstr "Usuarios"

View file

@ -0,0 +1,589 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_payment_sheet
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-10-09 11:06+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.2\n"
#. module: sale_payment_sheet
#: model:ir.actions.report,print_report_name:sale_payment_sheet.action_report_sale_payment_sheet
msgid "'Payment sheet %s' % (object.name)"
msgstr "'Ricevuta pagamento %s' % (object.name)"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "<span>Page: </span>"
msgstr "<span>Pagina: </span>"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "<span>Sheet: </span>"
msgstr "<span>Ricevuta: </span>"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "<span>Total: </span>"
msgstr "<span>Totale: </span>"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_needaction
msgid "Action Needed"
msgstr "Azione richiesta"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_res_users__commercial_journal_ids
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__commercial_journal_ids
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__commercial_journal_ids
msgid "Allowed journals for commercial"
msgstr "Registri commerciali conseniti"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__amount
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__amount
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Amount"
msgstr "Importo"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__amount_residual
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Amount Due"
msgstr "Importo dovuto"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_attachment_count
msgid "Attachment Count"
msgstr "Conteggio allegati"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__statement_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Bank statement"
msgstr "Estratto conto bancario"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.sale_invoice_payment_wiz
msgid "Cancel"
msgstr "Annulla"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__company_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__company_id
msgid "Company"
msgstr "Azienda"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__company_id
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet_line__company_id
msgid "Company related to this journal"
msgstr "Azienda collegata a questo registro"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Confirm sheet"
msgstr "Conferma ricevuta"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Confirmed"
msgstr "Confermato"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__create_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__create_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__create_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__create_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__create_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__create_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__create_date
msgid "Created on"
msgstr "Creato il"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__currency_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__currency_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__currency_id
msgid "Currency"
msgstr "Valuta"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__date
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Date"
msgstr "Data"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Description"
msgstr "Descrizione"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__display_name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__display_name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__display_name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Draft"
msgstr "Bozza"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__invoice_date_due
msgid "Due Date"
msgstr "Scadenza"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__reference
msgid "External Reference"
msgstr "Riferimento esterno"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_follower_ids
msgid "Followers"
msgstr "Seguito da"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_partner_ids
msgid "Followers (Partners)"
msgstr "Seguito da (partner)"
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet_line__transaction_type__full
msgid "Full payment"
msgstr "Pagamento completo"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet_line__sequence
msgid ""
"Gives the sequence order when displaying a list of payment sheet lines."
msgstr ""
"Da l'ordine di sequenza quando si visualizza un elenco di righe ricevuta "
"pagamento."
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Group By"
msgstr "Raggruppa per"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__group_lines
msgid "Group statement lines by"
msgstr "Raggruppa righe dichiarazione per"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__has_message
msgid "Has Message"
msgstr "Ha un messaggio"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__id
msgid "ID"
msgstr "ID"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_needaction
msgid "If checked, new messages require your attention."
msgstr "Se selezionata, nuovi messaggi richiedono attenzione."
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_has_error
msgid "If checked, some messages have a delivery error."
msgstr "Se selezionata, alcuni messaggi hanno un errore di consegna."
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__invoice_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__invoice_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Invoice"
msgstr "Fattura"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__invoice_date
msgid "Invoice/Bill Date"
msgstr "Data fattura/conto"
#. module: sale_payment_sheet
#: model:ir.actions.act_window,name:sale_payment_sheet.action_invoice_sale_payment_sheet
#: model:ir.ui.menu,name:sale_payment_sheet.sale_payment_invoice
msgid "Invoices"
msgstr "Fatture"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_is_follower
msgid "Is Follower"
msgstr "Segue"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__is_selected
msgid "Is Selected"
msgstr "È selezionato"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__journal_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__journal_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Journal"
msgstr "Registro"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__journal_currency_id
msgid "Journal's Currency"
msgstr "Valuta registro"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__name
msgid "Label"
msgstr "Etichetta"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz____last_update
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz____last_update
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet____last_update
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__write_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__write_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__write_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__write_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__write_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__write_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_main_attachment_id
msgid "Main Attachment"
msgstr "Allegato principale"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_has_error
msgid "Message Delivery error"
msgstr "Errore di consegna messaggio"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_ids
msgid "Messages"
msgstr "Messaggi"
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet__state__open
msgid "New"
msgstr "Nuovo"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__note
msgid "Notes"
msgstr "Note"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_needaction_counter
msgid "Number of Actions"
msgstr "Numero di azioni"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_has_error_counter
msgid "Number of errors"
msgstr "Numero di errori"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_needaction_counter
msgid "Number of messages requiring action"
msgstr "Numero di messaggi che richiedono un'azione"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_has_error_counter
msgid "Number of messages with delivery error"
msgstr "Numero di messaggi con errore di consegna"
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet_line__transaction_type__partial
msgid "Partial payment"
msgstr "Pagamento parziale"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__partner_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__partner_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Partner"
msgstr "Partner"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.sale_invoice_payment_wiz
msgid "Payment"
msgstr "Pagamento"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Payment sheet"
msgstr "Ricevuta pagamento"
#. module: sale_payment_sheet
#: model:ir.ui.menu,name:sale_payment_sheet.sale_payment_sheet_menu
msgid "Payments"
msgstr "Pagamenti"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__ref
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__ref
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet__group_lines__ref
msgid "Reference"
msgstr "Riferimento"
#. module: sale_payment_sheet
#: model_terms:ir.actions.act_window,help:sale_payment_sheet.action_sale_payment_sheet
msgid "Register a invoice payment (Salesman)"
msgstr "Registra un pagamento fattura (venditore)"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Reset to New"
msgstr "Resetta a nuovo"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__user_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__user_id
msgid "Responsible"
msgstr "Responsabile"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_payment_sheet
msgid "Sale Payment Sheet"
msgstr "Ricevuta pagamento vendita"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_payment_sheet_line
msgid "Sale Payment Sheet Line"
msgstr "Riga ricevuta pagamento vendita"
#. module: sale_payment_sheet
#: model:ir.actions.act_window,name:sale_payment_sheet.action_sale_invoice_payment_wiz
msgid "Sale invoice payment"
msgstr "Pagamento fattura di vendita"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_invoice_payment_line_wiz
msgid "Sale invoice payment lines wizard"
msgstr "Procedura guidata righe pagamento fattura di vendita"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_invoice_payment_wiz
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.sale_invoice_payment_wiz
msgid "Sale invoice payment wizard"
msgstr "Procedura guidata pagamento fattura di vendita"
#. module: sale_payment_sheet
#: model:ir.actions.act_window,name:sale_payment_sheet.action_sale_payment_sheet
msgid "Sale payment sheet"
msgstr "Ricevuta pagamento vendita"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Sales Person"
msgstr "Addetto vendite"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Search sale payment sheets"
msgstr "Ricerca ricevute pagamento vendita"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__sequence
msgid "Sequence"
msgstr "Sequenza"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__sheet_id
msgid "Sheet"
msgstr "Foglio"
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "Sheet %s confirmed, bank statement were created."
msgstr "Ricevuta %s confermata, rendiconto bancario creato."
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__line_ids
msgid "Sheet lines"
msgstr "Righe ricevuta"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__statement_line_id
msgid "Statement Line"
msgstr "Riga estratto conto"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__state
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__state
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__state
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Status"
msgstr "Stato"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Tax Excluded"
msgstr "Imponibile"
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "The amount of a cash transaction cannot be 0."
msgstr "Il valore di una transizione di cassa non può essere 0."
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid ""
"This invoice already has been included in other payment sheet or the amount payed is greather than residual invoice amount.\n"
" Invoice: %(invoice_name)s\n"
" Amount payed: %(amount_payed)s\n"
" Payment sheets: %(payment_lines_name)s"
msgstr ""
"Questa fattura è già stata inclusa in un altra ricevuta di pagamento o il "
"valore pagato è superiore al resido della fattura.\n"
" Fattura: %(invoice_name)s\n"
" Valore pagato: %(amount_payed)s\n"
" Ricevute pagamento: %(payment_lines_name)s"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__amount_total
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__amount_total
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Total"
msgstr "Totale"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Total Amount"
msgstr "Importo totale"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__transaction_type
msgid "Transaction Type"
msgstr "Tipo transazione"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Transactions"
msgstr "Transazioni"
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_res_users
msgid "User"
msgstr "Utente"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet_line__journal_currency_id
msgid "Utility field to express amount currency"
msgstr "Campo utilità per esprimere la valuta del valore"
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet__state__confirm
msgid "Validated"
msgstr "Approvato"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__website_message_ids
msgid "Website Messages"
msgstr "Messaggi sito web"
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__website_message_ids
msgid "Website communication history"
msgstr "Cronologia comunicazioni sito web"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__wiz_id
msgid "Wiz"
msgstr "Procedura guidata"
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__wiz_line_ids
msgid "Wiz Line"
msgstr "Riga procedura guidata"
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "You can not delete a sheet if has related journal items."
msgstr ""
"Non si può cancellare una ricevuta se ha delle registrazini contabili "
"collegate."
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "You can not delete payment lines if have related statement lines."
msgstr ""
"Non si possono cancellare righe pagamento se hanno registrazioni contabili "
"collegate."
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "You can not reopen a sheet that has any reconciled line."
msgstr "Non si può riaprire una ricevuta che ha righe riconciliate."
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/wizards/sale_invoice_payment.py:0
#, python-format
msgid "You have to select at least an invoice to make a payment."
msgstr "Bisogna selezionare almeno una fattura per effettuare un pagamento."
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_users_form
msgid "sale payment sheet"
msgstr "ricevuta pagamento vendita"
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "sale payment sheet Summary"
msgstr "riepilogo ricevuta pagamento vendita"
#. module: sale_payment_sheet
#: model:ir.actions.report,name:sale_payment_sheet.action_report_sale_payment_sheet
msgid "sale payment sheet summary"
msgstr "riepilogo ricevuta pagamento vendita"

View file

@ -0,0 +1,575 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_payment_sheet
#
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_payment_sheet
#: model:ir.actions.report,print_report_name:sale_payment_sheet.action_report_sale_payment_sheet
msgid "'Payment sheet %s' % (object.name)"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "<span>Page: </span>"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "<span>Sheet: </span>"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "<span>Total: </span>"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_needaction
msgid "Action Needed"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_res_users__commercial_journal_ids
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__commercial_journal_ids
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__commercial_journal_ids
msgid "Allowed journals for commercial"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__amount
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__amount
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Amount"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__amount_residual
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Amount Due"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_attachment_count
msgid "Attachment Count"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__statement_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Bank statement"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.sale_invoice_payment_wiz
msgid "Cancel"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__company_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__company_id
msgid "Company"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__company_id
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet_line__company_id
msgid "Company related to this journal"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Confirm sheet"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Confirmed"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__create_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__create_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__create_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__create_uid
msgid "Created by"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__create_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__create_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__create_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__create_date
msgid "Created on"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__currency_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__currency_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__currency_id
msgid "Currency"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__date
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Date"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Description"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__display_name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__display_name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__display_name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__display_name
msgid "Display Name"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Draft"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__invoice_date_due
msgid "Due Date"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__reference
msgid "External Reference"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_follower_ids
msgid "Followers"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_partner_ids
msgid "Followers (Partners)"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet_line__transaction_type__full
msgid "Full payment"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet_line__sequence
msgid ""
"Gives the sequence order when displaying a list of payment sheet lines."
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Group By"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__group_lines
msgid "Group statement lines by"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__has_message
msgid "Has Message"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__id
msgid "ID"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_needaction
msgid "If checked, new messages require your attention."
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_has_error
msgid "If checked, some messages have a delivery error."
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__invoice_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__invoice_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Invoice"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__invoice_date
msgid "Invoice/Bill Date"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.actions.act_window,name:sale_payment_sheet.action_invoice_sale_payment_sheet
#: model:ir.ui.menu,name:sale_payment_sheet.sale_payment_invoice
msgid "Invoices"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_is_follower
msgid "Is Follower"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__is_selected
msgid "Is Selected"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__journal_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__journal_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Journal"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__journal_currency_id
msgid "Journal's Currency"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__name
msgid "Label"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz____last_update
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz____last_update
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet____last_update
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line____last_update
msgid "Last Modified on"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__write_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__write_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__write_uid
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__write_uid
msgid "Last Updated by"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__write_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__write_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__write_date
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__write_date
msgid "Last Updated on"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_main_attachment_id
msgid "Main Attachment"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_has_error
msgid "Message Delivery error"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_ids
msgid "Messages"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet__state__open
msgid "New"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__note
msgid "Notes"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_needaction_counter
msgid "Number of Actions"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__message_has_error_counter
msgid "Number of errors"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_needaction_counter
msgid "Number of messages requiring action"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__message_has_error_counter
msgid "Number of messages with delivery error"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet_line__transaction_type__partial
msgid "Partial payment"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__partner_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__partner_id
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "Partner"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.sale_invoice_payment_wiz
msgid "Payment"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Payment sheet"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.ui.menu,name:sale_payment_sheet.sale_payment_sheet_menu
msgid "Payments"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__ref
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__name
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__ref
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet__group_lines__ref
msgid "Reference"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.actions.act_window,help:sale_payment_sheet.action_sale_payment_sheet
msgid "Register a invoice payment (Salesman)"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Reset to New"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__user_id
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__user_id
msgid "Responsible"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_payment_sheet
msgid "Sale Payment Sheet"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_payment_sheet_line
msgid "Sale Payment Sheet Line"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.actions.act_window,name:sale_payment_sheet.action_sale_invoice_payment_wiz
msgid "Sale invoice payment"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_invoice_payment_line_wiz
msgid "Sale invoice payment lines wizard"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_sale_invoice_payment_wiz
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.sale_invoice_payment_wiz
msgid "Sale invoice payment wizard"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.actions.act_window,name:sale_payment_sheet.action_sale_payment_sheet
msgid "Sale payment sheet"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Sales Person"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Search sale payment sheets"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__sequence
msgid "Sequence"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__sheet_id
msgid "Sheet"
msgstr ""
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "Sheet %s confirmed, bank statement were created."
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__line_ids
msgid "Sheet lines"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__statement_line_id
msgid "Statement Line"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__state
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__state
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__state
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_search
msgid "Status"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Tax Excluded"
msgstr ""
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "The amount of a cash transaction cannot be 0."
msgstr ""
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid ""
"This invoice already has been included in other payment sheet or the amount payed is greather than residual invoice amount.\n"
" Invoice: %(invoice_name)s\n"
" Amount payed: %(amount_payed)s\n"
" Payment sheets: %(payment_lines_name)s"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__amount_total
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__amount_total
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Total"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_invoice_tree
msgid "Total Amount"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet_line__transaction_type
msgid "Transaction Type"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_sale_payment_sheet_form
msgid "Transactions"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model,name:sale_payment_sheet.model_res_users
msgid "User"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet_line__journal_currency_id
msgid "Utility field to express amount currency"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields.selection,name:sale_payment_sheet.selection__sale_payment_sheet__state__confirm
msgid "Validated"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_payment_sheet__website_message_ids
msgid "Website Messages"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,help:sale_payment_sheet.field_sale_payment_sheet__website_message_ids
msgid "Website communication history"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_line_wiz__wiz_id
msgid "Wiz"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.model.fields,field_description:sale_payment_sheet.field_sale_invoice_payment_wiz__wiz_line_ids
msgid "Wiz Line"
msgstr ""
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "You can not delete a sheet if has related journal items."
msgstr ""
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "You can not delete payment lines if have related statement lines."
msgstr ""
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/models/sale_payment_sheet.py:0
#, python-format
msgid "You can not reopen a sheet that has any reconciled line."
msgstr ""
#. module: sale_payment_sheet
#. odoo-python
#: code:addons/sale_payment_sheet/wizards/sale_invoice_payment.py:0
#, python-format
msgid "You have to select at least an invoice to make a payment."
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.view_users_form
msgid "sale payment sheet"
msgstr ""
#. module: sale_payment_sheet
#: model_terms:ir.ui.view,arch_db:sale_payment_sheet.report_sale_payment_sheet
msgid "sale payment sheet Summary"
msgstr ""
#. module: sale_payment_sheet
#: model:ir.actions.report,name:sale_payment_sheet.action_report_sale_payment_sheet
msgid "sale payment sheet summary"
msgstr ""

View file

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

View file

@ -0,0 +1,14 @@
# Copyright 2020 Tecnativa - Carlos Dauden
# Copyright 2020 Tecnativa - Sergio Teruel
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ResUsers(models.Model):
_inherit = "res.users"
commercial_journal_ids = fields.Many2many(
comodel_name="account.journal",
string="Allowed journals for commercial",
)

View file

@ -0,0 +1,347 @@
# Copyright 2020 Tecnativa - Carlos Dauden
# Copyright 2020 Tecnativa - Sergio Teruel
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models
from odoo.exceptions import UserError, ValidationError
from odoo.tools import float_compare
class SalePaymentSheet(models.Model):
_name = "sale.payment.sheet"
_description = "Sale Payment Sheet"
_order = "date desc, id desc"
_inherit = ["mail.thread"]
_check_company_auto = True
name = fields.Char(
string="Reference",
states={"open": [("readonly", False)]},
copy=False,
compute="_compute_name",
readonly=True,
store=True,
)
reference = fields.Char(
string="External Reference",
states={"open": [("readonly", False)]},
copy=False,
readonly=True,
)
date = fields.Date(
required=True,
states={"confirm": [("readonly", True)]},
index=True,
copy=False,
default=fields.Date.context_today,
)
state = fields.Selection(
[("open", "New"), ("confirm", "Validated")],
string="Status",
required=True,
readonly=True,
copy=False,
default="open",
)
currency_id = fields.Many2one(
"res.currency", compute="_compute_currency", string="Currency"
)
journal_id = fields.Many2one(
"account.journal",
string="Journal",
required=True,
states={"confirm": [("readonly", True)]},
default=lambda self: self._default_journal(),
)
commercial_journal_ids = fields.Many2many(related="user_id.commercial_journal_ids")
company_id = fields.Many2one(
"res.company",
related="journal_id.company_id",
string="Company",
store=True,
readonly=True,
)
line_ids = fields.One2many(
"sale.payment.sheet.line",
"sheet_id",
string="Sheet lines",
states={"confirm": [("readonly", True)]},
copy=True,
)
user_id = fields.Many2one(
"res.users",
string="Responsible",
required=False,
default=lambda self: self.env.user,
)
statement_id = fields.Many2one(
comodel_name="account.bank.statement", string="Bank statement"
)
amount_total = fields.Monetary(
string="Total", store=True, readonly=True, compute="_compute_amount_total"
)
group_lines = fields.Selection(
selection=[("ref", "Reference")], string="Group statement lines by"
)
@api.depends("line_ids.amount")
def _compute_amount_total(self):
"""Summarize total amount lines, this field already is signed
depending on invoice type.
"""
for sheet in self:
sheet.amount_total = sum(sheet.line_ids.mapped("amount"))
@api.model
def _default_journal(self):
return self.env.user.commercial_journal_ids[:1]
@api.depends("journal_id.currency_id")
def _compute_currency(self):
for sheet in self:
sheet.currency_id = (
sheet.journal_id.currency_id or sheet.company_id.currency_id
)
@api.depends("journal_id", "user_id", "date")
def _compute_name(self):
for sheet in self:
sheet.name = "{} - {} - {}".format(
sheet.date and sheet.date.strftime("%Y.%m.%d"),
sheet.journal_id.name,
sheet.user_id.name,
)
def unlink(self):
for sheet in self:
if sheet.state != "open":
raise UserError(
_("You can not delete a sheet if has related journal items.")
)
return super().unlink()
@api.model
def _statement_line_key(self, line):
if self.group_lines == "ref":
return (line.partner_id.id, line.ref)
else:
return (line.id,)
def button_confirm_sheet(self):
sheets = self.filtered(lambda r: r.state == "open")
BankStatement = self.env["account.bank.statement"].sudo()
BankStatementLine = self.env["account.bank.statement.line"].sudo()
for sheet in sheets:
statement = BankStatement.create(
{
"name": sheet.name,
"date": sheet.date,
}
)
vals_dic = {}
for line in sheet.line_ids:
key = self._statement_line_key(line)
if line.invoice_id.move_type == "out_refund" and line.amount > 0.0:
# convert to negative amounts if user pays a refund out
# invoice with a positive amount.
amount_line = -line.amount
else:
amount_line = line.amount
if key not in vals_dic:
vals_dic[key] = {
"date": line.date,
"journal_id": sheet.journal_id.id,
"invoice_user_id": sheet.user_id.id,
"amount": amount_line,
"partner_id": line.partner_id.id,
"payment_ref": line.ref or line.invoice_id.name,
"sequence": line.sequence,
"statement_id": statement.id,
"payment_sheet_line_ids": line,
}
else:
vals_dic[key]["amount"] += amount_line
vals_dic[key]["payment_sheet_line_ids"] += line
for vals in vals_dic.values():
payment_sheet_line_ids = vals.pop("payment_sheet_line_ids", None)
statement_line = BankStatementLine.create(vals)
payment_sheet_line_ids.statement_line_id = statement_line
sheet.message_post(
body=_("Sheet %s confirmed, bank statement were created.")
% (statement.name,)
)
sheet.write({"state": "confirm", "statement_id": statement.id})
def button_reopen(self):
self.ensure_one()
self_sudo = self.sudo()
if self_sudo.statement_id.line_ids.filtered("is_reconciled"):
raise UserError(
_("You can not reopen a sheet that has any reconciled line.")
)
self_sudo.statement_id.unlink()
self.state = "open"
def button_bank_statement(self):
"""
Action to open bank statement linked
"""
self.ensure_one()
return self.statement_id.get_formview_action()
class SalePaymentSheetLine(models.Model):
_name = "sale.payment.sheet.line"
_description = "Sale Payment Sheet Line"
_order = "sheet_id desc, date, sequence, id desc"
name = fields.Char(
string="Label", compute="_compute_name", store=True, readonly=False
)
date = fields.Date(
required=True,
default=lambda self: self.env.context.get(
"date", fields.Date.context_today(self)
),
)
sheet_id = fields.Many2one(
"sale.payment.sheet",
string="Sheet",
index=True,
required=True,
ondelete="cascade",
)
statement_line_id = fields.Many2one(
"account.bank.statement.line", string="Statement Line", index=True
)
amount = fields.Monetary(
compute="_compute_amount",
inverse="_inverse_amount",
currency_field="journal_currency_id",
store=True,
readonly=False,
)
journal_currency_id = fields.Many2one(
"res.currency",
string="Journal's Currency",
related="sheet_id.currency_id",
help="Utility field to express amount currency",
readonly=True,
)
partner_id = fields.Many2one("res.partner", string="Partner")
ref = fields.Char(string="Reference")
note = fields.Text(string="Notes")
sequence = fields.Integer(
index=True,
help="Gives the sequence order when displaying a list of payment sheet lines.",
default=1,
)
company_id = fields.Many2one(
"res.company",
related="sheet_id.company_id",
string="Company",
store=True,
readonly=True,
)
state = fields.Selection(related="sheet_id.state", string="Status", readonly=True)
invoice_id = fields.Many2one(
comodel_name="account.move", string="Invoice", index=True
)
transaction_type = fields.Selection(
[("partial", "Partial payment"), ("full", "Full payment")],
compute="_compute_transaction_type",
)
@api.depends("amount", "invoice_id")
def _compute_transaction_type(self):
for line in self:
amount = (
line.amount
if line.invoice_id.move_type == "out_invoice"
else -line.amount
)
if float_compare(
amount,
line.invoice_id.amount_total,
precision_digits=line.sheet_id.currency_id.decimal_places,
):
line.transaction_type = "partial"
else:
line.transaction_type = "full"
@api.depends("sheet_id.user_id", "invoice_id", "transaction_type")
def _compute_name(self):
for line in self:
if not line.create_date:
line.create_date = fields.Datetime.now()
line.name = "[{}] - {} - {} - ({})".format(
fields.Datetime.context_timestamp(line, line.create_date).strftime(
"%H:%M"
),
line.sheet_id.user_id.name,
line.invoice_id.name,
dict(
line._fields["transaction_type"]._description_selection(line.env)
).get(line.transaction_type),
)
@api.depends("invoice_id")
def _compute_amount(self):
for line in self:
amount = line.invoice_id.amount_residual
line.amount = (
amount if line.invoice_id.move_type == "out_invoice" else -amount
)
def _inverse_amount(self):
for line in self:
if line.invoice_id.move_type == "out_refund" and line.amount > 0.0:
line.amount = -line.amount
@api.constrains("invoice_id", "amount")
def _check_invoice(self):
for line in self:
# Allow to enter sheet line with an amount of 0,
if line.journal_currency_id.is_zero(line.amount):
raise ValidationError(
_("The amount of a cash transaction cannot be 0.")
)
# Do not allow to enter a invoice totally payed more than one time
payment_lines = self.search(
[
("invoice_id", "=", line.invoice_id.id),
("sheet_id.state", "=", "open"),
]
)
amount_payed = sum(payment_lines.mapped("amount"))
if (
float_compare(
amount_payed,
line.invoice_id.amount_residual,
precision_rounding=line.invoice_id.currency_id.rounding,
)
== 1
):
raise ValidationError(
_(
"This invoice already has been included in other payment sheet"
" or the amount payed is greather than residual invoice amount."
"\n Invoice: %(invoice_name)s\n Amount payed: "
"%(amount_payed)s\n Payment sheets:"
" %(payment_lines_name)s"
)
% {
"invoice_name": line.invoice_id.name,
"amount_payed": amount_payed,
"payment_lines_name": payment_lines.mapped("sheet_id.name"),
}
)
def unlink(self):
if self.filtered("statement_line_id"):
raise UserError(
_("You can not delete payment lines if have related statement lines.")
)
return super().unlink()

View file

@ -0,0 +1,4 @@
To configure this module, you need to:
#. Go to Settings > User and Companies > Users
#. Select the allowed journals to register payments

View file

@ -0,0 +1,6 @@
* `Tecnativa <https://www.tecnativa.com/>`__:
* Carlos Dauden
* Sergio Teruel
* César A. Sánchez
* Carolina Fernandez

View file

@ -0,0 +1,3 @@
This module allows salesmen to register payments in a new document called payment sheet, accessible only with the sales permission.
This sheet includes the paid amount, and an optional reference to which invoice(s) is(are) being paid.
This payment sheet will generate a bank statement when confirmed.

View file

@ -0,0 +1,22 @@
To use this module, you need to:
Create manual payment sheet:
#. Go to Sales > Orders > Payments.
#. Create new payment sheet.
You can pay invoices directly, to do this:
#. Go to Sales > Orders > Invoices.
#. Select some invoices to pay.
#. Click on Action > Sale invoice payment.
#. A wizard will be displayed and select journal and put amount that you want
to pay.
Payment one invoice:
#. Go to Sales > Orders > Invoices.
#. Enter to invoice form.
#. Click "register payment".
#. A wizard will be displayed and select journal and put amount that you want
to pay.

View file

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<template id="report_sale_payment_sheet">
<t t-call="web.html_container">
<t t-call="web.basic_layout">
<div class="page">
<div class="header">
<div class="row">
<div class="col-10">
<h3>sale payment sheet Summary</h3>
</div>
<div class="col-2 text-right">
<ul class="list-inline">
<span>Page: </span>
<li class="list-inline-item">
<span class="page" />
</li>
<li class="list-inline-item">/</li>
<li class="list-inline-item">
<span class="topage" />
</li>
</ul>
</div>
</div>
</div>
<t t-foreach="docs" t-as="doc">
<div class="row mb-2">
<div class="col-12">
<h4>
<span>Sheet: </span>
<span t-field="doc.name" />
</h4>
</div>
</div>
<table class="table table-sm">
<thead>
<tr>
<th>Date</th>
<th>Description</th>
<th>Partner</th>
<th>Invoice</th>
<th class="text-right">Amount</th>
</tr>
</thead>
<tbody>
<t t-set="total_sheet" t-value="0.0" />
<t t-foreach="doc.line_ids" t-as="line">
<tr>
<td>
<span t-field="line.date" />
</td>
<td>
<span t-field="line.name" />
</td>
<td>
<span t-field="line.partner_id" />
</td>
<td>
<span t-field="line.invoice_id" />
</td>
<td class="text-right">
<span t-field="line.amount" />
</td>
</tr>
<t
t-set="total_sheet"
t-value="total_sheet + line.amount"
/>
</t>
<tr style="padding:0px;">
<td class="text-right" colspan="4">
<span>Total: </span>
</td>
<td class="text-right">
<strong>
<span
t-esc="total_sheet"
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id, 'precision': currency_precision}"
/>
</strong>
</td>
</tr>
</tbody>
</table>
<p style="page-break-before:always;"> </p>
</t>
</div>
</t>
</t>
</template>
</odoo>

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="action_report_sale_payment_sheet" model="ir.actions.report">
<field name="name">sale payment sheet summary</field>
<field name="model">sale.payment.sheet</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">sale_payment_sheet.report_sale_payment_sheet</field>
<field name="report_file">sale_payment_sheet.report_sale_payment_sheet</field>
<field name="print_report_name">'Payment sheet %s' % (object.name)</field>
<field name="binding_model_id" ref="model_sale_payment_sheet" />
<field name="binding_type">report</field>
</record>
</odoo>

View file

@ -0,0 +1,7 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sale_payment_sheet_salesman,access_sale_payment_sheet_salesman,model_sale_payment_sheet,sales_team.group_sale_salesman,1,1,1,1
access_sale_payment_sheet_line_salesman,access_sale_payment_sheet_line_salesman,model_sale_payment_sheet_line,sales_team.group_sale_salesman,1,1,1,1
access_sale_payment_sheet_accountant,access_sale_payment_sheet_accountant,model_sale_payment_sheet,account.group_account_invoice,1,1,1,1
access_sale_payment_sheet_line_accountant,access_sale_payment_sheet_line_accountant,model_sale_payment_sheet_line,account.group_account_invoice,1,1,1,1
access_invoice_payment_wiz,access_invoice_payment_wiz_user,model_sale_invoice_payment_wiz,base.group_user,1,1,1,1
access_invoice_payment_line_wiz,access_invoice_payment_line_wiz_user,model_sale_invoice_payment_line_wiz,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_sale_payment_sheet_salesman access_sale_payment_sheet_salesman model_sale_payment_sheet sales_team.group_sale_salesman 1 1 1 1
3 access_sale_payment_sheet_line_salesman access_sale_payment_sheet_line_salesman model_sale_payment_sheet_line sales_team.group_sale_salesman 1 1 1 1
4 access_sale_payment_sheet_accountant access_sale_payment_sheet_accountant model_sale_payment_sheet account.group_account_invoice 1 1 1 1
5 access_sale_payment_sheet_line_accountant access_sale_payment_sheet_line_accountant model_sale_payment_sheet_line account.group_account_invoice 1 1 1 1
6 access_invoice_payment_wiz access_invoice_payment_wiz_user model_sale_invoice_payment_wiz base.group_user 1 1 1 1
7 access_invoice_payment_line_wiz access_invoice_payment_line_wiz_user model_sale_invoice_payment_line_wiz base.group_user 1 1 1 1

View file

@ -0,0 +1,35 @@
<odoo>
<record id="sale_payment_sheet_multi_company" model="ir.rule">
<field name="name">Sale payment sheet multi-company</field>
<field name="model_id" ref="sale_payment_sheet.model_sale_payment_sheet" />
<field
name="domain_force"
>['|',('company_id','=',False),('company_id','in',company_ids)]</field>
<field name="perm_read" eval="1" />
<field name="perm_create" eval="1" />
<field name="perm_write" eval="1" />
<field name="perm_unlink" eval="1" />
</record>
<record id="sale_payment_sheet_account_manager" model="ir.rule">
<field name="name">Sale payment sheet account manager</field>
<field name="model_id" ref="sale_payment_sheet.model_sale_payment_sheet" />
<field name="domain_force">[]</field>
<field name="groups" eval="[(4, ref('account.group_account_manager'))]" />
<field name="perm_read" eval="1" />
<field name="perm_create" eval="1" />
<field name="perm_write" eval="1" />
<field name="perm_unlink" eval="1" />
<field name="global" eval="False" />
</record>
<record id="sale_payment_sheet_salesman" model="ir.rule">
<field name="name">Sale payment sheet salesman</field>
<field name="model_id" ref="sale_payment_sheet.model_sale_payment_sheet" />
<field name="domain_force">[('user_id','=', user.id)]</field>
<field name="groups" eval="[(4, ref('sales_team.group_sale_salesman'))]" />
<field name="perm_read" eval="1" />
<field name="perm_create" eval="1" />
<field name="perm_write" eval="1" />
<field name="perm_unlink" eval="1" />
<field name="global" eval="False" />
</record>
</odoo>

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,474 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
<img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
</a>
<div class="section" id="sale-payment-sheet">
<h1>Sale payment sheet</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:fb9dad6b33efc14e8c268256dc5077a2bf2afe128589780461d84d04a2c71866
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/sale-workflow/tree/16.0/sale_payment_sheet"><img alt="OCA/sale-workflow" src="https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/sale-workflow-16-0/sale-workflow-16-0-sale_payment_sheet"><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-workflow&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows salesmen to register payments in a new document called payment sheet, accessible only with the sales permission.
This sheet includes the paid amount, and an optional reference to which invoice(s) is(are) being paid.
This payment sheet will generate a bank statement when confirmed.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="toc-entry-1">Configuration</a></li>
<li><a class="reference internal" href="#usage" id="toc-entry-2">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-3">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-4">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-5">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-6">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-7">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h2><a class="toc-backref" href="#toc-entry-1">Configuration</a></h2>
<p>To configure this module, you need to:</p>
<ol class="arabic simple">
<li>Go to Settings &gt; User and Companies &gt; Users</li>
<li>Select the allowed journals to register payments</li>
</ol>
</div>
<div class="section" id="usage">
<h2><a class="toc-backref" href="#toc-entry-2">Usage</a></h2>
<p>To use this module, you need to:</p>
<p>Create manual payment sheet:</p>
<ol class="arabic simple">
<li>Go to Sales &gt; Orders &gt; Payments.</li>
<li>Create new payment sheet.</li>
</ol>
<p>You can pay invoices directly, to do this:</p>
<ol class="arabic simple">
<li>Go to Sales &gt; Orders &gt; Invoices.</li>
<li>Select some invoices to pay.</li>
<li>Click on Action &gt; Sale invoice payment.</li>
<li>A wizard will be displayed and select journal and put amount that you want
to pay.</li>
</ol>
<p>Payment one invoice:</p>
<ol class="arabic simple">
<li>Go to Sales &gt; Orders &gt; Invoices.</li>
<li>Enter to invoice form.</li>
<li>Click “register payment”.</li>
<li>A wizard will be displayed and select journal and put amount that you want
to pay.</li>
</ol>
</div>
<div class="section" id="bug-tracker">
<h2><a class="toc-backref" href="#toc-entry-3">Bug Tracker</a></h2>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/sale-workflow/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/sale-workflow/issues/new?body=module:%20sale_payment_sheet%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h2><a class="toc-backref" href="#toc-entry-4">Credits</a></h2>
<div class="section" id="authors">
<h3><a class="toc-backref" href="#toc-entry-5">Authors</a></h3>
<ul class="simple">
<li>Tecnativa</li>
</ul>
</div>
<div class="section" id="contributors">
<h3><a class="toc-backref" href="#toc-entry-6">Contributors</a></h3>
<ul class="simple">
<li><a class="reference external" href="https://www.tecnativa.com/">Tecnativa</a>:<ul>
<li>Carlos Dauden</li>
<li>Sergio Teruel</li>
<li>César A. Sánchez</li>
<li>Carolina Fernandez</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
<h3><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h3>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/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-workflow/tree/16.0/sale_payment_sheet">OCA/sale-workflow</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</div>
</body>
</html>

View file

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

View file

@ -0,0 +1,197 @@
# Copyright 2020 Tecnativa - Carlos Dauden
# Copyright 2020 Tecnativa - Sergio Teruel
# Copyright 2023 Tecnativa - Carolina Fernandez
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from freezegun import freeze_time
from odoo.exceptions import UserError, ValidationError
from odoo.tests import Form, TransactionCase, tagged
@tagged("post_install", "-at_install")
class TestSaleInvoicePayment(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
if not cls.env.company.chart_template_id:
# Load a CoA if there's none in current company
coa = cls.env.ref("l10n_generic_coa.configurable_chart_template", False)
if not coa:
# Load the first available CoA
coa = cls.env["account.chart.template"].search(
[("visible", "=", True)], limit=1
)
coa.try_loading(company=cls.env.company, install_demo=False)
# Remove time zone from user to avoid to time local representation
cls.env.user.partner_id.tz = False
# Archive all reconciliation models to avoid them interfering with the tests
cls.env["account.reconcile.model"].search([]).active = False
account_group = cls.env.ref("account.group_account_user")
cls.env.user.write({"groups_id": [(4, account_group.id)]})
no_one_group = cls.env.ref("base.group_no_one")
cls.env.user.write({"groups_id": [(4, no_one_group.id)]})
cls.wizard_obj = cls.env["sale.invoice.payment.wiz"]
cls.SalePaymentSheet = cls.env["sale.payment.sheet"]
cls.partner = cls.env["res.partner"].create({"name": "Test partner"})
suspense_account = cls.env["account.account"].create(
{
"code": "assetcurrent",
"name": "Test Current Asset",
"account_type": "asset_current",
}
)
cls.bank_journal = cls.env["account.journal"].create(
{
"name": "Bank journal",
"type": "bank",
"code": "test",
"suspense_account_id": suspense_account.id,
}
)
cls.account_invoice = cls.env["account.account"].create(
{
"code": "test",
"name": "Test account",
"account_type": "income",
}
)
cls.invoice1 = cls._create_invoice(cls)
cls.invoice2 = cls._create_invoice(cls)
cls.refund1 = cls._create_refund(cls)
(cls.invoice1 + cls.invoice2 + cls.refund1).action_post()
def _create_invoice(self):
invoice_form = Form(
self.env["account.move"].with_context(default_move_type="out_invoice")
)
invoice_form.partner_id = self.partner
with invoice_form.invoice_line_ids.new() as line_form:
line_form.name = "invoice test"
line_form.account_id = self.account_invoice
line_form.quantity = 1.0
line_form.price_unit = 100.00
return invoice_form.save()
def _create_refund(self):
invoice_form = Form(
self.env["account.move"].with_context(default_move_type="out_refund")
)
invoice_form.partner_id = self.partner
with invoice_form.invoice_line_ids.new() as line_form:
line_form.name = "invoice test"
line_form.account_id = self.account_invoice
line_form.quantity = 1.0
line_form.price_unit = 10.00
return invoice_form.save()
def test_payment_wizard(self):
PaymentWiz = self.env["sale.invoice.payment.wiz"].with_context(
active_model="account.move",
active_ids=(self.invoice1 + self.invoice2).ids,
)
with Form(PaymentWiz) as wiz_form:
wiz_form.journal_id = self.bank_journal
wiz_form.amount = 150.00
wiz = wiz_form.save()
action = wiz.create_sale_invoice_payment_sheet()
sheet = self.SalePaymentSheet.browse(action["res_id"])
self.assertEqual(len(sheet.line_ids), 2)
line_partial_payment = sheet.line_ids.filtered(
lambda ln: ln.transaction_type == "partial"
)
self.assertTrue(line_partial_payment)
self.assertEqual(line_partial_payment.invoice_id, self.invoice2)
line_full_payment = sheet.line_ids.filtered(
lambda ln: ln.transaction_type == "full"
)
self.assertTrue(line_full_payment)
self.assertEqual(line_full_payment.invoice_id, self.invoice1)
self.assertEqual(sheet.amount_total, 150.00)
def _create_payment_sheet(self):
with Form(self.SalePaymentSheet) as sheet_form:
sheet_form.journal_id = self.bank_journal
for index, invoice in enumerate(self.invoice1 + self.invoice2):
with sheet_form.line_ids.new() as line_sheet:
line_sheet.partner_id = self.partner
line_sheet.invoice_id = invoice
# Only write for partial amount payed, by default the
# amount line is total amount residual
if index > 0:
line_sheet.amount = 50.0
return sheet_form.save()
@freeze_time("2021-01-01 09:30:00")
def test_manual_payment_sheet(self):
sheet = self._create_payment_sheet()
self.assertEqual(len(sheet.line_ids), 2)
line_partial_payment = sheet.line_ids.filtered(
lambda ln: ln.transaction_type == "partial"
)
self.assertTrue(line_partial_payment)
self.assertEqual(line_partial_payment.invoice_id, self.invoice2)
line_full_payment = sheet.line_ids.filtered(
lambda ln: ln.transaction_type == "full"
)
self.assertTrue(line_full_payment)
self.assertEqual(line_full_payment.invoice_id, self.invoice1)
self.assertEqual(
sheet.name,
"{} - {} - {}".format(
sheet.date.strftime("%Y.%m.%d"),
sheet.journal_id.name,
sheet.user_id.name,
),
)
self.assertEqual(
line_partial_payment.name,
"[{}] - {} - {} - ({})".format(
"09:30",
line_partial_payment.sheet_id.user_id.name,
line_partial_payment.invoice_id.name,
dict(
line_partial_payment._fields[
"transaction_type"
]._description_selection(line_partial_payment.env)
).get(line_partial_payment.transaction_type),
),
)
def test_payment_sheet_confirm(self):
sheet = self._create_payment_sheet()
sheet.button_confirm_sheet()
self.assertTrue(sheet.statement_id)
self.assertEqual(len(sheet.line_ids.mapped("statement_line_id")), 2)
def test_payment_sheet_reopen(self):
sheet = self._create_payment_sheet()
sheet.button_confirm_sheet()
sheet.button_reopen()
self.assertFalse(sheet.statement_id)
def test_payment_sheet_unlink(self):
sheet = self._create_payment_sheet()
sheet.button_confirm_sheet()
with self.assertRaises(UserError):
sheet.unlink()
def test_payment_sheet_line_unlink(self):
sheet = self._create_payment_sheet()
sheet.button_confirm_sheet()
with self.assertRaises(UserError):
sheet.line_ids.unlink()
def test_button_bank_statement(self):
sheet = self._create_payment_sheet()
sheet.button_bank_statement()
def test_payment_sheet_invoice_constraint(self):
# You can not add full invoice payed more than one time.
sheet = self._create_payment_sheet()
with self.assertRaises(ValidationError):
with Form(sheet) as sheet_form:
with sheet_form.line_ids.new() as line_sheet:
line_sheet.partner_id = self.partner
line_sheet.invoice_id = self.invoice1
sheet_form.save()

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_users_form" model="ir.ui.view">
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form" />
<field name="arch" type="xml">
<notebook position="inside">
<page string="sale payment sheet">
<group>
<field name="commercial_journal_ids" widget="many2many_tags" />
</group>
</page>
</notebook>
</field>
</record>
</odoo>

View file

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!--
Use a custom view instead of account.view_invoice_tree because this one has
a lot fields and in small screens there are to many columns
-->
<record id="view_invoice_tree" model="ir.ui.view">
<field name="name">sale.payment.sheet.account.invoice.tree</field>
<field name="model">account.move</field>
<field name="arch" type="xml">
<tree
decoration-info="state == 'draft'"
decoration-muted="state == 'cancel'"
>
<field name="date" />
<field name="name" />
<field name="partner_shipping_id" optional="show" />
<field name="partner_id" optional="show" />
<field name="ref" optional="hide" />
<field name="invoice_user_id" optional="hide" string="Sales Person" />
<field name="invoice_date_due" optional="show" />
<field
name="amount_untaxed_signed"
string="Tax Excluded"
sum="Total"
optional="hide"
/>
<field name="amount_total_signed" sum="Total Amount" string="Total" />
<field
name="amount_residual_signed"
string="Amount Due"
sum="Amount Due"
optional="show"
/>
<field name="state" optional="hide" />
<field
name="company_id"
groups="base.group_multi_company"
optional="show"
/>
<field name="currency_id" invisible="1" />
</tree>
</field>
</record>
<record id="action_invoice_sale_payment_sheet" model="ir.actions.act_window">
<field name="name">Invoices</field>
<field name="res_model">account.move</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_id" ref="sale_payment_sheet.view_invoice_tree" />
<field name="domain">[
('state', '=', 'posted'),
('move_type', 'in', ['out_invoice', 'out_refund'])]</field>
<field name="context">{
'default_move_type':'out_invoice',
'move_type':'out_invoice',
'journal_type': 'sale',
'search_default_in_payment': True,
'search_default_unpaid': True,
}
</field>
<field name="search_view_id" ref="account.view_account_invoice_filter" />
</record>
<menuitem
id="sale_payment_invoice"
parent="sale.sale_order_menu"
action="action_invoice_sale_payment_sheet"
name="Invoices"
sequence="100"
/>
</odoo>

View file

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_sale_payment_sheet_tree" model="ir.ui.view">
<field name="name">sale.payment.sheet.tree</field>
<field name="model">sale.payment.sheet</field>
<field name="arch" type="xml">
<tree decoration-info="state=='open'">
<field name="name" />
<field name="date" />
<field name="journal_id" />
<field name="amount_total" />
<field name="company_id" groups="base.group_multi_company" />
<field name="currency_id" invisible="1" />
<field name="state" />
</tree>
</field>
</record>
<record id="view_sale_payment_sheet_search" model="ir.ui.view">
<field name="name">sale.payment.sheet.search</field>
<field name="model">sale.payment.sheet</field>
<field name="arch" type="xml">
<search string="Search sale payment sheets">
<field name="name" string="Payment sheet" />
<field name="date" />
<filter string="Draft" name="draft" domain="[('state','=','open')]" />
<filter
string="Confirmed"
name="confirmed"
domain="[('state','=','confirm')]"
/>
<field name="journal_id" domain="[('type', '=', 'bank')]" />
<group expand="0" string="Group By">
<filter
string="Journal"
name="journal"
context="{'group_by': 'journal_id'}"
/>
<filter
string="Status"
name="status"
context="{'group_by': 'state'}"
/>
<filter string="Date" name="date" context="{'group_by': 'date'}" />
</group>
</search>
</field>
</record>
<record id="view_sale_payment_sheet_form" model="ir.ui.view">
<field name="name">sale.payment.sheet.form</field>
<field name="model">sale.payment.sheet</field>
<field name="priority">1</field>
<field name="arch" type="xml">
<form>
<header>
<button
name="button_confirm_sheet"
states="open"
string="Confirm sheet"
type="object"
/>
<button
name="button_reopen"
states="confirm"
string="Reset to New"
type="object"
/>
<field
name="state"
widget="statusbar"
statusbar_visible="open,confirm"
/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button
class="oe_stat_button"
name="button_bank_statement"
string="Bank statement"
type="object"
icon="fa-bars"
groups="account.group_account_user"
states="confirm"
/>
</div>
<div class="oe_title oe_inline">
<label for="name" class="oe_edit_only" />
<h1>
<field name="name" />
</h1>
</div>
<group>
<group>
<field name="commercial_journal_ids" invisible="1" />
<field
name="journal_id"
widget="selection"
domain="[('id', 'in', commercial_journal_ids)]"
/>
<field
name="date"
options="{'datepicker': {'warn_future': true}}"
/>
<field
name='company_id'
options="{'no_create': True}"
groups="base.group_multi_company"
/>
<field name="group_lines" />
<field name="currency_id" invisible="1" />
<field name="user_id" invisible="1" />
</group>
</group>
<notebook>
<page string="Transactions" name="payment_lines">
<field name="line_ids" context="{'date':date}">
<tree
editable="bottom"
decoration-danger="amount &lt; 0.0"
>
<field name="sequence" widget="handle" />
<field name="date" />
<field name="name" />
<field
name="partner_id"
domain="['|',('parent_id','=',False),('is_company','=',True)]"
/>
<field
name="invoice_id"
domain="[('partner_id','=', partner_id), ('amount_residual', '>', 0.0)]"
options="{'no_create': True}"
/>
<field name="ref" groups="base.group_no_one" />
<field name="transaction_type" optional="show" />
<field name="note" optional="hidden" />
<field name="amount" sum="Total" />
<field name="journal_currency_id" invisible="1" />
<field name="state" invisible="1" />
</tree>
</field>
</page>
</notebook>
</sheet>
<div class="o_attachment_preview" />
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers" />
<field name="message_ids" widget="mail_thread" />
</div>
</form>
</field>
</record>
<record id="action_sale_payment_sheet" model="ir.actions.act_window">
<field name="name">Sale payment sheet</field>
<field name="res_model">sale.payment.sheet</field>
<field name="view_mode">tree,form</field>
<field name="domain">[]</field>
<field name="context">{}</field>
<field name="search_view_id" ref="view_sale_payment_sheet_search" />
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Register a invoice payment (Salesman)
</p>
</field>
</record>
<menuitem
id="sale_payment_sheet_menu"
parent="sale.sale_order_menu"
action="action_sale_payment_sheet"
name="Payments"
sequence="120"
/>
</odoo>

View file

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

View file

@ -0,0 +1,163 @@
# Copyright 2020 Tecnativa - Carlos Dauden
# Copyright 2020 Tecnativa - Sergio Teruel
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import _, api, fields, models
from odoo.exceptions import UserError
class SaleInvoicePaymentWiz(models.TransientModel):
_name = "sale.invoice.payment.wiz"
_description = "Sale invoice payment wizard"
user_id = fields.Many2one(
"res.users",
string="Responsible",
required=False,
default=lambda self: self.env.user,
)
commercial_journal_ids = fields.Many2many(related="user_id.commercial_journal_ids")
currency_id = fields.Many2one(
"res.currency", compute="_compute_currency", string="Currency"
)
journal_id = fields.Many2one(
comodel_name="account.journal",
string="Journal",
required=True,
)
amount = fields.Monetary(
currency_field="currency_id",
required=True,
compute="_compute_amount",
readonly=False,
store=True,
)
ref = fields.Char(string="Reference")
wiz_line_ids = fields.One2many("sale.invoice.payment.line.wiz", "wiz_id")
partner_id = fields.Many2one(comodel_name="res.partner")
@api.depends("wiz_line_ids.is_selected")
def _compute_amount(self):
for wiz in self:
amount = 0.0
for wiz_line in wiz.wiz_line_ids.filtered("is_selected"):
if wiz_line.invoice_id.move_type == "out_refund":
amount -= wiz_line.amount_residual
else:
amount += wiz_line.amount_residual
wiz.amount = amount
@api.model
def default_get(self, fields_list):
res = super(SaleInvoicePaymentWiz, self).default_get(fields_list)
invoice_ids = self.env.context.get("invoice_ids")
res["journal_id"] = self.env.user.commercial_journal_ids[:1].id
if (
self.env.context.get("active_model", False) != "account.move"
and not invoice_ids
):
return res
invoices = self.env["account.move"].browse(
invoice_ids or self.env.context.get("active_ids")
)
res["wiz_line_ids"] = [
(0, 0, {"wiz_id": self.id, "invoice_id": x.id}) for x in invoices
]
res["partner_id"] = invoices[:1].partner_id.id
return res
@api.depends("journal_id")
def _compute_currency(self):
for wiz in self:
wiz.currency_id = wiz.journal_id.currency_id
def create_sale_invoice_payment_sheet(self):
invoices = (
self.wiz_line_ids.filtered("is_selected").mapped("invoice_id")
).filtered(lambda inv: inv.state == "posted" and inv.payment_state != "paid")
if not invoices:
raise UserError(
_("You have to select at least an invoice to make a payment.")
)
# Search an open payment sheet or create one if not exists
SalePaymentSheet = self.env["sale.payment.sheet"]
sheet = SalePaymentSheet.search(
[
("state", "=", "open"),
("user_id", "=", self.env.user.id),
("journal_id", "=", self.journal_id.id),
("date", "=", fields.Date.today()),
]
)
if not sheet:
sheet = SalePaymentSheet.create(
{
"user_id": self.env.user.id,
"journal_id": self.journal_id.id,
"date": fields.Date.today(),
}
)
# First process refund invoices su summarize negative amounts
for invoice in invoices.filtered(lambda inv: inv.move_type == "out_refund"):
self._process_invoice(sheet, invoice)
for invoice in invoices.filtered(
lambda inv: inv.move_type == "out_invoice"
).sorted(key=lambda x: (x.date, x.id)):
self._process_invoice(sheet, invoice)
return sheet.get_formview_action()
def _process_invoice(self, sheet, invoice):
all_sheet_lines = sheet.line_ids.filtered(lambda ln: ln.invoice_id == invoice)
sheet_line = all_sheet_lines.filtered(lambda ln: ln.ref == self.ref)
other_lines = all_sheet_lines - sheet_line
invoice_amount_residual = (
invoice.amount_residual
if invoice.move_type == "out_invoice"
else -invoice.amount_residual
)
invoice_amount_residual -= sum(other_lines.mapped("amount"))
amount_pay = 0.0
if self.amount > 0:
amount_pay = (
invoice_amount_residual
if self.amount >= invoice_amount_residual
else self.amount
)
elif invoice.move_type == "out_refund":
amount_pay = invoice_amount_residual
if amount_pay:
if sheet_line:
sheet_line.amount = amount_pay
else:
sheet.line_ids = [
(
0,
0,
self._prepare_sheet_line_values(invoice, amount_pay),
)
]
self.amount -= amount_pay
def _prepare_sheet_line_values(self, invoice, amount_pay):
return {
"amount": amount_pay,
"partner_id": invoice.partner_id.id,
"invoice_id": invoice.id,
"ref": self.ref,
}
class SaleInvoicePaymentLineWiz(models.TransientModel):
_name = "sale.invoice.payment.line.wiz"
_description = "Sale invoice payment lines wizard"
wiz_id = fields.Many2one("sale.invoice.payment.wiz")
is_selected = fields.Boolean(default=True)
invoice_id = fields.Many2one("account.move")
invoice_date = fields.Date(related="invoice_id.invoice_date")
amount_total = fields.Monetary(related="invoice_id.amount_total")
amount_residual = fields.Monetary(related="invoice_id.amount_residual")
invoice_date_due = fields.Date(related="invoice_id.invoice_date_due")
currency_id = fields.Many2one("res.currency", related="invoice_id.currency_id")
state = fields.Selection(related="invoice_id.state")

View file

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="sale_invoice_payment_wiz" model="ir.ui.view">
<field name="name">Sale invoice payment wizard</field>
<field name="model">sale.invoice.payment.wiz</field>
<field name="arch" type="xml">
<form string="Sale invoice payment wizard">
<group>
<field name="user_id" invisible="1" />
<field name="commercial_journal_ids" invisible="1" />
<field
name="journal_id"
widget="selection"
domain="[('id', 'in', commercial_journal_ids)]"
/>
<field name="amount" />
<field name="ref" />
<field name="partner_id" invisible="1" />
</group>
<field name="wiz_line_ids" nolabel="1" colspan="2">
<tree editable="bottom" create="0">
<field name="state" invisible="1" />
<field name="is_selected" widget="boolean_toggle" />
<field name="invoice_id" />
<field name="invoice_date" />
<field name="amount_total" />
<field name="amount_residual" />
<field name="invoice_date_due" />
<field name="currency_id" invisible="1" />
</tree>
</field>
<footer>
<button
name="create_sale_invoice_payment_sheet"
string="Payment"
type="object"
class="btn-primary"
/>
<button string="Cancel" class="btn-secondary" special="cancel" />
</footer>
</form>
</field>
</record>
<record id="action_sale_invoice_payment_wiz" model="ir.actions.act_window">
<field name="name">Sale invoice payment</field>
<field name="res_model">sale.invoice.payment.wiz</field>
<field name="binding_model_id" ref="account.model_account_move" />
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</odoo>