Initial commit: OCA Workflow Process packages (456 packages)

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,16 @@
# Models
Detected core models and extensions in purchase_deposit.
```mermaid
classDiagram
class account_move
class purchase_order
class purchase_order_line
class res_company
class res_config_settings
```
Notes
- Classes show model technical names; fields omitted for brevity.
- Items listed under _inherit are extensions of existing models.

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,8 @@
# Wizards
Transient models exposed as UI wizards in purchase_deposit.
```mermaid
classDiagram
class PurchaseAdvancePaymentInv
```

View file

@ -0,0 +1,96 @@
================
Purchase Deposit
================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:043656b61755ac378f4f0356adc1d3012c126d05209c1386acf87a07d1725843
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github
:target: https://github.com/OCA/purchase-workflow/tree/16.0/purchase_deposit
:alt: OCA/purchase-workflow
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_deposit
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=16.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allow purchase order to register deposit similar to that in sales order
**Table of contents**
.. contents::
:local:
Usage
=====
When purchase order is confirmed, a new button "Register Deposit" will appear.
Normally, deposit will be used to create the 1st bill (as deposit).
#. On confirmed purchase order, click Register Deposit button, wizard will open
#. 2 type of deposit bill can be create 1) Down Payment (percentage) 2) Deposit Payment (fixed amount)
#. Fill in the value and click Create bill or just create deposit.
As deposit is created, when user click button "Create Bill" again in purchase order,
the Vendor Bill will be created with deposit amount deducted.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/purchase-workflow/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/purchase-workflow/issues/new?body=module:%20purchase_deposit%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
~~~~~~~
* Elico Corp
* Ecosoft
Contributors
~~~~~~~~~~~~
* Dominique K. <dominique.k@elico-corp.com.sg>
* Kitti Upariphutthiphong <kittiu@ecosoft.co.th>
* Rattapong Chokmasermkul <rattapongc@ecosoft.co.th>
* Joan Mateu <joan.mateu@forgeflow.com>
* `Quartile <https://www.quartile.co>`__:
* Aung Ko Ko Lin
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/purchase-workflow <https://github.com/OCA/purchase-workflow/tree/16.0/purchase_deposit>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,6 @@
# Copyright 2019 Elico Corp, Dominique K. <dominique.k@elico-corp.com.sg>
# Copyright 2019 Ecosoft Co., Ltd., Kitti U. <kittiu@ecosoft.co.th>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from . import models
from . import wizard

View file

@ -0,0 +1,22 @@
# Copyright 2019 Elico Corp, Dominique K. <dominique.k@elico-corp.com.sg>
# Copyright 2019 Ecosoft Co., Ltd., Kitti U. <kittiu@ecosoft.co.th>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
"name": "Purchase Deposit",
"version": "16.0.1.1.0",
"summary": "Option to create deposit from purchase order",
"author": "Elico Corp, Ecosoft, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/purchase-workflow",
"category": "Purchase Management",
"license": "AGPL-3",
"depends": ["purchase"],
"data": [
"security/ir.model.access.csv",
"wizard/purchase_make_invoice_advance_views.xml",
"views/res_config_settings_views.xml",
"views/purchase_view.xml",
],
"installable": True,
"auto_install": False,
}

View file

@ -0,0 +1,272 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_deposit
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: arp\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid ""
"<span attrs=\"{'invisible': [('advance_payment_method', '!=', "
"'percentage')]}\" class=\"oe_inline\">%</span>"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__deposit_account_id
msgid "Account used for deposits"
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Advance: %s"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Cancel"
msgstr ""
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_res_company
msgid "Companies"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Create Bill"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Create and View bills"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__create_uid
msgid "Created by"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__create_date
msgid "Created on"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_res_company__purchase_deposit_product_id
#: model:ir.model.fields,help:purchase_deposit.field_res_config_settings__purchase_deposit_product_id
msgid "Default product used for payment advances."
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Deposit Payment"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__amount
msgid "Deposit Payment Amount"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__purchase_deposit_product_id
msgid "Deposit Payment Product"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.res_config_settings_view_form_purchase
msgid "Deposit Payments"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields.selection,name:purchase_deposit.selection__purchase_advance_payment_inv__advance_payment_method__fixed
msgid "Deposit payment (fixed amount)"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields.selection,name:purchase_deposit.selection__purchase_advance_payment_inv__advance_payment_method__percentage
msgid "Deposit payment (percentage)"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_order_line__is_deposit
msgid ""
"Deposit payments are made when creating bills from a purchase order. They "
"are not copied when duplicating a purchase order."
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__display_name
msgid "Display Name"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__deposit_account_id
msgid "Expense Account"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__id
msgid "ID"
msgstr ""
#. module: purchase_deposit
#: model:ir.actions.act_window,name:purchase_deposit.action_view_purchase_advance_payment_inv
msgid "Invoice Order"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Invoice Purchases Order"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid ""
"Invoices will be created in draft so that you can review them before "
"validation."
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_order_line__is_deposit
msgid "Is a deposit payment"
msgstr ""
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv____last_update
msgid "Last Modified on"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__write_uid
msgid "Last Updated by"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__write_date
msgid "Last Updated on"
msgstr ""
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_res_config_settings
msgid "Procurement purchase grouping settings"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.res_config_settings_view_form_purchase
msgid "Product used for deposit payments"
msgstr ""
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_advance_payment_inv
msgid "Purchase Advance Payment Invoice"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_res_company__purchase_deposit_product_id
#: model:ir.model.fields,field_description:purchase_deposit.field_res_config_settings__purchase_deposit_product_id
msgid "Purchase Deposit Product"
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Purchase Deposits"
msgstr ""
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_order
msgid "Purchase Order"
msgstr ""
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_order_line
msgid "Purchase Order Line"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_order_form_inherit
msgid "Register Deposit"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__deposit_taxes_id
msgid "Taxes used for deposits"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__amount
msgid "The amount to be invoiced in advance, taxes excluded."
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "The percentage of the deposit must be not over 100"
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"The product used to invoice a down payment should be of type \"Service\". "
"Please use another product or update this product."
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"The product used to invoice a down payment should have an invoice policy set "
"to \"Ordered quantities\". Please update your deposit product to be able to "
"create a deposit invoice."
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "The value of the deposit must be positive."
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"There is no purchase account defined for this product: %s.\n"
"You may have to install a chart of account from Accounting app, settings "
"menu."
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__deposit_taxes_id
msgid "Vendor Taxes"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__advance_payment_method
msgid "What do you want to invoice?"
msgstr ""

View file

@ -0,0 +1,270 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_deposit
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid ""
"<span attrs=\"{'invisible': [('advance_payment_method', '!=', "
"'percentage')]}\" class=\"oe_inline\">%</span>"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__deposit_account_id
msgid "Account used for deposits"
msgstr "Konto za depozite"
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Advance: %s"
msgstr "Avans: %s"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Cancel"
msgstr "Otkaži"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_res_company
msgid "Companies"
msgstr "Kompanije"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Create Bill"
msgstr "Kreiraj ulazni račun"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Create and View bills"
msgstr "Kreiraj i prikaži račune"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_res_company__purchase_deposit_product_id
#: model:ir.model.fields,help:purchase_deposit.field_res_config_settings__purchase_deposit_product_id
msgid "Default product used for payment advances."
msgstr "Standardni proizvod korišten za avanse plaćanja."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Deposit Payment"
msgstr "Depozitno plaćanje"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__amount
msgid "Deposit Payment Amount"
msgstr "Iznos depozitnog plaćanja"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__purchase_deposit_product_id
msgid "Deposit Payment Product"
msgstr "Proizvod depozitnog plaćanja"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.res_config_settings_view_form_purchase
msgid "Deposit Payments"
msgstr "Depozitna plaćanja"
#. module: purchase_deposit
#: model:ir.model.fields.selection,name:purchase_deposit.selection__purchase_advance_payment_inv__advance_payment_method__fixed
msgid "Deposit payment (fixed amount)"
msgstr "Depozitno plaćanje (fiksni iznos)"
#. module: purchase_deposit
#: model:ir.model.fields.selection,name:purchase_deposit.selection__purchase_advance_payment_inv__advance_payment_method__percentage
msgid "Deposit payment (percentage)"
msgstr "Depozitno plaćanje (procenat)"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_order_line__is_deposit
msgid ""
"Deposit payments are made when creating bills from a purchase order. They "
"are not copied when duplicating a purchase order."
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__display_name
msgid "Display Name"
msgstr "Prikazani naziv"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__deposit_account_id
msgid "Expense Account"
msgstr "Konto za rashode"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__id
msgid "ID"
msgstr "ID"
#. module: purchase_deposit
#: model:ir.actions.act_window,name:purchase_deposit.action_view_purchase_advance_payment_inv
msgid "Invoice Order"
msgstr "Fakturiši nalog"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Invoice Purchases Order"
msgstr "Fakturiši nabavni nalog"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid ""
"Invoices will be created in draft so that you can review them before "
"validation."
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_order_line__is_deposit
msgid "Is a deposit payment"
msgstr "Je depozitno plaćanje"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_account_move
msgid "Journal Entry"
msgstr "Žurnal"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv____last_update
msgid "Last Modified on"
msgstr "Zadnje mijenjano"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__write_uid
msgid "Last Updated by"
msgstr "Zadnji ažurirao"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__write_date
msgid "Last Updated on"
msgstr "Zadnje ažurirano"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_res_config_settings
msgid "Procurement purchase grouping settings"
msgstr "Postavke grupiranja nabavki za prokuraciju"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.res_config_settings_view_form_purchase
msgid "Product used for deposit payments"
msgstr "Proizvod korišten za depozitna plaćanja"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_advance_payment_inv
msgid "Purchase Advance Payment Invoice"
msgstr "Faktura avansnog plaćanja nabavke"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_res_company__purchase_deposit_product_id
#: model:ir.model.fields,field_description:purchase_deposit.field_res_config_settings__purchase_deposit_product_id
msgid "Purchase Deposit Product"
msgstr "Proizvod nabavnog depozita"
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Purchase Deposits"
msgstr "Nabavni depoziti"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_order
msgid "Purchase Order"
msgstr "Nalog za nabavu"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Stavka naloga za nabavu"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_order_form_inherit
msgid "Register Deposit"
msgstr "Registruj depozit"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__deposit_taxes_id
msgid "Taxes used for deposits"
msgstr "Upotreba PDV-a za depozite"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__amount
msgid "The amount to be invoiced in advance, taxes excluded."
msgstr "Iznos koji treba fakturisati unaprijed, bez poreza."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "The percentage of the deposit must be not over 100"
msgstr "Procenat depozita ne smije biti preko 100"
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"The product used to invoice a down payment should be of type \"Service\". "
"Please use another product or update this product."
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"The product used to invoice a down payment should have an invoice policy set"
" to \"Ordered quantities\". Please update your deposit product to be able to"
" create a deposit invoice."
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "The value of the deposit must be positive."
msgstr "Vrijednost depozita mora biti pozitivna."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"There is no purchase account defined for this product: %s.\n"
"You may have to install a chart of account from Accounting app, settings menu."
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__deposit_taxes_id
msgid "Vendor Taxes"
msgstr "Porezi dobavljača"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__advance_payment_method
msgid "What do you want to invoice?"
msgstr "Šta želite fakturisati?"

View file

@ -0,0 +1,308 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_deposit
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-12-20 13:06+0000\n"
"Last-Translator: Alberto Martínez <alberto.martinez@sygel.es>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.2\n"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid ""
"<span attrs=\"{'invisible': [('advance_payment_method', '!=', "
"'percentage')]}\" class=\"oe_inline\">%</span>"
msgstr ""
"<span attrs=\"{'invisible': [('advance_payment_method', '!=', "
"'percentage')]}\" class=\"oe_inline\">%</span>"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__deposit_account_id
msgid "Account used for deposits"
msgstr "Cuenta contable para el anticipo"
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Advance: %s"
msgstr "Anticipo:%s"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Cancel"
msgstr "Cancelar"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_res_company
msgid "Companies"
msgstr "Compañías"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Create Bill"
msgstr "Crear factura"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Create and View bills"
msgstr "Crear y ver facturas"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__create_date
msgid "Created on"
msgstr "Creado en"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_res_company__purchase_deposit_product_id
#: model:ir.model.fields,help:purchase_deposit.field_res_config_settings__purchase_deposit_product_id
msgid "Default product used for payment advances."
msgstr "Producto usado para pagos adelantados."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Deposit Payment"
msgstr "Anticipo"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__amount
msgid "Deposit Payment Amount"
msgstr "Cantidad del anticipo"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__purchase_deposit_product_id
msgid "Deposit Payment Product"
msgstr "Producto de anticipo"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.res_config_settings_view_form_purchase
msgid "Deposit Payments"
msgstr "Anticipo"
#. module: purchase_deposit
#: model:ir.model.fields.selection,name:purchase_deposit.selection__purchase_advance_payment_inv__advance_payment_method__fixed
msgid "Deposit payment (fixed amount)"
msgstr "Anticipo (cantidad fija)"
#. module: purchase_deposit
#: model:ir.model.fields.selection,name:purchase_deposit.selection__purchase_advance_payment_inv__advance_payment_method__percentage
msgid "Deposit payment (percentage)"
msgstr "Anticipo (porcentaje)"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_order_line__is_deposit
msgid ""
"Deposit payments are made when creating bills from a purchase order. They "
"are not copied when duplicating a purchase order."
msgstr ""
"Los pagos a cuenta se realizan al crear facturas a partir de un pedido. No "
"se copian al duplicar una orden de compra."
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__display_name
msgid "Display Name"
msgstr "Nombre mostrado"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__deposit_account_id
msgid "Expense Account"
msgstr "Cuenta de coste"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__id
msgid "ID"
msgstr "Identificación"
#. module: purchase_deposit
#: model:ir.actions.act_window,name:purchase_deposit.action_view_purchase_advance_payment_inv
msgid "Invoice Order"
msgstr "Factura"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Invoice Purchases Order"
msgstr "Factura de compra"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid ""
"Invoices will be created in draft so that you can review them before "
"validation."
msgstr ""
"Las facturas se crearán en borrador para que puedas revisarlas antes de su "
"validación."
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_order_line__is_deposit
msgid "Is a deposit payment"
msgstr "Es un anticipo"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_account_move
msgid "Journal Entry"
msgstr "Asiento Contable"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv____last_update
msgid "Last Modified on"
msgstr "Última modificación el"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__write_date
msgid "Last Updated on"
msgstr "Última actualización el"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_res_config_settings
msgid "Procurement purchase grouping settings"
msgstr "Configuración de la agrupación de compra abastecida"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.res_config_settings_view_form_purchase
msgid "Product used for deposit payments"
msgstr "Producto usado para los anticipos"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_advance_payment_inv
msgid "Purchase Advance Payment Invoice"
msgstr "Factura de anticipo"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_res_company__purchase_deposit_product_id
#: model:ir.model.fields,field_description:purchase_deposit.field_res_config_settings__purchase_deposit_product_id
msgid "Purchase Deposit Product"
msgstr "Producto anticipo"
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Purchase Deposits"
msgstr "Anticipos de compra"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_order
msgid "Purchase Order"
msgstr "Pedido de compra"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Línea de pedido de compra"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_order_form_inherit
msgid "Register Deposit"
msgstr "Crear anticipo"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__deposit_taxes_id
msgid "Taxes used for deposits"
msgstr "Impuestos para los anticipos"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__amount
msgid "The amount to be invoiced in advance, taxes excluded."
msgstr "Importe a facturar por adelantado, sin impuestos."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "The percentage of the deposit must be not over 100"
msgstr "El porcentaje del anticipo no puede ser superior al 100"
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"The product used to invoice a down payment should be of type \"Service\". "
"Please use another product or update this product."
msgstr ""
"El producto utilizado para facturar un anticipo debe de ser del tipo "
"\"Servicio\". Utilice otro producto o actualice este."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"The product used to invoice a down payment should have an invoice policy set "
"to \"Ordered quantities\". Please update your deposit product to be able to "
"create a deposit invoice."
msgstr ""
"El producto para facturar anticipos debería de tener la política de "
"facturación \"Sobre cantidades pedidas\". Actualice el producto anticipo o "
"si lo prefieres crea uno nuevo."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "The value of the deposit must be positive."
msgstr "El importe del anticipo debe de ser positivo."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"There is no purchase account defined for this product: %s.\n"
"You may have to install a chart of account from Accounting app, settings "
"menu."
msgstr ""
"No hay una cuenta contable definida para este producto:%s.\n"
"Es posible que tengas que instalar un plan contable desde la aplicación "
"Contabilidad, en el menú de configuración."
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__deposit_taxes_id
msgid "Vendor Taxes"
msgstr "Impuestos de proveedor"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__advance_payment_method
msgid "What do you want to invoice?"
msgstr "¿Que quieres facturar?"
#~ msgid "Config Settings"
#~ msgstr "Ajustes de configuración"
#~ msgid ""
#~ "Deposit payments are made when creating bills from a purhcase order. They "
#~ "are not copied when duplicating a purchase order."
#~ msgstr ""
#~ "Los anticipos se realizan al crear una factura a partir de un pedido de "
#~ "compra. No se copian al duplicar una orden de compra."
#~ msgid "Create deposit"
#~ msgstr "Crear anticipo"
#~ msgid "Down payment (percentage)"
#~ msgstr "Anticipo (porcentaje)"
#, python-format
#~ msgid "This action is allowed only in Purchase Order sate"
#~ msgstr "Esta acción solo es posible en el estado Pedido de compra"

View file

@ -0,0 +1,319 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_deposit
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-11-03 01:55+0000\n"
"Last-Translator: Alexis de Lattre <alexis@via.ecp.fr>\n"
"Language-Team: none\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid ""
"<span attrs=\"{'invisible': [('advance_payment_method', '!=', "
"'percentage')]}\" class=\"oe_inline\">%</span>"
msgstr ""
"<span attrs=\"{'invisible': [('advance_payment_method', '!=', "
"'percentage')]}\" class=\"oe_inline\">%</span>"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__deposit_account_id
msgid "Account used for deposits"
msgstr "Compte utilisé pour les acomptes"
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Advance: %s"
msgstr "Acompte : %s"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Cancel"
msgstr "Annuler"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_res_company
msgid "Companies"
msgstr "Sociétés"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Create Bill"
msgstr "Créer une facture"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Create and View bills"
msgstr "Créer et afficher les factures"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__create_date
msgid "Created on"
msgstr "Créé le"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_res_company__purchase_deposit_product_id
#: model:ir.model.fields,help:purchase_deposit.field_res_config_settings__purchase_deposit_product_id
msgid "Default product used for payment advances."
msgstr "Article par défaut pour les acomptes."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Deposit Payment"
msgstr "Acompte"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__amount
msgid "Deposit Payment Amount"
msgstr "Montant de l'acompte"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__purchase_deposit_product_id
msgid "Deposit Payment Product"
msgstr "Article pour l'acompte"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.res_config_settings_view_form_purchase
msgid "Deposit Payments"
msgstr "Acomptes"
#. module: purchase_deposit
#: model:ir.model.fields.selection,name:purchase_deposit.selection__purchase_advance_payment_inv__advance_payment_method__fixed
msgid "Deposit payment (fixed amount)"
msgstr "Acompte (montant fixe)"
#. module: purchase_deposit
#: model:ir.model.fields.selection,name:purchase_deposit.selection__purchase_advance_payment_inv__advance_payment_method__percentage
msgid "Deposit payment (percentage)"
msgstr "Acompte (pourcentage)"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_order_line__is_deposit
msgid ""
"Deposit payments are made when creating bills from a purchase order. They "
"are not copied when duplicating a purchase order."
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__deposit_account_id
msgid "Expense Account"
msgstr "Compte de charge"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__id
msgid "ID"
msgstr "ID"
#. module: purchase_deposit
#: model:ir.actions.act_window,name:purchase_deposit.action_view_purchase_advance_payment_inv
msgid "Invoice Order"
msgstr "Facturer la commande"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Invoice Purchases Order"
msgstr "Facturer la commande fournisseur"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid ""
"Invoices will be created in draft so that you can review them before "
"validation."
msgstr ""
"Les factures seront crées à l'état brouillon pour que vous puissiez les "
"consulter avant de les valider."
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_order_line__is_deposit
msgid "Is a deposit payment"
msgstr "Est un acompte"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_account_move
msgid "Journal Entry"
msgstr "Pièce comptable"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_res_config_settings
msgid "Procurement purchase grouping settings"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.res_config_settings_view_form_purchase
msgid "Product used for deposit payments"
msgstr "Article utilisé pour les acomptes"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_advance_payment_inv
msgid "Purchase Advance Payment Invoice"
msgstr "Facture d'achat pour l'acompte"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_res_company__purchase_deposit_product_id
#: model:ir.model.fields,field_description:purchase_deposit.field_res_config_settings__purchase_deposit_product_id
msgid "Purchase Deposit Product"
msgstr "Article d'acompte à l'achat"
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Purchase Deposits"
msgstr ""
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_order
msgid "Purchase Order"
msgstr "Commande fournisseur"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Ligne de commande fournisseur"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_order_form_inherit
msgid "Register Deposit"
msgstr "Enregistrer un acompte"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__deposit_taxes_id
msgid "Taxes used for deposits"
msgstr "Taxes utilisées pour les acomptes"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__amount
msgid "The amount to be invoiced in advance, taxes excluded."
msgstr "Le montant HT pour la facture d'acompte."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "The percentage of the deposit must be not over 100"
msgstr "Le pourcentage d'acompte ne doit pas dépasser 100%"
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"The product used to invoice a down payment should be of type \"Service\". "
"Please use another product or update this product."
msgstr ""
"L'article utilisé pour l'acompte doit être de type \"Service\". Veuillez "
"utiliser un autre article ou modifier l'article existant."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"The product used to invoice a down payment should have an invoice policy set "
"to \"Ordered quantities\". Please update your deposit product to be able to "
"create a deposit invoice."
msgstr ""
"L'article utilisé pour l'acompte doit avoir une politique de contrôle à "
"l'achat \"Sur base des quantités commandés\". Veuillez utiliser un autre "
"article ou modifier l'article existant."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "The value of the deposit must be positive."
msgstr "La valeur de l'acompte doit être positive."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"There is no purchase account defined for this product: %s.\n"
"You may have to install a chart of account from Accounting app, settings "
"menu."
msgstr ""
"Il n'y a pas de compte de charge pour l'article '%s'.\n"
"Vous devriez peut-être installer un plan comptable depuis le menu de "
"configuration de l'application Facturation."
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__deposit_taxes_id
msgid "Vendor Taxes"
msgstr "Taxes fournisseur"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__advance_payment_method
msgid "What do you want to invoice?"
msgstr "Que voulez-vous facturer ?"
#~ msgid "Config Settings"
#~ msgstr "Configuration"
#~ msgid ""
#~ "Deposit payments are made when creating bills from a purhcase order. They "
#~ "are not copied when duplicating a purchase order."
#~ msgstr ""
#~ "Les acomptes sont générés lors de la création de factures à partir d'une "
#~ "commande fournisseur. Ils ne sont pas copiés lors de la duplication d'une "
#~ "commande fournisseur."
#~ msgid "Down payment (percentage)"
#~ msgstr "Acompte (pourcentage)"
#, python-format
#~ msgid "This action is allowed only in Purchase Order sate"
#~ msgstr ""
#~ "Cette action n'est permise que pour les documents à l'état \"Bon de "
#~ "commande\""
#~ msgid "Create Invoices"
#~ msgstr "Créer les factures"
#~ msgid "Create and View Invoices"
#~ msgstr "Créer et afficher les factures"
#~ msgid ""
#~ "Deposit payments are made when creating invoices from a purhcase order. "
#~ "They are not copied when duplicating a purchase order."
#~ msgstr ""
#~ "Les acomptes sont faits lorsqu'on crée des factures d'un bon de commande. "
#~ "Ils ne sont pas copiés lors de la duplication d'un bon de commande."

View file

@ -0,0 +1,291 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_deposit
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-12-20 19: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: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid ""
"<span attrs=\"{'invisible': [('advance_payment_method', '!=', "
"'percentage')]}\" class=\"oe_inline\">%</span>"
msgstr ""
"<span attrs=\"{'invisible': [('advance_payment_method', '!=', "
"'percentage')]}\" class=\"oe_inline\">%</span>"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__deposit_account_id
msgid "Account used for deposits"
msgstr "Conto usato per le cauzioni"
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Advance: %s"
msgstr "Anticipo: %s"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Cancel"
msgstr "Annulla"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_res_company
msgid "Companies"
msgstr "Aziende"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Create Bill"
msgstr "Crea conto"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Create and View bills"
msgstr "Crea e visualizza conti"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__create_date
msgid "Created on"
msgstr "Creato il"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_res_company__purchase_deposit_product_id
#: model:ir.model.fields,help:purchase_deposit.field_res_config_settings__purchase_deposit_product_id
msgid "Default product used for payment advances."
msgstr "Prodotto predefinito utilizzato per anticipi pagamenti."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Deposit Payment"
msgstr "Pagamento cauzione"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__amount
msgid "Deposit Payment Amount"
msgstr "Valore pagamento cauzione"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__purchase_deposit_product_id
msgid "Deposit Payment Product"
msgstr "Prodotto pagamento cauzione"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.res_config_settings_view_form_purchase
msgid "Deposit Payments"
msgstr "Pagamenti cauzione"
#. module: purchase_deposit
#: model:ir.model.fields.selection,name:purchase_deposit.selection__purchase_advance_payment_inv__advance_payment_method__fixed
msgid "Deposit payment (fixed amount)"
msgstr "Pagamento cauzione (valore fisso)"
#. module: purchase_deposit
#: model:ir.model.fields.selection,name:purchase_deposit.selection__purchase_advance_payment_inv__advance_payment_method__percentage
msgid "Deposit payment (percentage)"
msgstr "Pagamento cauzione (percentuale)"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_order_line__is_deposit
msgid ""
"Deposit payments are made when creating bills from a purchase order. They "
"are not copied when duplicating a purchase order."
msgstr ""
"I pagamenti cauzione sono fatti quando si creano i conti da un ordine di "
"vendita. Non vengono copiati quando si duplica un ordine di acquisto."
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__deposit_account_id
msgid "Expense Account"
msgstr "Conto spese"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__id
msgid "ID"
msgstr "ID"
#. module: purchase_deposit
#: model:ir.actions.act_window,name:purchase_deposit.action_view_purchase_advance_payment_inv
msgid "Invoice Order"
msgstr "Ordine fattura"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Invoice Purchases Order"
msgstr "Fattura ordine acquisti"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid ""
"Invoices will be created in draft so that you can review them before "
"validation."
msgstr ""
"Le fatture verranno create in bozza così potranno essere revisionate prima "
"della validazione."
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_order_line__is_deposit
msgid "Is a deposit payment"
msgstr "È un pagamento cauzione"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_account_move
msgid "Journal Entry"
msgstr "Registrazione contabile"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_res_config_settings
msgid "Procurement purchase grouping settings"
msgstr "Impostazioni raggruppamento approvvigionamento acquisti"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.res_config_settings_view_form_purchase
msgid "Product used for deposit payments"
msgstr "Prodotto utilizzato per i pagamenti cauzione"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_advance_payment_inv
msgid "Purchase Advance Payment Invoice"
msgstr "Fattura di acquisto con pagamento anticipato"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_res_company__purchase_deposit_product_id
#: model:ir.model.fields,field_description:purchase_deposit.field_res_config_settings__purchase_deposit_product_id
msgid "Purchase Deposit Product"
msgstr "Prodotto cauzione acquisto"
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Purchase Deposits"
msgstr "Depositi acquisto"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_order
msgid "Purchase Order"
msgstr "Ordine di acquisto"
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Riga ordine di acquisto"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_order_form_inherit
msgid "Register Deposit"
msgstr "Registra cauzione"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__deposit_taxes_id
msgid "Taxes used for deposits"
msgstr "Imposte utilizzate per le cauzioni"
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__amount
msgid "The amount to be invoiced in advance, taxes excluded."
msgstr "Valore da fatturare in anticipo, imposte escluse."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "The percentage of the deposit must be not over 100"
msgstr "La percentuale della cauzione non può essere più di 100"
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"The product used to invoice a down payment should be of type \"Service\". "
"Please use another product or update this product."
msgstr ""
"Il prodottoutilizzato per fatturare un acconto deve essere di tipo "
"\"Servizio\". Utilizzare un altro prodotto o modificare questo."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"The product used to invoice a down payment should have an invoice policy set "
"to \"Ordered quantities\". Please update your deposit product to be able to "
"create a deposit invoice."
msgstr ""
"Il prodotto utilizzato per fatturare un acconto deve avere una politica di "
"fatturazione impostata a \"Quantità ordinate\". Modificare il prodotto "
"cauzione per consentire la creazione di una fattura cauzione."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "The value of the deposit must be positive."
msgstr "Il valore della cauzione deve essere positivo."
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"There is no purchase account defined for this product: %s.\n"
"You may have to install a chart of account from Accounting app, settings "
"menu."
msgstr ""
"Non c'è un conto acquisto definito per questo prodotto: %s\n"
"Bisogna installare il piano dei conti dall'app Contabilità, menu "
"impostazioni."
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__deposit_taxes_id
msgid "Vendor Taxes"
msgstr "Imposte venditore"
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__advance_payment_method
msgid "What do you want to invoice?"
msgstr "Cosa si vuole fatturare?"
#~ msgid "Config Settings"
#~ msgstr "Impostazioni configurazione"

View file

@ -0,0 +1,270 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_deposit
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid ""
"<span attrs=\"{'invisible': [('advance_payment_method', '!=', "
"'percentage')]}\" class=\"oe_inline\">%</span>"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__deposit_account_id
msgid "Account used for deposits"
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Advance: %s"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Cancel"
msgstr ""
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_res_company
msgid "Companies"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Create Bill"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Create and View bills"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__create_uid
msgid "Created by"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__create_date
msgid "Created on"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_res_company__purchase_deposit_product_id
#: model:ir.model.fields,help:purchase_deposit.field_res_config_settings__purchase_deposit_product_id
msgid "Default product used for payment advances."
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Deposit Payment"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__amount
msgid "Deposit Payment Amount"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__purchase_deposit_product_id
msgid "Deposit Payment Product"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.res_config_settings_view_form_purchase
msgid "Deposit Payments"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields.selection,name:purchase_deposit.selection__purchase_advance_payment_inv__advance_payment_method__fixed
msgid "Deposit payment (fixed amount)"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields.selection,name:purchase_deposit.selection__purchase_advance_payment_inv__advance_payment_method__percentage
msgid "Deposit payment (percentage)"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_order_line__is_deposit
msgid ""
"Deposit payments are made when creating bills from a purchase order. They "
"are not copied when duplicating a purchase order."
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__display_name
msgid "Display Name"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__deposit_account_id
msgid "Expense Account"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__id
msgid "ID"
msgstr ""
#. module: purchase_deposit
#: model:ir.actions.act_window,name:purchase_deposit.action_view_purchase_advance_payment_inv
msgid "Invoice Order"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid "Invoice Purchases Order"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_advance_payment_inv
msgid ""
"Invoices will be created in draft so that you can review them before "
"validation."
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_order_line__is_deposit
msgid "Is a deposit payment"
msgstr ""
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv____last_update
msgid "Last Modified on"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__write_uid
msgid "Last Updated by"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__write_date
msgid "Last Updated on"
msgstr ""
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_res_config_settings
msgid "Procurement purchase grouping settings"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.res_config_settings_view_form_purchase
msgid "Product used for deposit payments"
msgstr ""
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_advance_payment_inv
msgid "Purchase Advance Payment Invoice"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_res_company__purchase_deposit_product_id
#: model:ir.model.fields,field_description:purchase_deposit.field_res_config_settings__purchase_deposit_product_id
msgid "Purchase Deposit Product"
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "Purchase Deposits"
msgstr ""
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_order
msgid "Purchase Order"
msgstr ""
#. module: purchase_deposit
#: model:ir.model,name:purchase_deposit.model_purchase_order_line
msgid "Purchase Order Line"
msgstr ""
#. module: purchase_deposit
#: model_terms:ir.ui.view,arch_db:purchase_deposit.view_purchase_order_form_inherit
msgid "Register Deposit"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__deposit_taxes_id
msgid "Taxes used for deposits"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,help:purchase_deposit.field_purchase_advance_payment_inv__amount
msgid "The amount to be invoiced in advance, taxes excluded."
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "The percentage of the deposit must be not over 100"
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"The product used to invoice a down payment should be of type \"Service\". "
"Please use another product or update this product."
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"The product used to invoice a down payment should have an invoice policy set"
" to \"Ordered quantities\". Please update your deposit product to be able to"
" create a deposit invoice."
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid "The value of the deposit must be positive."
msgstr ""
#. module: purchase_deposit
#. odoo-python
#: code:addons/purchase_deposit/wizard/purchase_make_invoice_advance.py:0
#, python-format
msgid ""
"There is no purchase account defined for this product: %s.\n"
"You may have to install a chart of account from Accounting app, settings menu."
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__deposit_taxes_id
msgid "Vendor Taxes"
msgstr ""
#. module: purchase_deposit
#: model:ir.model.fields,field_description:purchase_deposit.field_purchase_advance_payment_inv__advance_payment_method
msgid "What do you want to invoice?"
msgstr ""

View file

@ -0,0 +1,8 @@
# Copyright 2019 Elico Corp, Dominique K. <dominique.k@elico-corp.com.sg>
# Copyright 2019 Ecosoft Co., Ltd., Kitti U. <kittiu@ecosoft.co.th>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from . import account_move
from . import res_company
from . import res_config_settings
from . import purchase

View file

@ -0,0 +1,17 @@
# Copyright 2023 Quartile Limited (https://www.quartile.co)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import models
class AccountMove(models.Model):
_inherit = "account.move"
def action_post(self):
res = super().action_post()
for line in self.line_ids:
if not line.purchase_line_id.is_deposit:
continue
line.purchase_line_id.taxes_id = line.tax_ids
line.purchase_line_id.price_unit = line.price_unit
return res

View file

@ -0,0 +1,35 @@
# Copyright 2019 Elico Corp, Dominique K. <dominique.k@elico-corp.com.sg>
# Copyright 2019 Ecosoft Co., Ltd., Kitti U. <kittiu@ecosoft.co.th>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class PurchaseOrder(models.Model):
_inherit = "purchase.order"
def copy_data(self, default=None):
if default is None:
default = {}
default["order_line"] = [
(0, 0, line.copy_data()[0])
for line in self.order_line
if not line.is_deposit
]
return super().copy_data(default)
class PurchaseOrderLine(models.Model):
_inherit = "purchase.order.line"
is_deposit = fields.Boolean(
string="Is a deposit payment",
help="Deposit payments are made when creating bills from a purchase"
" order. They are not copied when duplicating a purchase order.",
)
def _prepare_account_move_line(self, move=False):
res = super()._prepare_account_move_line(move=move)
if self.is_deposit:
res["quantity"] = -1 * self.qty_invoiced
return res

View file

@ -0,0 +1,15 @@
# Copyright 2023 Quartile Limited
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ResCompany(models.Model):
_inherit = "res.company"
purchase_deposit_product_id = fields.Many2one(
comodel_name="product.product",
string="Purchase Deposit Product",
domain=[("type", "=", "service")],
help="Default product used for payment advances.",
)

View file

@ -0,0 +1,15 @@
# Copyright 2019 Elico Corp, Dominique K. <dominique.k@elico-corp.com.sg>
# Copyright 2019 Ecosoft Co., Ltd., Kitti U. <kittiu@ecosoft.co.th>
# Copyright 2023 Quartile Limited
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
purchase_deposit_product_id = fields.Many2one(
related="company_id.purchase_deposit_product_id",
readonly=False,
)

View file

@ -0,0 +1,7 @@
After install this module, you need to select the product "Purchase Deposit" in
configuration window to be used as default product when create deposit bill.
Go to Purchase > Configuration > Settings, then select product "Purchase Deposit"
Note: If this is not done, by using "Register Deposit" for the first time will
also create product "Purchase Deposit" for you automatically.

View file

@ -0,0 +1,7 @@
* Dominique K. <dominique.k@elico-corp.com.sg>
* Kitti Upariphutthiphong <kittiu@ecosoft.co.th>
* Rattapong Chokmasermkul <rattapongc@ecosoft.co.th>
* Joan Mateu <joan.mateu@forgeflow.com>
* `Quartile <https://www.quartile.co>`__:
* Aung Ko Ko Lin

View file

@ -0,0 +1 @@
This module allow purchase order to register deposit similar to that in sales order

View file

@ -0,0 +1,9 @@
When purchase order is confirmed, a new button "Register Deposit" will appear.
Normally, deposit will be used to create the 1st bill (as deposit).
#. On confirmed purchase order, click Register Deposit button, wizard will open
#. 2 type of deposit bill can be create 1) Down Payment (percentage) 2) Deposit Payment (fixed amount)
#. Fill in the value and click Create bill or just create deposit.
As deposit is created, when user click button "Create Bill" again in purchase order,
the Vendor Bill will be created with deposit amount deducted.

View file

@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_purchase_advance_payment_inv,access_purchase_advance_payment_inv,model_purchase_advance_payment_inv,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_purchase_advance_payment_inv access_purchase_advance_payment_inv model_purchase_advance_payment_inv base.group_user 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,444 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Purchase Deposit</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="purchase-deposit">
<h1 class="title">Purchase Deposit</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:043656b61755ac378f4f0356adc1d3012c126d05209c1386acf87a07d1725843
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/purchase-workflow/tree/16.0/purchase_deposit"><img alt="OCA/purchase-workflow" src="https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/purchase-workflow-16-0/purchase-workflow-16-0-purchase_deposit"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allow purchase order to register deposit similar to that in sales order</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
<p>When purchase order is confirmed, a new button “Register Deposit” will appear.
Normally, deposit will be used to create the 1st bill (as deposit).</p>
<ol class="arabic simple">
<li>On confirmed purchase order, click Register Deposit button, wizard will open</li>
<li>2 type of deposit bill can be create 1) Down Payment (percentage) 2) Deposit Payment (fixed amount)</li>
<li>Fill in the value and click Create bill or just create deposit.</li>
</ol>
<p>As deposit is created, when user click button “Create Bill” again in purchase order,
the Vendor Bill will be created with deposit amount deducted.</p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/purchase-workflow/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/purchase-workflow/issues/new?body=module:%20purchase_deposit%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-4">Authors</a></h2>
<ul class="simple">
<li>Elico Corp</li>
<li>Ecosoft</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-5">Contributors</a></h2>
<ul class="simple">
<li>Dominique K. &lt;<a class="reference external" href="mailto:dominique.k&#64;elico-corp.com.sg">dominique.k&#64;elico-corp.com.sg</a>&gt;</li>
<li>Kitti Upariphutthiphong &lt;<a class="reference external" href="mailto:kittiu&#64;ecosoft.co.th">kittiu&#64;ecosoft.co.th</a>&gt;</li>
<li>Rattapong Chokmasermkul &lt;<a class="reference external" href="mailto:rattapongc&#64;ecosoft.co.th">rattapongc&#64;ecosoft.co.th</a>&gt;</li>
<li>Joan Mateu &lt;<a class="reference external" href="mailto:joan.mateu&#64;forgeflow.com">joan.mateu&#64;forgeflow.com</a>&gt;</li>
<li><a class="reference external" href="https://www.quartile.co">Quartile</a>:<ul>
<li>Aung Ko Ko Lin</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/purchase-workflow/tree/16.0/purchase_deposit">OCA/purchase-workflow</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View file

@ -0,0 +1,5 @@
# Copyright 2019 Elico Corp, Dominique K. <dominique.k@elico-corp.com.sg>
# Copyright 2019 Ecosoft Co., Ltd., Kitti U. <kittiu@ecosoft.co.th>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from . import test_purchase_deposit

View file

@ -0,0 +1,203 @@
# Copyright 2019 Elico Corp, Dominique K. <dominique.k@elico-corp.com.sg>
# Copyright 2019 Ecosoft Co., Ltd., Kitti U. <kittiu@ecosoft.co.th>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import fields
from odoo.exceptions import UserError
from odoo.tests.common import Form, TransactionCase
class TestPurchaseDeposit(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.product_model = cls.env["product.product"]
cls.account_model = cls.env["account.account"]
cls.invoice_model = cls.env["account.move"]
# Create Deposit Account
cls.account_deposit = cls.account_model.create(
{
"name": "Purchase Deposit",
"code": "11620",
"account_type": "asset_current",
}
)
# Create products:
p1 = cls.product1 = cls.product_model.create(
{
"name": "Test Product 1",
"type": "service",
"default_code": "PROD1",
"purchase_method": "purchase",
}
)
cls.po = cls.env["purchase.order"].create(
{
"partner_id": cls.env.ref("base.res_partner_3").id,
"order_line": [
(
0,
0,
{
"product_id": p1.id,
"product_uom": p1.uom_id.id,
"name": p1.name,
"price_unit": 100.0,
"date_planned": fields.Datetime.now(),
"product_qty": 42.0,
},
)
],
}
)
cls.tax = cls.env["account.tax"].create(
{
"name": "Tax 20",
"type_tax_use": "purchase",
"amount": 20,
}
)
def create_advance_payment_form(self):
ctx = {
"active_id": self.po.id,
"active_ids": [self.po.id],
"active_model": "purchase.order",
"create_bills": True,
}
CreateDeposit = self.env["purchase.advance.payment.inv"]
self.po.button_confirm()
self.assertEqual(self.po.state, "purchase")
advance_form = Form(CreateDeposit.with_context(**ctx))
return advance_form
def test_create_deposit_invoice(self):
self.assertEqual(len(self.po.order_line), 1)
# We create invoice from expense
f = self.create_advance_payment_form()
f.advance_payment_method = "percentage"
wizard = f.save()
wizard.amount = 10.0 # 10%
wizard.deposit_account_id = self.account_deposit
wizard.create_invoices()
# New Purchase Deposit is created automatically
deposit = self.env.company.purchase_deposit_product_id
self.assertEqual(deposit.name, "Purchase Deposit")
# 1 Deposit Invoice is created
self.assertRecordValues(
self.po.invoice_ids.invoice_line_ids,
[
{
"product_id": deposit.id,
"price_unit": 420.0,
"name": "Deposit Payment",
}
],
)
# On Purchase Order, there will be new deposit line create
self.assertRecordValues(
self.po.order_line.filtered(lambda li: not li.display_type),
[
{
"product_id": self.product1.id,
"price_unit": 100.0,
"is_deposit": False,
},
{"product_id": deposit.id, "price_unit": 420.0, "is_deposit": True},
],
)
# On Purchase Order, create normal billing
res = self.po.with_context(create_bill=True).action_create_invoice()
invoice = self.invoice_model.browse(res["res_id"])
self.assertRecordValues(
invoice.invoice_line_ids.filtered(lambda li: li.display_type == "product"),
[
{"product_id": self.product1.id, "price_unit": 100.0, "quantity": 42},
{"product_id": deposit.id, "price_unit": 420.0, "quantity": -1},
],
)
def test_create_deposit_invoice_exception_1(self):
"""This test focus on exception cases, when create deposit invoice,
1. This action is allowed only in Purchase Order sate
2. The value of the deposit must be positive
3. For type percentage, The percentage of the deposit must <= 100
"""
self.assertEqual(len(self.po.order_line), 1)
# We create invoice from expense
# 1. The value of the deposit must be positive
f = self.create_advance_payment_form()
f.advance_payment_method = "fixed"
f.amount = 0.0
f.deposit_account_id = self.account_deposit
wizard = f.save()
with self.assertRaises(UserError):
wizard.create_invoices()
# 2. For type percentage, The percentage of the deposit must <= 100
wizard.advance_payment_method = "percentage"
wizard.amount = 101.0
with self.assertRaises(UserError):
wizard.create_invoices()
wizard.amount = 10
def test_create_deposit_invoice_exception_2(self):
"""This test focus on exception cases, when create deposit invoice,
4. Purchase Deposit Product's purchase_method != purchase
"""
self.assertEqual(len(self.po.order_line), 1)
# We create invoice from expense
f = self.create_advance_payment_form()
f.advance_payment_method = "percentage"
f.amount = 101.0
f.deposit_account_id = self.account_deposit
wizard = f.save()
# 4. Purchase Deposit Product's purchase_method != purchase
deposit = self.env.company.purchase_deposit_product_id
deposit.purchase_method = "receive"
wizard.purchase_deposit_product_id = deposit
with self.assertRaises(UserError):
wizard.create_invoices()
def test_create_deposit_invoice_exception_3(self):
"""This test focus on exception cases, when create deposit invoice,
5. Purchase Deposit Product's type != service
"""
self.assertEqual(len(self.po.order_line), 1)
# We create invoice from expense
f = self.create_advance_payment_form()
f.advance_payment_method = "percentage"
f.amount = 101.0
f.deposit_account_id = self.account_deposit
wizard = f.save()
deposit = self.env.company.purchase_deposit_product_id
# 5. Purchase Deposit Product's type != service
deposit.type = "consu"
with self.assertRaises(UserError):
wizard.create_invoices()
def test_deposit_invoice_update_price_and_taxes(self):
f = self.create_advance_payment_form()
f.advance_payment_method = "percentage"
wizard = f.save()
wizard.amount = 10.0
wizard.deposit_account_id = self.account_deposit
wizard.create_invoices()
# New Purchase Deposit is created automatically
deposit = self.env.company.purchase_deposit_product_id
self.assertEqual(deposit.name, "Purchase Deposit")
self.po.invoice_ids.invoice_date = fields.Date.today()
self.po.invoice_ids.invoice_line_ids.write(
{
"price_unit": 500.0,
"tax_ids": [(6, 0, [self.tax.id])],
}
)
self.po.invoice_ids.action_post()
deposit_line = self.po.order_line.filtered(
lambda p: p.is_deposit and not p.display_type
)
self.assertEqual(deposit_line.price_unit, 500.0)
self.assertEqual(deposit_line.taxes_id.id, self.tax.id)

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_purchase_order_form_inherit" model="ir.ui.view">
<field name="name">view.purchase.order.inherit</field>
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.purchase_order_form" />
<field name="arch" type="xml">
<xpath expr="//button[@name='button_cancel']" position="before">
<button
name="%(purchase_deposit.action_view_purchase_advance_payment_inv)d"
states="purchase"
type="action"
string="Register Deposit"
/>
</xpath>
</field>
</record>
</odoo>

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="res_config_settings_view_form_purchase" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.purchase</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="25" />
<field
name="inherit_id"
ref="purchase.res_config_settings_view_form_purchase"
/>
<field name="arch" type="xml">
<xpath
expr="//field[@name='module_account_3way_match']/../.."
position="after"
>
<div class="col-xs-12 col-md-6 o_setting_box">
<div class="o_setting_left_pane" />
<div class="o_setting_right_pane">
<label
for="purchase_deposit_product_id"
string="Deposit Payments"
/>
<div class="text-muted">
Product used for deposit payments
</div>
<div class="text-muted">
<field name="purchase_deposit_product_id" />
</div>
</div>
</div>
</xpath>
</field>
</record>
</odoo>

View file

@ -0,0 +1,5 @@
# Copyright 2019 Elico Corp, Dominique K. <dominique.k@elico-corp.com.sg>
# Copyright 2019 Ecosoft Co., Ltd., Kitti U. <kittiu@ecosoft.co.th>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import purchase_make_invoice_advance

View file

@ -0,0 +1,246 @@
# Copyright 2019 Elico Corp, Dominique K. <dominique.k@elico-corp.com.sg>
# Copyright 2019 Ecosoft Co., Ltd., Kitti U. <kittiu@ecosoft.co.th>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import time
from datetime import datetime
from odoo import _, api, fields, models
from odoo.exceptions import UserError
from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT
class PurchaseAdvancePaymentInv(models.TransientModel):
_name = "purchase.advance.payment.inv"
_description = "Purchase Advance Payment Invoice"
advance_payment_method = fields.Selection(
[
("percentage", "Deposit payment (percentage)"),
("fixed", "Deposit payment (fixed amount)"),
],
string="What do you want to invoice?",
default="percentage",
required=True,
)
purchase_deposit_product_id = fields.Many2one(
comodel_name="product.product",
string="Deposit Payment Product",
domain=[("type", "=", "service")],
default=lambda self: self.env.company.purchase_deposit_product_id,
)
amount = fields.Float(
string="Deposit Payment Amount",
required=True,
help="The amount to be invoiced in advance, taxes excluded.",
)
deposit_account_id = fields.Many2one(
comodel_name="account.account",
string="Expense Account",
compute="_compute_deposit_account_id",
store=True,
readonly=False,
domain=[("deprecated", "=", False)],
help="Account used for deposits",
)
deposit_taxes_id = fields.Many2many(
comodel_name="account.tax",
string="Vendor Taxes",
compute="_compute_deposit_account_id",
store=True,
readonly=False,
help="Taxes used for deposits",
)
@api.depends("purchase_deposit_product_id")
def _compute_deposit_account_id(self):
product = self.purchase_deposit_product_id
self.deposit_account_id = product.property_account_expense_id
self.deposit_taxes_id = product.supplier_taxes_id
def _prepare_deposit_val(self, order, po_line, amount):
ir_property_obj = self.env["ir.property"]
account_id = False
product = self.purchase_deposit_product_id
if product.id:
account_id = (
product.property_account_expense_id.id
or product.categ_id.property_account_expense_categ_id.id
)
if not account_id:
inc_acc = ir_property_obj._get(
"property_account_expense_categ_id", "product.category"
)
account_id = (
order.fiscal_position_id.map_account(inc_acc).id if inc_acc else False
)
if not account_id:
raise UserError(
_(
"There is no purchase account defined for this product: %s."
"\nYou may have to install a chart of account from "
"Accounting app, settings menu."
)
% (product.name,)
)
if self.amount <= 0:
raise UserError(_("The value of the deposit must be positive."))
context = {"lang": order.partner_id.lang}
amount = self.amount
if self.advance_payment_method == "percentage": # Case percent
if self.amount > 100:
raise UserError(_("The percentage of the deposit must be not over 100"))
amount = self.amount / 100 * order.amount_untaxed
name = _("Deposit Payment")
del context
taxes = product.supplier_taxes_id.filtered(
lambda r: not order.company_id or r.company_id == order.company_id
)
if order.fiscal_position_id and taxes:
tax_ids = order.fiscal_position_id.map_tax(taxes).ids
else:
tax_ids = taxes.ids
deposit_val = {
"invoice_origin": order.name,
"move_type": "in_invoice",
"partner_id": order.partner_id.id,
"invoice_line_ids": [
(
0,
0,
{
"name": name,
"account_id": account_id,
"price_unit": amount,
"quantity": 1.0,
"product_uom_id": product.uom_id.id,
"product_id": product.id,
"purchase_line_id": po_line.id,
"tax_ids": [(6, 0, tax_ids)],
"analytic_distribution": po_line.analytic_distribution,
},
)
],
"currency_id": order.currency_id.id,
"invoice_payment_term_id": order.payment_term_id.id,
"fiscal_position_id": order.fiscal_position_id.id
or order.partner_id.property_account_position_id.id,
"purchase_id": order.id,
"narration": order.notes,
}
return deposit_val
def _create_invoice(self, order, po_line, amount):
Invoice = self.env["account.move"]
deposit_val = self._prepare_deposit_val(order, po_line, amount)
invoice = Invoice.create(deposit_val)
invoice.message_post_with_view(
"mail.message_origin_link",
values={"self": invoice, "origin": order},
subtype_id=self.env.ref("mail.mt_note").id,
)
return invoice
def _prepare_advance_purchase_line(self, order, product, tax_ids, amount):
return {
"name": _("Advance: %s") % (time.strftime("%m %Y"),),
"price_unit": amount,
"product_qty": 0.0,
"order_id": order.id,
"product_uom": product.uom_id.id,
"product_id": product.id,
"taxes_id": [(6, 0, tax_ids)],
"date_planned": datetime.today().strftime(DEFAULT_SERVER_DATETIME_FORMAT),
"is_deposit": True,
"sequence": order.order_line
and order.order_line[-1].sequence + 1
or self.env["purchase.order.line"]
.default_get(["sequence"])
.get("sequence"),
}
def _prepare_advance_purchase_section_values(self, order):
context = {"lang": order.partner_id.lang}
so_values = {
"name": _("Purchase Deposits"),
"product_qty": 0.0,
"order_id": order.id,
"display_type": "line_section",
"is_deposit": True,
"sequence": order.order_line
and order.order_line[-1].sequence + 1
or self.env["purchase.order.line"]
.default_get(["sequence"])
.get("sequence"),
}
del context
return so_values
def create_invoices(self):
Purchase = self.env["purchase.order"]
purchases = Purchase.browse(self._context.get("active_ids", []))
# Create deposit product if necessary
product = self.purchase_deposit_product_id
if not product:
vals = self._prepare_deposit_product()
product = self.purchase_deposit_product_id = (
self.env["product.product"].sudo().create(vals)
)
self.env.company.sudo().purchase_deposit_product_id = product
PurchaseLine = self.env["purchase.order.line"]
for order in purchases:
amount = self.amount
if self.advance_payment_method == "percentage": # Case percent
amount = self.amount / 100 * order.amount_untaxed
if product.purchase_method != "purchase":
raise UserError(
_(
"The product used to invoice a down payment should have "
'an invoice policy set to "Ordered quantities". '
"Please update your deposit product to be able to "
"create a deposit invoice."
)
)
if product.type != "service":
raise UserError(
_(
"The product used to invoice a down payment should be "
'of type "Service". Please use another product or '
"update this product."
)
)
taxes = product.supplier_taxes_id.filtered(
lambda r: not order.company_id or r.company_id == order.company_id
)
if order.fiscal_position_id and taxes:
tax_ids = order.fiscal_position_id.map_tax(taxes).ids
else:
tax_ids = taxes.ids
context = {"lang": order.partner_id.lang}
if not any(
line.display_type and line.is_deposit for line in order.order_line
):
PurchaseLine.create(
self._prepare_advance_purchase_section_values(order)
)
adv_po_line_dict = self._prepare_advance_purchase_line(
order, product, tax_ids, amount
)
po_line = PurchaseLine.create(adv_po_line_dict)
del context
self._create_invoice(order, po_line, amount)
if self._context.get("open_bills", False):
return purchases.action_view_invoice()
return {"type": "ir.actions.act_window_close"}
def _prepare_deposit_product(self):
return {
"name": "Purchase Deposit",
"type": "service",
"purchase_method": "purchase",
"property_account_expense_id": self.deposit_account_id.id,
"supplier_taxes_id": [(6, 0, self.deposit_taxes_id.ids)],
"company_id": False,
}

View file

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_purchase_advance_payment_inv" model="ir.ui.view">
<field name="name">Invoice Orders</field>
<field name="model">purchase.advance.payment.inv</field>
<field name="arch" type="xml">
<form string="Invoice Purchases Order">
<p class="oe_grey">
Invoices will be created in draft so that you can review them before validation.
</p>
<group>
<field
name="advance_payment_method"
class="oe_inline"
widget="radio"
/>
<field
name="purchase_deposit_product_id"
invisible="1"
class="oe_inline"
context="{'search_default_services': 1, 'default_type': 'service', 'default_invoice_policy': 'order'}"
/>
<label for="amount" />
<div>
<field name="amount" class="oe_inline" widget="monetary" />
<span
attrs="{'invisible': [('advance_payment_method', '!=', 'percentage')]}"
class="oe_inline"
>%</span>
</div>
<field
name="deposit_account_id"
class="oe_inline"
attrs="{'invisible': [('purchase_deposit_product_id', '!=', False)]}"
/>
<field
name="deposit_taxes_id"
class="oe_inline"
widget="many2many_tags"
domain="[('type_tax_use','=','purchase')]"
attrs="{'invisible': [('purchase_deposit_product_id', '!=', False)]}"
/>
</group>
<footer>
<button
name="create_invoices"
string="Create and View bills"
type="object"
context="{'open_bills': True}"
class="btn-primary"
/>
<button
name="create_invoices"
string="Create Bill"
type="object"
class="btn-primary"
/>
<button string="Cancel" class="btn-default" special="cancel" />
</footer>
</form>
</field>
</record>
<record id="action_view_purchase_advance_payment_inv" model="ir.actions.act_window">
<field name="name">Invoice Order</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">purchase.advance.payment.inv</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</odoo>

View file

@ -0,0 +1,42 @@
[project]
name = "odoo-bringout-oca-purchase-workflow-purchase_deposit"
version = "16.0.0"
description = "Purchase Deposit - Option to create deposit from purchase order"
authors = [
{ name = "Ernad Husremovic", email = "hernad@bring.out.ba" }
]
dependencies = [
"odoo-bringout-oca-ocb-purchase>=16.0.0",
"requests>=2.25.1"
]
readme = "README.md"
requires-python = ">= 3.11"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Office/Business",
]
[project.urls]
homepage = "https://github.com/bringout/0"
repository = "https://github.com/bringout/0"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["purchase_deposit"]
[tool.rye]
managed = true
dev-dependencies = [
"pytest>=8.4.1",
]