Initial commit: Odoo 18.0-20251222 extra-addons
Some checks failed
pre-commit / pre-commit (push) Has been cancelled
tests / Detect unreleased dependencies (push) Has been cancelled
tests / test with OCB (push) Has been cancelled
tests / test with Odoo (push) Has been cancelled

This commit is contained in:
tocmo0nlord
2026-03-13 20:43:25 +00:00
parent 36e847a7df
commit adbe430761
9472 changed files with 1265727 additions and 0 deletions

View File

@@ -0,0 +1,116 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association
=============================
Account Invoice Refund Reason
=============================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:d9ca8be764e068e8f8e76a5c8164f5069dc208297856f4021079dbb6aee90257
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Faccount--invoicing-lightgray.png?logo=github
:target: https://github.com/OCA/account-invoicing/tree/18.0/account_invoice_refund_reason
:alt: OCA/account-invoicing
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/account-invoicing-18-0/account-invoicing-18-0-account_invoice_refund_reason
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/account-invoicing&target_branch=18.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows you to define a list of reasons to create a credit
note from a customer invoice or vendor bill and report on them.
**Table of contents**
.. contents::
:local:
Configuration
=============
- Go to *Accounting > Configuration > Management > Refund Reasons*
- Review the list of predefined reasons to update them or add new ones
Usage
=====
- Go to *Invoicing (Accounting) > Customers > Invoices* (or *Invoicing
(Accounting) > Vendors > Bills*)
- Select an open invoice
- Click on "Credit Note"
- In the wizard, select the reason and add the credit note
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-invoicing/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/account-invoicing/issues/new?body=module:%20account_invoice_refund_reason%0Aversion:%2018.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
-------
* Open Source Integrators
* Serpent CS
Contributors
------------
- Open Source Integrators <http://www.opensourceintegrators.com>
- Maxime Chambreuil <mchambreuil@opensourceintegrators.com>
- Freni Patel <fpatel@opensourceintegrators.com>
- Serpent Consulting Services Pvt. Ltd. <support@serpentcs.com>
- Chanakya Soni <chanakya.soni@serpentcs.com>
- Christopher Ormaza <chris.ormaza@forgeflow.com>
- BT-anieto <alberto.nieto@braintec.com> (https://braintec.com)
- Do Anh Duy <duyda@trobz.com>
Maintainers
-----------
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
.. |maintainer-max3903| image:: https://github.com/max3903.png?size=40px
:target: https://github.com/max3903
:alt: max3903
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-max3903|
This module is part of the `OCA/account-invoicing <https://github.com/OCA/account-invoicing/tree/18.0/account_invoice_refund_reason>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -0,0 +1,5 @@
# Copyright (C) 2019 Open Source Integrators
# Copyright (C) 2019 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models
from . import wizard

View File

@@ -0,0 +1,26 @@
# Copyright (C) 2019 Open Source Integrators
# Copyright (C) 2019 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Account Invoice Refund Reason",
"version": "18.0.1.0.0",
"summary": "Account Invoice Refund Reason.",
"category": "Accounting",
"author": "Open Source Integrators, "
"Serpent CS, "
"Odoo Community Association (OCA)",
"website": "https://github.com/OCA/account-invoicing",
"data": [
"security/ir.model.access.csv",
"data/account.move.refund.reason.csv",
"views/account_move_view.xml",
"views/account_move_refund_reason_view.xml",
"wizard/account_move_reversal_view.xml",
],
"depends": ["account"],
"license": "AGPL-3",
"development_status": "Beta",
"maintainers": ["max3903"],
"installable": True,
}

View File

@@ -0,0 +1,8 @@
id,name
refund_reason_cancellation,Cancellation
refund_reason_noref,Invoice without reference
refund_reason_error,Lease and/or Minimum Charge Error
refund_reason_agreement,Commercial and/or Collection Agreement
refund_reason_difference,Price Difference
refund_reason_correction,Data Correction
refund_reason_others,Others
1 id name
2 refund_reason_cancellation Cancellation
3 refund_reason_noref Invoice without reference
4 refund_reason_error Lease and/or Minimum Charge Error
5 refund_reason_agreement Commercial and/or Collection Agreement
6 refund_reason_difference Price Difference
7 refund_reason_correction Data Correction
8 refund_reason_others Others

View File

@@ -0,0 +1,138 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_refund_reason
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.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: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move_refund_reason
msgid "Account Move Refund Reason"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move_reversal
msgid "Account Move Reversal"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__active
msgid "Active"
msgstr ""
#. module: account_invoice_refund_reason
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.account_invoice_refund_reasons_search
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.view_account_invoice_refund_reason
msgid "Archived"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_cancellation
msgid "Cancellation"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_agreement
msgid "Commercial and/or Collection Agreement"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__create_uid
msgid "Created by"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__create_date
msgid "Created on"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_correction
msgid "Data Correction"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__description
msgid "Description"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__display_name
msgid "Display Name"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__id
msgid "ID"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_noref
msgid "Invoice without reference"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__write_uid
msgid "Last Updated by"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__write_date
msgid "Last Updated on"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_error
msgid "Lease and/or Minimum Charge Error"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__name
msgid "Name"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_others
msgid "Others"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_difference
msgid "Price Difference"
msgstr ""
#. module: account_invoice_refund_reason
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.view_account_invoice_refund_reason
msgid "Reason Name"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_reversal__reason
msgid "Reason displayed on Credit Note"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_bank_statement_line__reason_id
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move__reason_id
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_reversal__reason_id
msgid "Refund Reason"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.actions.act_window,name:account_invoice_refund_reason.refund_reason_action
#: model:ir.ui.menu,name:account_invoice_refund_reason.refund_reasons_menu
msgid "Refund Reasons"
msgstr ""

View File

@@ -0,0 +1,145 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_refund_reason
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2020-06-12 13:19+0000\n"
"Last-Translator: Maria Sparenberg <maria.sparenberg@gmx.net>\n"
"Language-Team: none\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.10\n"
#. module: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move_refund_reason
msgid "Account Move Refund Reason"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move_reversal
msgid "Account Move Reversal"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__active
msgid "Active"
msgstr ""
#. module: account_invoice_refund_reason
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.account_invoice_refund_reasons_search
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.view_account_invoice_refund_reason
msgid "Archived"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_cancellation
msgid "Cancellation"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_agreement
msgid "Commercial and/or Collection Agreement"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__create_uid
msgid "Created by"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__create_date
msgid "Created on"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_correction
msgid "Data Correction"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__description
msgid "Description"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__display_name
msgid "Display Name"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__id
msgid "ID"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_noref
msgid "Invoice without reference"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason____last_update
msgid "Last Modified on"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__write_uid
msgid "Last Updated by"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__write_date
msgid "Last Updated on"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_error
msgid "Lease and/or Minimum Charge Error"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__name
msgid "Name"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_others
msgid "Others"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_difference
msgid "Price Difference"
msgstr ""
#. module: account_invoice_refund_reason
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.view_account_invoice_refund_reason
msgid "Reason Name"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_bank_statement_line__reason_id
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move__reason_id
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_reversal__reason_id
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_payment__reason_id
msgid "Refund Reason"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.actions.act_window,name:account_invoice_refund_reason.refund_reason_action
#: model:ir.ui.menu,name:account_invoice_refund_reason.refund_reasons_menu
msgid "Refund Reasons"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Rechnung"

View File

@@ -0,0 +1,152 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_refund_reason
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-04-13 10:26+0000\n"
"PO-Revision-Date: 2023-10-09 07:44+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move_refund_reason
msgid "Account Move Refund Reason"
msgstr "Traslado de cuenta Motivo del reembolso"
#. module: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move_reversal
msgid "Account Move Reversal"
msgstr "Reversión de asiento"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__active
msgid "Active"
msgstr "Activo"
#. module: account_invoice_refund_reason
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.account_invoice_refund_reasons_search
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.view_account_invoice_refund_reason
msgid "Archived"
msgstr "Archivado"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_cancellation
msgid "Cancellation"
msgstr "Cancelación"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_agreement
msgid "Commercial and/or Collection Agreement"
msgstr "Acuerdo comercial y / o de cobranza"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__create_date
msgid "Created on"
msgstr "Creado en"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_correction
msgid "Data Correction"
msgstr "Corrección de Datos"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__description
msgid "Description"
msgstr "Descripción"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__display_name
msgid "Display Name"
msgstr "Nombre mostrado"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__id
msgid "ID"
msgstr "ID (identificación)"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_noref
msgid "Invoice without reference"
msgstr "Factura sin referencia"
#. module: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move
msgid "Journal Entry"
msgstr "Asiento contable"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason____last_update
msgid "Last Modified on"
msgstr "Última modificación en"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__write_uid
msgid "Last Updated by"
msgstr "Última modificación el"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__write_date
msgid "Last Updated on"
msgstr "Última Actualización por"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_error
msgid "Lease and/or Minimum Charge Error"
msgstr "Arrendamiento y / o error de carga mínima"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__name
msgid "Name"
msgstr "Nombre"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_others
msgid "Others"
msgstr "Otros"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_difference
msgid "Price Difference"
msgstr "Diferencia de Precio"
#. module: account_invoice_refund_reason
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.view_account_invoice_refund_reason
msgid "Reason Name"
msgstr "Nombre del motivo"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_bank_statement_line__reason_id
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move__reason_id
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_reversal__reason_id
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_payment__reason_id
msgid "Refund Reason"
msgstr "Motivo del Reembolso"
#. module: account_invoice_refund_reason
#: model:ir.actions.act_window,name:account_invoice_refund_reason.refund_reason_action
#: model:ir.ui.menu,name:account_invoice_refund_reason.refund_reasons_menu
msgid "Refund Reasons"
msgstr "Motivos de Reembolso"
#~ msgid "Account Invoice refund Reasons"
#~ msgstr "Motivo de Reembolso de la Factura de Cuenta"
#~ msgid "Reason"
#~ msgstr "Razón"
#~ msgid "Reason to credit"
#~ msgstr "Motivo para acreditar"

View File

@@ -0,0 +1,158 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_refund_reason
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2020-03-05 16:13+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>\n"
"Language-Team: none\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 3.10\n"
#. module: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move_refund_reason
msgid "Account Move Refund Reason"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move_reversal
msgid "Account Move Reversal"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__active
msgid "Active"
msgstr ""
#. module: account_invoice_refund_reason
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.account_invoice_refund_reasons_search
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.view_account_invoice_refund_reason
msgid "Archived"
msgstr ""
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_cancellation
msgid "Cancellation"
msgstr "Otkazivanje"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_agreement
msgid "Commercial and/or Collection Agreement"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__create_uid
msgid "Created by"
msgstr "Kreirao"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__create_date
msgid "Created on"
msgstr "Kreirano"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_correction
msgid "Data Correction"
msgstr "Ispravak podataka"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__description
msgid "Description"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__display_name
msgid "Display Name"
msgstr "Naziv"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__id
msgid "ID"
msgstr "ID"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_noref
msgid "Invoice without reference"
msgstr "Račun bez reference"
#. module: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move
msgid "Journal Entry"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason____last_update
msgid "Last Modified on"
msgstr "Zadnje modificirano"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__write_uid
msgid "Last Updated by"
msgstr "Zadnje ažurirao"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__write_date
msgid "Last Updated on"
msgstr "Zadnje ažuriranje"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_error
msgid "Lease and/or Minimum Charge Error"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__name
msgid "Name"
msgstr "Naziv"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_others
msgid "Others"
msgstr "Ostali"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_difference
msgid "Price Difference"
msgstr "Razlika u cijeni"
#. module: account_invoice_refund_reason
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.view_account_invoice_refund_reason
msgid "Reason Name"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_bank_statement_line__reason_id
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move__reason_id
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_reversal__reason_id
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_payment__reason_id
msgid "Refund Reason"
msgstr ""
#. module: account_invoice_refund_reason
#: model:ir.actions.act_window,name:account_invoice_refund_reason.refund_reason_action
#: model:ir.ui.menu,name:account_invoice_refund_reason.refund_reasons_menu
msgid "Refund Reasons"
msgstr "Razlozi odobrenja"
#~ msgid "Account Invoice refund Reasons"
#~ msgstr "Razlozi otkazivanja računa"
#~ msgid "Credit Note"
#~ msgstr "Odobrenje"
#~ msgid "Invoice"
#~ msgstr "Račun"
#~ msgid "Reason"
#~ msgstr "Razlog"
#~ msgid "Reason to credit"
#~ msgstr "Razlog odobrenja"

View File

@@ -0,0 +1,147 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_refund_reason
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-09-23 15: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: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move_refund_reason
msgid "Account Move Refund Reason"
msgstr "Motivo rimborso movimento contabile"
#. module: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move_reversal
msgid "Account Move Reversal"
msgstr "Storno movimento conto"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__active
msgid "Active"
msgstr "Attivo"
#. module: account_invoice_refund_reason
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.account_invoice_refund_reasons_search
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.view_account_invoice_refund_reason
msgid "Archived"
msgstr "In archivio"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_cancellation
msgid "Cancellation"
msgstr "Annullamento"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_agreement
msgid "Commercial and/or Collection Agreement"
msgstr "Contratto commerciale e/o di riscossione"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__create_date
msgid "Created on"
msgstr "Creato il"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_correction
msgid "Data Correction"
msgstr "Correzione dati"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__description
msgid "Description"
msgstr "Descrizione"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__id
msgid "ID"
msgstr "ID"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_noref
msgid "Invoice without reference"
msgstr "Fattura senza riferimento"
#. module: account_invoice_refund_reason
#: model:ir.model,name:account_invoice_refund_reason.model_account_move
msgid "Journal Entry"
msgstr "Registrazione contabile"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_error
msgid "Lease and/or Minimum Charge Error"
msgstr "Errore di locazione e/o di tariffa minima"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_refund_reason__name
msgid "Name"
msgstr "Nome"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_others
msgid "Others"
msgstr "Altri"
#. module: account_invoice_refund_reason
#: model:account.move.refund.reason,name:account_invoice_refund_reason.refund_reason_difference
msgid "Price Difference"
msgstr "Differenza prezzo"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_reversal__reason
msgid "Reason"
msgstr "Motivo"
#. module: account_invoice_refund_reason
#: model_terms:ir.ui.view,arch_db:account_invoice_refund_reason.view_account_invoice_refund_reason
msgid "Reason Name"
msgstr "Nome causale"
#. module: account_invoice_refund_reason
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_bank_statement_line__reason_id
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move__reason_id
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_move_reversal__reason_id
#: model:ir.model.fields,field_description:account_invoice_refund_reason.field_account_payment__reason_id
msgid "Refund Reason"
msgstr "Motivo rimborso"
#. module: account_invoice_refund_reason
#: model:ir.actions.act_window,name:account_invoice_refund_reason.refund_reason_action
#: model:ir.ui.menu,name:account_invoice_refund_reason.refund_reasons_menu
msgid "Refund Reasons"
msgstr "Motivi rimborso"

View File

@@ -0,0 +1,5 @@
# Copyright (C) 2019 Open Source Integrators
# Copyright (C) 2019 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import account_move_refund_reason
from . import account_move

View File

@@ -0,0 +1,10 @@
# Copyright (C) 2019 Open Source Integrators
# Copyright (C) 2019 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class AccountMove(models.Model):
_inherit = "account.move"
reason_id = fields.Many2one("account.move.refund.reason", string="Refund Reason")

View File

@@ -0,0 +1,13 @@
# Copyright (C) 2019 Open Source Integrators
# Copyright (C) 2019 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class AccountMoveRefundReason(models.Model):
_name = "account.move.refund.reason"
_description = "Account Move Refund Reason"
name = fields.Char(required=True, translate=True)
active = fields.Boolean(default=True)
description = fields.Char()

View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

View File

@@ -0,0 +1,2 @@
- Go to *Accounting \> Configuration \> Management \> Refund Reasons*
- Review the list of predefined reasons to update them or add new ones

View File

@@ -0,0 +1,8 @@
- Open Source Integrators \<<http://www.opensourceintegrators.com>\>
- Maxime Chambreuil \<<mchambreuil@opensourceintegrators.com>\>
- Freni Patel \<<fpatel@opensourceintegrators.com>\>
- Serpent Consulting Services Pvt. Ltd. \<<support@serpentcs.com>\>
- Chanakya Soni \<<chanakya.soni@serpentcs.com>\>
- Christopher Ormaza \<<chris.ormaza@forgeflow.com>\>
- BT-anieto \<<alberto.nieto@braintec.com>\> (<https://braintec.com>)
- Do Anh Duy \<<duyda@trobz.com>\>

View File

@@ -0,0 +1,2 @@
This module allows you to define a list of reasons to create a credit
note from a customer invoice or vendor bill and report on them.

View File

@@ -0,0 +1,5 @@
- Go to *Invoicing (Accounting) \> Customers \> Invoices* (or *Invoicing (Accounting) \> Vendors
\> Bills*)
- Select an open invoice
- Click on "Credit Note"
- In the wizard, select the reason and add the credit note

View File

@@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_account_move_refund_reason_user,access_account_move_refund_reason_user,model_account_move_refund_reason,account.group_account_invoice,1,0,0,0
access_account_move_refund_reason_manager,access_account_move_refund_reason_manager,model_account_move_refund_reason,account.group_account_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_account_move_refund_reason_user access_account_move_refund_reason_user model_account_move_refund_reason account.group_account_invoice 1 0 0 0
3 access_account_move_refund_reason_manager access_account_move_refund_reason_manager model_account_move_refund_reason account.group_account_manager 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,463 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
<img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
</a>
<div class="section" id="account-invoice-refund-reason">
<h1>Account Invoice Refund Reason</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:d9ca8be764e068e8f8e76a5c8164f5069dc208297856f4021079dbb6aee90257
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/account-invoicing/tree/18.0/account_invoice_refund_reason"><img alt="OCA/account-invoicing" src="https://img.shields.io/badge/github-OCA%2Faccount--invoicing-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-invoicing-18-0/account-invoicing-18-0-account_invoice_refund_reason"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/account-invoicing&amp;target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows you to define a list of reasons to create a credit
note from a customer invoice or vendor bill and report on them.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="toc-entry-1">Configuration</a></li>
<li><a class="reference internal" href="#usage" id="toc-entry-2">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-3">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-4">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-5">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-6">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-7">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h2><a class="toc-backref" href="#toc-entry-1">Configuration</a></h2>
<ul class="simple">
<li>Go to <em>Accounting &gt; Configuration &gt; Management &gt; Refund Reasons</em></li>
<li>Review the list of predefined reasons to update them or add new ones</li>
</ul>
</div>
<div class="section" id="usage">
<h2><a class="toc-backref" href="#toc-entry-2">Usage</a></h2>
<ul class="simple">
<li>Go to <em>Invoicing (Accounting) &gt; Customers &gt; Invoices</em> (or <em>Invoicing
(Accounting) &gt; Vendors &gt; Bills</em>)</li>
<li>Select an open invoice</li>
<li>Click on “Credit Note”</li>
<li>In the wizard, select the reason and add the credit note</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h2><a class="toc-backref" href="#toc-entry-3">Bug Tracker</a></h2>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-invoicing/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/account-invoicing/issues/new?body=module:%20account_invoice_refund_reason%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h2><a class="toc-backref" href="#toc-entry-4">Credits</a></h2>
<div class="section" id="authors">
<h3><a class="toc-backref" href="#toc-entry-5">Authors</a></h3>
<ul class="simple">
<li>Open Source Integrators</li>
<li>Serpent CS</li>
</ul>
</div>
<div class="section" id="contributors">
<h3><a class="toc-backref" href="#toc-entry-6">Contributors</a></h3>
<ul class="simple">
<li>Open Source Integrators &lt;<a class="reference external" href="http://www.opensourceintegrators.com">http://www.opensourceintegrators.com</a>&gt;<ul>
<li>Maxime Chambreuil &lt;<a class="reference external" href="mailto:mchambreuil&#64;opensourceintegrators.com">mchambreuil&#64;opensourceintegrators.com</a>&gt;</li>
<li>Freni Patel &lt;<a class="reference external" href="mailto:fpatel&#64;opensourceintegrators.com">fpatel&#64;opensourceintegrators.com</a>&gt;</li>
</ul>
</li>
<li>Serpent Consulting Services Pvt. Ltd. &lt;<a class="reference external" href="mailto:support&#64;serpentcs.com">support&#64;serpentcs.com</a>&gt;<ul>
<li>Chanakya Soni &lt;<a class="reference external" href="mailto:chanakya.soni&#64;serpentcs.com">chanakya.soni&#64;serpentcs.com</a>&gt;</li>
</ul>
</li>
<li>Christopher Ormaza &lt;<a class="reference external" href="mailto:chris.ormaza&#64;forgeflow.com">chris.ormaza&#64;forgeflow.com</a>&gt;</li>
<li>BT-anieto &lt;<a class="reference external" href="mailto:alberto.nieto&#64;braintec.com">alberto.nieto&#64;braintec.com</a>&gt; (<a class="reference external" href="https://braintec.com">https://braintec.com</a>)</li>
<li>Do Anh Duy &lt;<a class="reference external" href="mailto:duyda&#64;trobz.com">duyda&#64;trobz.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h3><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h3>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/max3903"><img alt="max3903" src="https://github.com/max3903.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-invoicing/tree/18.0/account_invoice_refund_reason">OCA/account-invoicing</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</div>
</body>
</html>

View File

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

View File

@@ -0,0 +1,149 @@
# Copyright (C) 2019 Open Source Integrators
# Copyright (C) 2019 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import datetime
from odoo.tests.common import TransactionCase
class TestAccountInvoiceRefundReason(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.account_move_obj = cls.env["account.move"]
cls.account_obj = cls.env["account.account"]
cls.journal_obj = cls.env["account.journal"]
cls.invoice_refund_obj = cls.env["account.move.reversal"]
cls.reason_obj = cls.env["account.move.refund.reason"]
cls.payment_term = cls.env.ref("account.account_payment_term_advance")
cls.partner3 = cls.env.ref("base.res_partner_3")
cls.product_id = cls.env.ref("product.product_product_5")
cls.journal = cls.journal_obj.search([("type", "=", "sale")])
if cls.journal:
cls.journal = cls.journal[0]
cls.account_id = cls.account_obj.search(
[("account_type", "=", "income")], limit=1
)
cls.reason_id = cls.env["account.move.refund.reason"].create(
{"name": "Cancellation"}
)
cls.other_reason_id = cls.env["account.move.refund.reason"].create(
{"name": "Wrong Price"}
)
cls.account_rec1_id = cls.account_obj.create(
dict(
code="custacc",
name="customer account",
account_type="asset_receivable",
)
)
cls.invoice_line_data = [
(
0,
0,
{
"product_id": cls.product_id.id,
"quantity": 10.0,
"account_id": cls.account_id.id,
"name": "product test 5",
"price_unit": 100.00,
},
)
]
cls.account_invoice_customer0 = cls.account_move_obj.create(
dict(
name="Test Customer Invoice",
move_type="out_invoice",
invoice_payment_term_id=cls.payment_term.id,
journal_id=cls.journal.id,
partner_id=cls.partner3.id,
invoice_line_ids=cls.invoice_line_data,
)
)
def create_refund_wizard(self, active_ids=None, refund_method="refund", **values):
"""Helper function to create a refund wizard"""
if not active_ids:
active_ids = self.account_invoice_customer0.ids
create_values = dict(
date=datetime.date.today(),
reason_id=self.reason_id.id,
journal_id=self.account_invoice_customer0.journal_id.id,
)
create_values.update(**values)
account_invoice_refund = self.invoice_refund_obj.with_context(
active_model="account.move", active_ids=active_ids
).create(create_values)
if refund_method == "refund":
account_invoice_refund.refund_moves()
else:
account_invoice_refund.modify_moves()
self.assertEqual(
account_invoice_refund.reason,
account_invoice_refund.reason_id.name,
)
return account_invoice_refund
def test_onchange_reason_id(self):
self.account_invoice_customer0.action_post()
self.account_invoice_refund_0 = self.create_refund_wizard()
self.account_invoice_refund_0.reverse_moves()
reversal_move = self.account_invoice_customer0.reversal_move_ids
self.assertEqual(reversal_move.reason_id.ids, self.reason_id.ids)
def test_invoice_with_several_refunds(self):
self.account_invoice_customer0.action_post()
self.account_invoice_refund_0 = self.create_refund_wizard()
self.account_invoice_refund_0.reverse_moves()
reversal_move = self.account_invoice_customer0.reversal_move_ids
self.assertEqual(reversal_move.reason_id.id, self.reason_id.id)
self.account_invoice_refund_1 = self.create_refund_wizard(
reason_id=self.other_reason_id.id
)
self.account_invoice_refund_1.reverse_moves()
reversal_move_2 = (
self.account_invoice_customer0.reversal_move_ids - reversal_move
)
self.assertEqual(reversal_move.reason_id.id, self.reason_id.id)
self.assertEqual(reversal_move_2.reason_id.id, self.other_reason_id.id)
def test_invoice_refund_modify(self):
self.account_invoice_customer0.action_post()
self.account_invoice_refund_0 = self.create_refund_wizard(
refund_method="modify"
)
self.account_invoice_refund_0.reverse_moves()
reversal_move = self.account_invoice_customer0.reversal_move_ids
self.assertEqual(reversal_move.reason_id.id, self.reason_id.id)
def test_invoice_refund_several_invoices(self):
self.account_invoice_customer1 = self.account_move_obj.create(
dict(
name="Test Customer Invoice 2",
move_type="out_invoice",
invoice_payment_term_id=self.payment_term.id,
journal_id=self.journal.id,
partner_id=self.partner3.id,
invoice_line_ids=self.invoice_line_data,
)
)
self.account_invoice_customer0.action_post()
self.account_invoice_customer1.action_post()
self.account_invoice_refund_0_1 = self.create_refund_wizard(
active_ids=[
self.account_invoice_customer0.id,
self.account_invoice_customer1.id,
]
)
self.account_invoice_refund_0_1.reverse_moves()
reversal_move0 = self.account_invoice_customer0.reversal_move_ids
self.assertEqual(reversal_move0.reason_id.id, self.reason_id.id)
reversal_move1 = self.account_invoice_customer1.reversal_move_ids
self.assertEqual(reversal_move1.reason_id.id, self.reason_id.id)

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="account_invoice_refund_reasons_search" model="ir.ui.view">
<field name="name">account.move.refund.reason.search</field>
<field name="model">account.move.refund.reason</field>
<field name="arch" type="xml">
<search>
<field name="name" />
<field name="description" />
<filter
string="Archived"
domain="[('active','=',False)]"
name="archived_reasons_filter"
/>
</search>
</field>
</record>
<record id="view_account_invoice_refund_reason" model="ir.ui.view">
<field name="name">account.move.refund.reason.form</field>
<field name="model">account.move.refund.reason</field>
<field name="arch" type="xml">
<form>
<sheet>
<widget
name="web_ribbon"
title="Archived"
bg_color="text-bg-danger"
invisible="active"
/>
<div class="oe_title">
<label class="oe_edit_only" for="name" string="Reason Name" />
<h1>
<field name="name" placeholder="Reason Name" />
</h1>
</div>
<group>
<field name="description" />
</group>
</sheet>
</form>
</field>
</record>
<record id="view_account_invoice_refund_reason_tree" model="ir.ui.view">
<field name="name">account.move.refund.reason.list</field>
<field name="model">account.move.refund.reason</field>
<field name="arch" type="xml">
<list>
<field name="name" />
</list>
</field>
</record>
<record id="refund_reason_action" model="ir.actions.act_window">
<field name="name">Refund Reasons</field>
<field name="res_model">account.move.refund.reason</field>
<field name="view_mode">list,form</field>
</record>
<menuitem
id="refund_reasons_menu"
name="Refund Reasons"
parent="account.account_management_menu"
action="refund_reason_action"
sequence="10"
/>
</odoo>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_move_form" model="ir.ui.view">
<field name="name">view.account.move.form</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form" />
<field name="arch" type="xml">
<xpath
expr="//group[@name='sale_info_group']/field[@name='ref']"
position="after"
>
<field name="reason_id" invisible="not reason_id" readonly="1" />
</xpath>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,4 @@
# Copyright (C) 2019 Open Source Integrators
# Copyright (C) 2019 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import account_move_reversal

View File

@@ -0,0 +1,27 @@
# Copyright (C) 2019 Open Source Integrators
# Copyright (C) 2019 Serpent Consulting Services Pvt. Ltd.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class AccountMoveReversal(models.TransientModel):
_inherit = "account.move.reversal"
reason_id = fields.Many2one("account.move.refund.reason", string="Refund Reason")
reason = fields.Char(
compute="_compute_reason", precompute=True, store=True, readonly=False
)
@api.depends("reason_id")
def _compute_reason(self):
for record in self:
if record.reason_id:
record.reason = record.reason_id.name
def reverse_moves(self, is_modify=False):
"""Overriden to set the reason_id fields in the new created refunds"""
res = super().reverse_moves(is_modify=is_modify)
self.move_ids.reversal_move_ids.filtered(lambda x: not x.reason_id).write(
{"reason_id": self.reason_id.id}
)
return res

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_account_move_reversal" model="ir.ui.view">
<field name="name">view.account.move.reversal.form</field>
<field name="model">account.move.reversal</field>
<field name="inherit_id" ref="account.view_account_move_reversal" />
<field name="arch" type="xml">
<xpath expr="//field[@name='reason']" position="attributes">
<attribute name="invisible">1</attribute>
<attribute name="required">0</attribute>
</xpath>
<xpath expr="//field[@name='date']" position="before">
<field name="reason_id" required="1" />
</xpath>
</field>
</record>
</odoo>