2
0

Merge PR #1658 into 16.0

Signed-off-by JordiBForgeFlow
This commit is contained in:
OCA-git-bot 2023-10-19 14:30:06 +00:00
commit 2116f6f47c
20 changed files with 1833 additions and 0 deletions

View File

@ -0,0 +1,92 @@
===================
Account Move Budget
===================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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%2Faccount--financial--tools-lightgray.png?logo=github
:target: https://github.com/OCA/account-financial-tools/tree/15.0/account_move_budget
:alt: OCA/account-financial-tools
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/account-financial-tools-15-0/account-financial-tools-15-0-account_move_budget
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/92/15.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows to define accounting budgets.
These budgets can then be used in MIS Builder reports, as an alternate
source.
The difference between the MIS Builder Budget and this module is that
this module defines budgets irrespective of the MIS Builder Template. The
budget is thus agnostic of the reporting format.
For example, the budgeted data can be used in a general Profit & Loss report
and at the same time can be used in a department or project expenses report.
**Table of contents**
.. contents::
:local:
Usage
=====
In order to set up the budget items go to
*Invoicing / Accounting / Miscellaneous / Account Move Budgets*.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-financial-tools/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/account-financial-tools/issues/new?body=module:%20account_move_budget%0Aversion:%2015.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
~~~~~~~
* ForgeFlow
* David Jaen <david.jaen.revert@gmail.com>
Contributors
~~~~~~~~~~~~
* ForgeFlow, S.L. (https://www.forgeflow.com)
* Hector Villarreal <hector.villarreal@forgeflow.com>
* Jordi Ballester Alomar <jordi.ballester@forgeflow.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.
This module is part of the `OCA/account-financial-tools <https://github.com/OCA/account-financial-tools/tree/15.0/account_move_budget>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

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

View File

@ -0,0 +1,20 @@
# Copyright 2019 ForgeFlow S.L. (http://www.forgeflow.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Account Move Budget",
"summary": "Create Accounting Budgets",
"version": "16.0.1.0.0",
"category": "Accounting & Finance",
"website": "https://github.com/OCA/account-financial-tools",
"author": "ForgeFlow, " "Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": ["account", "date_range"],
"data": [
"security/ir.model.access.csv",
"views/account_move_budget_line_views.xml",
"views/account_move_budget_views.xml",
],
}

View File

@ -0,0 +1,409 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_move_budget
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.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_move_budget
#: code:addons/account_move_budget/models/account_move_budget.py:0
#, python-format
msgid "%s (copy)"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__account_id
msgid "Account"
msgstr ""
#. module: account_move_budget
#: model:ir.model,name:account_move_budget.model_account_move_budget
msgid "Account Move Budget"
msgstr ""
#. module: account_move_budget
#: model:ir.model,name:account_move_budget.model_account_move_budget_line
msgid "Account Move Budget Line"
msgstr ""
#. module: account_move_budget
#: model:ir.actions.act_window,name:account_move_budget.account_move_budget_act_window
#: model:ir.ui.menu,name:account_move_budget.account_move_budget_menu
msgid "Account Move Budgets"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_needaction
msgid "Action Needed"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_ids
msgid "Activities"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_exception_decoration
msgid "Activity Exception Decoration"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_state
msgid "Activity State"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_type_icon
msgid "Activity Type Icon"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__analytic_account_id
msgid "Analytic Account"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_attachment_count
msgid "Attachment Count"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__balance
msgid "Balance"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__budget_id
msgid "Budget"
msgstr ""
#. module: account_move_budget
#: model:ir.actions.act_window,name:account_move_budget.account_move_budget_line_act_window
msgid "Budget Items"
msgstr ""
#. module: account_move_budget
#: model_terms:ir.ui.view,arch_db:account_move_budget.account_move_budget_form_view
msgid "Budget Lines"
msgstr ""
#. module: account_move_budget
#: model_terms:ir.ui.view,arch_db:account_move_budget.account_move_budget_form_view
msgid "Cancel"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields.selection,name:account_move_budget.selection__account_move_budget__state__cancelled
msgid "Cancelled"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__company_id
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__company_id
msgid "Company"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__company_currency_id
msgid "Company Currency"
msgstr ""
#. module: account_move_budget
#: model_terms:ir.ui.view,arch_db:account_move_budget.account_move_budget_form_view
msgid "Confirm"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields.selection,name:account_move_budget.selection__account_move_budget__state__confirmed
msgid "Confirmed"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__create_uid
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__create_uid
msgid "Created by"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__create_date
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__create_date
msgid "Created on"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__credit
msgid "Credit"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__date
msgid "Date"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__date_range_id
msgid "Date range"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__debit
msgid "Debit"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__description
msgid "Description"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__display_name
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__display_name
msgid "Display Name"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields.selection,name:account_move_budget.selection__account_move_budget__state__draft
msgid "Draft"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_follower_ids
msgid "Followers"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_partner_ids
msgid "Followers (Partners)"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__activity_type_icon
msgid "Font awesome icon e.g. fa-tasks"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__date_from
msgid "From Date"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__has_message
msgid "Has Message"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__id
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__id
msgid "ID"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_exception_icon
msgid "Icon"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__activity_exception_icon
msgid "Icon to indicate an exception activity."
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__message_needaction
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__message_unread
msgid "If checked, new messages require your attention."
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__message_has_error
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__message_has_sms_error
msgid "If checked, some messages have a delivery error."
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_is_follower
msgid "Is Follower"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__name
msgid "Label"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget____last_update
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line____last_update
msgid "Last Modified on"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__write_uid
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__write_uid
msgid "Last Updated by"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__write_date
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__write_date
msgid "Last Updated on"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__line_ids
msgid "Line"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_main_attachment_id
msgid "Main Attachment"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_has_error
msgid "Message Delivery error"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_ids
msgid "Messages"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__my_activity_date_deadline
msgid "My Activity Deadline"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__name
#: model_terms:ir.ui.view,arch_db:account_move_budget.account_move_budget_form_view
msgid "Name"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_date_deadline
msgid "Next Activity Deadline"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_summary
msgid "Next Activity Summary"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_type_id
msgid "Next Activity Type"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_needaction_counter
msgid "Number of Actions"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_has_error_counter
msgid "Number of errors"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__message_needaction_counter
msgid "Number of messages which requires an action"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__message_has_error_counter
msgid "Number of messages with delivery error"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__message_unread_counter
msgid "Number of unread messages"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__partner_id
msgid "Partner"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_user_id
msgid "Responsible User"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_has_sms_error
msgid "SMS Delivery error"
msgstr ""
#. module: account_move_budget
#: model_terms:ir.ui.view,arch_db:account_move_budget.account_move_budget_form_view
msgid "Set draft"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__state
msgid "State"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__activity_state
msgid ""
"Status based on activities\n"
"Overdue: Due date is already passed\n"
"Today: Activity date is today\n"
"Planned: Future activities."
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget_line__balance
msgid ""
"Technical field holding the debit - credit in order to open meaningful graph"
" views from reports"
msgstr ""
#. module: account_move_budget
#: code:addons/account_move_budget/models/account_move_budget_line.py:0
#, python-format
msgid "The date must be within the budget period."
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__date_to
msgid "To Date"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__activity_exception_decoration
msgid "Type of the exception activity on record."
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_unread
msgid "Unread Messages"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_unread_counter
msgid "Unread Messages Counter"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget_line__company_currency_id
msgid "Utility field to express amount currency"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__website_message_ids
msgid "Website Messages"
msgstr ""
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__website_message_ids
msgid "Website communication history"
msgstr ""

View File

@ -0,0 +1,415 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_move_budget
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2022-10-18 08:40+0000\n"
"Last-Translator: Vincent Hatakeyama <vincent+github@hatakeyama.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.14.1\n"
#. module: account_move_budget
#: code:addons/account_move_budget/models/account_move_budget.py:0
#, python-format
msgid "%s (copy)"
msgstr "%s (copie)"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__account_id
msgid "Account"
msgstr "Compte"
#. module: account_move_budget
#: model:ir.model,name:account_move_budget.model_account_move_budget
msgid "Account Move Budget"
msgstr "Budget comptable"
#. module: account_move_budget
#: model:ir.model,name:account_move_budget.model_account_move_budget_line
msgid "Account Move Budget Line"
msgstr "Ligne de budget comptable"
#. module: account_move_budget
#: model:ir.actions.act_window,name:account_move_budget.account_move_budget_act_window
#: model:ir.ui.menu,name:account_move_budget.account_move_budget_menu
msgid "Account Move Budgets"
msgstr "Budgets comptables"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_needaction
msgid "Action Needed"
msgstr "Action requise"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_ids
msgid "Activities"
msgstr "Activités"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_exception_decoration
msgid "Activity Exception Decoration"
msgstr "Activité dexception de décoration"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_state
msgid "Activity State"
msgstr "État de lactivité"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__analytic_account_id
msgid "Analytic Account"
msgstr "Compte analytique"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_attachment_count
msgid "Attachment Count"
msgstr "Nombre de pièces jointes"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__balance
msgid "Balance"
msgstr "Solde"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__budget_id
msgid "Budget"
msgstr "Budget"
#. module: account_move_budget
#: model:ir.actions.act_window,name:account_move_budget.account_move_budget_line_act_window
msgid "Budget Items"
msgstr "Lignes budgétaires"
#. module: account_move_budget
#: model_terms:ir.ui.view,arch_db:account_move_budget.account_move_budget_form_view
msgid "Budget Lines"
msgstr "Lignes budgétaires"
#. module: account_move_budget
#: model_terms:ir.ui.view,arch_db:account_move_budget.account_move_budget_form_view
msgid "Cancel"
msgstr "Annuler"
#. module: account_move_budget
#: model:ir.model.fields.selection,name:account_move_budget.selection__account_move_budget__state__cancelled
msgid "Cancelled"
msgstr "Annulé"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__company_id
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__company_id
msgid "Company"
msgstr "Société"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__company_currency_id
msgid "Company Currency"
msgstr "Devise de la société"
#. module: account_move_budget
#: model_terms:ir.ui.view,arch_db:account_move_budget.account_move_budget_form_view
msgid "Confirm"
msgstr "Confirmer"
#. module: account_move_budget
#: model:ir.model.fields.selection,name:account_move_budget.selection__account_move_budget__state__confirmed
msgid "Confirmed"
msgstr "Confirmé"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__create_uid
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__create_uid
msgid "Created by"
msgstr "Créé par"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__create_date
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__create_date
msgid "Created on"
msgstr "Créé le"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__credit
msgid "Credit"
msgstr "Crédit"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__date
msgid "Date"
msgstr "Date"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__date_range_id
msgid "Date range"
msgstr "Plage de date"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__debit
msgid "Debit"
msgstr "Débit"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__description
msgid "Description"
msgstr "Description"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__display_name
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__display_name
msgid "Display Name"
msgstr "Nom daffichage"
#. module: account_move_budget
#: model:ir.model.fields.selection,name:account_move_budget.selection__account_move_budget__state__draft
msgid "Draft"
msgstr "Brouillon"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_follower_ids
msgid "Followers"
msgstr "Abonnés"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_channel_ids
msgid "Followers (Channels)"
msgstr "Abonnés (canaux)"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_partner_ids
msgid "Followers (Partners)"
msgstr "Abonnés (partenaires)"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__date_from
msgid "From Date"
msgstr "À partir du"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__id
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__id
msgid "ID"
msgstr "ID"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_exception_icon
msgid "Icon"
msgstr "Icône"
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__activity_exception_icon
msgid "Icon to indicate an exception activity."
msgstr "Icône indiquant une activité dexception."
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__message_needaction
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__message_unread
msgid "If checked, new messages require your attention."
msgstr "Si coché, de nouveaux messages requièrent votre attention."
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__message_has_error
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__message_has_sms_error
msgid "If checked, some messages have a delivery error."
msgstr "Si coché, des messages ont un problème de livraison."
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_is_follower
msgid "Is Follower"
msgstr "Est abonné"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__name
msgid "Label"
msgstr "Libellé"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget____last_update
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__write_uid
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__write_uid
msgid "Last Updated by"
msgstr "Dernière mise à jour par"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__write_date
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__write_date
msgid "Last Updated on"
msgstr "Dernière mise à jour le"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__line_ids
msgid "Line"
msgstr "Ligne"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_main_attachment_id
msgid "Main Attachment"
msgstr "Pièce jointe principale"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_has_error
msgid "Message Delivery error"
msgstr "Message derreur de livraison"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_ids
msgid "Messages"
msgstr "Messages"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__name
#: model_terms:ir.ui.view,arch_db:account_move_budget.account_move_budget_form_view
msgid "Name"
msgstr "Nom"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_date_deadline
msgid "Next Activity Deadline"
msgstr "Prochaine échéance dactivité"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_summary
msgid "Next Activity Summary"
msgstr "Résumé de la prochaine activité"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_type_id
msgid "Next Activity Type"
msgstr "Type de la prochaine activité"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_needaction_counter
msgid "Number of Actions"
msgstr "Nombre dactions"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_has_error_counter
msgid "Number of errors"
msgstr "Nombre derreurs"
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__message_needaction_counter
msgid "Number of messages which requires an action"
msgstr "Nombre de messages qui requièrent une action"
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__message_has_error_counter
msgid "Number of messages with delivery error"
msgstr "Nombre de messages qui ont une erreur de livraison"
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__message_unread_counter
msgid "Number of unread messages"
msgstr "Nombre de messages non lus"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget_line__partner_id
msgid "Partner"
msgstr "Partenaire"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__activity_user_id
msgid "Responsible User"
msgstr "Utilisateur responsable"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_has_sms_error
msgid "SMS Delivery error"
msgstr "Erreur de livraison de minimessage"
#. module: account_move_budget
#: model_terms:ir.ui.view,arch_db:account_move_budget.account_move_budget_form_view
msgid "Set draft"
msgstr "Mettre en brouillon"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__state
msgid "State"
msgstr "État"
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__activity_state
msgid ""
"Status based on activities\n"
"Overdue: Due date is already passed\n"
"Today: Activity date is today\n"
"Planned: Future activities."
msgstr ""
"Statut basé sur les activités\n"
"En retard: La date déchéance est déjà passée\n"
"Aujourdhui: la date de l'activité est aujourdhui\n"
"Planifiée: Activités futures."
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget_line__balance
msgid ""
"Technical field holding the debit - credit in order to open meaningful graph "
"views from reports"
msgstr ""
"Champ technique qui enregistre débit crédit de sorte à avoir des "
"représentations graphiques cohérentes à partir des rapports"
#. module: account_move_budget
#: code:addons/account_move_budget/models/account_move_budget_line.py:0
#, python-format
msgid "The date must be within the budget period."
msgstr "La date doit faire partie de la période du budget."
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__date_to
msgid "To Date"
msgstr "jusquau"
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__activity_exception_decoration
msgid "Type of the exception activity on record."
msgstr "Type dactivité dexception enregistrée."
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_unread
msgid "Unread Messages"
msgstr "Messages non lus"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__message_unread_counter
msgid "Unread Messages Counter"
msgstr "Nombre de messages non lus"
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget_line__company_currency_id
msgid "Utility field to express amount currency"
msgstr "Champ technique pour exprimer le montant en devise"
#. module: account_move_budget
#: model:ir.model.fields,field_description:account_move_budget.field_account_move_budget__website_message_ids
msgid "Website Messages"
msgstr "Messages du site web"
#. module: account_move_budget
#: model:ir.model.fields,help:account_move_budget.field_account_move_budget__website_message_ids
msgid "Website communication history"
msgstr "Historique de la communication du site web"
#~ msgid "If checked new messages require your attention."
#~ msgstr "Si coché, de nouveaux messages requièrent votre attention."
#~ msgid "Overdue"
#~ msgstr "En retard"
#~ msgid "Planned"
#~ msgstr "Planifiée"
#~ msgid "Today"
#~ msgstr "Aujourd'hui"

View File

@ -0,0 +1,2 @@
from . import account_move_budget
from . import account_move_budget_line

View File

@ -0,0 +1,82 @@
# Copyright 2019 ACSONE SA/NV
# Copyright 2019 ForgeFlow S.L. (http://www.forgeflow.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models
class AccountMoveBudget(models.Model):
_name = "account.move.budget"
_description = "Account Move Budget"
_inherit = ["mail.thread", "mail.activity.mixin"]
name = fields.Char(
required=True,
tracking=True,
)
description = fields.Char(
tracking=True,
)
date_range_id = fields.Many2one(comodel_name="date.range", string="Date range")
date_from = fields.Date(
required=True,
string="From Date",
tracking=True,
)
date_to = fields.Date(
required=True,
string="To Date",
tracking=True,
)
state = fields.Selection(
[("draft", "Draft"), ("confirmed", "Confirmed"), ("cancelled", "Cancelled")],
required=True,
default="draft",
tracking=True,
)
line_ids = fields.One2many(
comodel_name="account.move.budget.line", inverse_name="budget_id", copy=True
)
company_id = fields.Many2one(
comodel_name="res.company",
string="Company",
default=lambda self: self.env.company,
)
@api.returns("self", lambda value: value.id)
def copy(self, default=None):
self.ensure_one()
if default is None:
default = {}
if "name" not in default:
default["name"] = _("%s (copy)") % self.name
return super(AccountMoveBudget, self).copy(default=default)
@api.onchange("date_range_id")
def _onchange_date_range(self):
for rec in self:
if rec.date_range_id:
rec.date_from = rec.date_range_id.date_start
rec.date_to = rec.date_range_id.date_end
@api.onchange("date_from", "date_to")
def _onchange_dates(self):
for rec in self:
if rec.date_range_id:
if (
rec.date_from != rec.date_range_id.date_start
or rec.date_to != rec.date_range_id.date_end
):
rec.date_range_id = False
def action_draft(self):
for rec in self:
rec.state = "draft"
def action_cancel(self):
for rec in self:
rec.state = "cancelled"
def action_confirm(self):
for rec in self:
rec.state = "confirmed"

View File

@ -0,0 +1,70 @@
# Copyright 2019 ForgeFlow S.L. (http://www.forgeflow.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class AccountMoveBudgetLine(models.Model):
_name = "account.move.budget.line"
_description = "Account Move Budget Line"
_order = "date desc, id desc"
budget_id = fields.Many2one(
comodel_name="account.move.budget",
string="Budget",
required=True,
ondelete="cascade",
index=True,
)
name = fields.Char(string="Label")
debit = fields.Monetary(default=0.0, currency_field="company_currency_id")
credit = fields.Monetary(default=0.0, currency_field="company_currency_id")
balance = fields.Monetary(
compute="_compute_store_balance",
store=True,
currency_field="company_currency_id",
help="Technical field holding the debit - "
"credit in order to open meaningful "
"graph views from reports",
)
company_currency_id = fields.Many2one(
"res.currency",
related="company_id.currency_id",
string="Company Currency",
readonly=True,
help="Utility field to express amount currency",
store=True,
)
account_id = fields.Many2one(
"account.account",
string="Account",
required=True,
index=True,
ondelete="cascade",
domain=[("deprecated", "=", False)],
default=lambda self: self._context.get("account_id", False),
)
date = fields.Date(index=True, required=True)
analytic_account_id = fields.Many2one(
"account.analytic.account", string="Analytic Account"
)
company_id = fields.Many2one(
"res.company",
related="account_id.company_id",
string="Company",
store=True,
readonly=True,
)
partner_id = fields.Many2one("res.partner", string="Partner", ondelete="restrict")
@api.depends("debit", "credit")
def _compute_store_balance(self):
for line in self:
line.balance = line.debit - line.credit
@api.constrains("date")
def _constraint_date(self):
for rec in self:
if rec.budget_id.date_from > rec.date or rec.budget_id.date_to < rec.date:
raise ValidationError(_("The date must be within the budget period."))

View File

@ -0,0 +1,4 @@
* ForgeFlow, S.L. (https://www.forgeflow.com)
* Hector Villarreal <hector.villarreal@forgeflow.com>
* Jordi Ballester Alomar <jordi.ballester@forgeflow.com>
* David Jaen <david.jaen.revert@gmail.com>

View File

@ -0,0 +1,11 @@
This module allows to define accounting budgets.
These budgets can then be used in MIS Builder reports, as an alternate
source.
The difference between the MIS Builder Budget and this module is that
this module defines budgets irrespective of the MIS Builder Template. The
budget is thus agnostic of the reporting format.
For example, the budgeted data can be used in a general Profit & Loss report
and at the same time can be used in a department or project expenses report.

View File

@ -0,0 +1,2 @@
In order to set up the budget items go to
*Invoicing / Accounting / Miscellaneous / Account Move Budgets*.

View File

@ -0,0 +1,5 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_account_move_budget,access_account_move_budget,model_account_move_budget,account.group_account_user,1,0,0,0
access_account_move_budget_manager,access_account_move_budget_manager,model_account_move_budget,account.group_account_manager,1,1,1,1
access_account_move_budget_line,access_account_move_budget_line,model_account_move_budget_line,account.group_account_user,1,0,0,0
access_account_move_budget_line_manager,access_account_move_budget_line_manager,model_account_move_budget_line,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_budget access_account_move_budget model_account_move_budget account.group_account_user 1 0 0 0
3 access_account_move_budget_manager access_account_move_budget_manager model_account_move_budget account.group_account_manager 1 1 1 1
4 access_account_move_budget_line access_account_move_budget_line model_account_move_budget_line account.group_account_user 1 0 0 0
5 access_account_move_budget_line_manager access_account_move_budget_line_manager model_account_move_budget_line account.group_account_manager 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@ -0,0 +1,434 @@
<?xml version="1.0" encoding="utf-8" ?>
<!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 0.15.1: http://docutils.sourceforge.net/" />
<title>Account Move Budget</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/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: grey; } /* 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 {
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="account-move-budget">
<h1 class="title">Account Move Budget</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" 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" 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" href="https://github.com/OCA/account-financial-tools/tree/15.0/account_move_budget"><img alt="OCA/account-financial-tools" src="https://img.shields.io/badge/github-OCA%2Faccount--financial--tools-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/account-financial-tools-15-0/account-financial-tools-15-0-account_move_budget"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/92/15.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>This module allows to define accounting budgets.</p>
<p>These budgets can then be used in MIS Builder reports, as an alternate
source.</p>
<p>The difference between the MIS Builder Budget and this module is that
this module defines budgets irrespective of the MIS Builder Template. The
budget is thus agnostic of the reporting format.</p>
<p>For example, the budgeted data can be used in a general Profit &amp; Loss report
and at the same time can be used in a department or project expenses report.</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="id1">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="id2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#id1">Usage</a></h1>
<p>In order to set up the budget items go to
<em>Invoicing / Accounting / Miscellaneous / Account Move Budgets</em>.</p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#id2">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-financial-tools/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 smashing it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/account-financial-tools/issues/new?body=module:%20account_move_budget%0Aversion:%2015.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="#id3">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#id4">Authors</a></h2>
<ul class="simple">
<li>ForgeFlow</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id5">Contributors</a></h2>
<ul class="simple">
<li>ForgeFlow, S.L. (<a class="reference external" href="https://www.forgeflow.com">https://www.forgeflow.com</a>)
* Hector Villarreal &lt;<a class="reference external" href="mailto:hector.villarreal&#64;forgeflow.com">hector.villarreal&#64;forgeflow.com</a>&gt;
* Jordi Ballester Alomar &lt;<a class="reference external" href="mailto:jordi.ballester&#64;forgeflow.com">jordi.ballester&#64;forgeflow.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#id6">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/account-financial-tools/tree/15.0/account_move_budget">OCA/account-financial-tools</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,2 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import test_account_move_budget

View File

@ -0,0 +1,139 @@
# Copyright 2023 David Jaen <david.jaen.revert@gmail.com>.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo.exceptions import ValidationError
from odoo.tests.common import Form, TransactionCase
class TestAccountMoveBudget(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.type = cls.env["date.range.type"].create(
{"name": "Fiscal year", "company_id": False, "allow_overlap": False}
)
cls.date_range = cls.env["date.range"].create(
{
"name": "FS2023",
"date_start": "2023-01-01",
"date_end": "2023-12-31",
"type_id": cls.type.id,
}
)
cls.date_range2 = cls.env["date.range"].create(
{
"name": "FS2024",
"date_start": "2024-01-01",
"date_end": "2024-12-31",
"type_id": cls.type.id,
}
)
user = (
cls.env["res.users"]
.with_context(no_reset_password=True)
.create(
{
"name": "Because I am budgetman!",
"login": "budgetman",
"groups_id": [
(6, 0, cls.env.user.groups_id.ids),
(4, cls.env.ref("account.group_account_user").id),
],
}
)
)
user.partner_id.email = "budgetman@test.com"
cls.env = cls.env(user=user)
cls.account = cls.env["account.account"].create(
{
"code": "TT",
"name": "Test Account",
"account_type": "asset_fixed",
}
)
def test_01_create_account_move_budget(self):
move_form = Form(self.env["account.move.budget"])
move_form.name = "Budget Test 01"
move_form.description = "Description"
move_form.date_range_id = self.date_range
move_budget = move_form.save()
move_line_form = Form(self.env["account.move.budget.line"])
move_line_form.name = "Dummy line"
move_line_form.budget_id = move_budget
move_line_form.date = "2023-01-02"
move_line_form.partner_id = self.env.user.partner_id
move_line_form.credit = 3000
move_line_form.debit = 5000
move_line_form.account_id = self.account
move_line_form.save()
def test_02_change_date_range_account_move_budget(self):
move_form = Form(self.env["account.move.budget"])
move_form.name = "Budget Test 02"
move_form.description = "Description"
move_form.date_range_id = self.date_range
move_form.state = "draft"
move_form.date_range_id = self.date_range2
self.assertTrue(move_form.save())
def test_03_copy_account_move_budget(self):
move_form = Form(self.env["account.move.budget"])
move_form.name = "Budget Test 03"
move_form.description = "Description"
move_form.date_range_id = self.date_range
move_form.state = "draft"
self.assertTrue(move_form.save().copy())
def test_04_actions_account_move_budget(self):
values = {
"name": "Budget Test 04",
"description": "Description",
"date_range_id": self.date_range.id,
"date_from": self.date_range.date_start,
"date_to": self.date_range.date_end,
}
budget = self.env["account.move.budget"].create(values)
budget.action_draft()
self.assertTrue(budget.state == "draft")
budget.action_cancel()
self.assertTrue(budget.state == "cancelled")
budget.action_confirm()
self.assertTrue(budget.state == "confirmed")
def test_05_raise_account_move_budget(self):
move_form = Form(self.env["account.move.budget"])
move_form.name = "Budget Test 05"
move_form.description = "Description"
move_form.date_range_id = self.date_range
move_form.date_from = "2021-01-01"
move_form.save()
def test_06_raise_account_move_budget(self):
values = {
"name": "Budget Test 06",
"description": "Description",
"date_range_id": self.date_range.id,
"date_from": "2023-02-01",
"date_to": "2023-12-30",
}
move_budget = self.env["account.move.budget"].create(values)
move_line_form = Form(self.env["account.move.budget.line"])
move_line_form.name = "Dummy line"
move_line_form.budget_id = move_budget
move_line_form.date = "2021-01-02"
move_line_form.partner_id = self.env.user.partner_id
move_line_form.credit = 3000
move_line_form.debit = 5000
move_line_form.account_id = self.account
with self.assertRaises(ValidationError):
move_line_form.save()

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 ForgeFlow S.L. (http://www.forgeflow.com)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="view_account_move_budget_line_tree" model="ir.ui.view">
<field name="name">Account Move Budget Line tree</field>
<field name="model">account.move.budget.line</field>
<field name="arch" type="xml">
<tree editable="top">
<field name="account_id" />
<field name="date" />
<field name="debit" />
<field name="credit" />
<field name="balance" />
<field
name="analytic_account_id"
groups="analytic.group_analytic_accounting"
/>
<field name="partner_id" />
<field name="name" />
<field name="company_id" groups="base.group_multi_company" />
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="account_move_budget_line_act_window">
<field name="name">Budget Items</field>
<field name="res_model">account.move.budget.line</field>
<field name="view_mode">tree</field>
<field name="domain">[('budget_id', '=', active_id)]</field>
<field name="context">{'default_budget_id': active_id}</field>
</record>
</odoo>

View File

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 ACSONE SA/NV
Copyright 2019 ForgeFlow S.L. (http://www.forgeflow.com)
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record model="ir.ui.view" id="account_move_budget_form_view">
<field name="name">account.move.budget.form</field>
<field name="model">account.move.budget</field>
<field name="arch" type="xml">
<form>
<header>
<button
name="action_draft"
string="Set draft"
type="object"
attrs="{'invisible': [('state', '=', 'draft')]}"
/>
<button
name="action_confirm"
string="Confirm"
type="object"
attrs="{'invisible': [('state', '!=', 'draft')]}"
class="oe_highlight"
/>
<button
name="action_cancel"
string="Cancel"
type="object"
attrs="{'invisible': [('state', '=', 'cancelled')]}"
/>
<field name="state" widget="statusbar" />
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button
name="%(account_move_budget_line_act_window)d"
type="action"
class="oe_stat_button"
icon="fa-bars"
string="Budget Lines"
/>
</div>
<div class="oe_title">
<div class="oe_edit_only">
<label for="name" />
</div>
<h1>
<field name="name" placeholder="Name" />
</h1>
<field name="description" />
</div>
<group name="company">
<field name="company_id" groups="base.group_multi_company" />
</group>
<group name="dates">
<field name="date_range_id" />
<field name="date_from" />
<field name="date_to" />
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers" />
<field name="activity_ids" widget="mail_activity" />
<field name="message_ids" widget="mail_thread" />
</div>
</form>
</field>
</record>
<record model="ir.ui.view" id="account_move_budget_search_view">
<field name="name">account.move.budget.search</field>
<field name="model">account.move.budget</field>
<field name="arch" type="xml">
<search>
<field name="name" />
<field name="state" />
</search>
</field>
</record>
<record model="ir.ui.view" id="account_move_budget_tree_view">
<field name="name">account.move.budget.tree</field>
<field name="model">account.move.budget</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="date_from" />
<field name="date_to" />
<field name="state" />
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="account_move_budget_act_window">
<field name="name">Account Move Budgets</field>
<field name="res_model">account.move.budget</field>
<field name="view_mode">tree,form</field>
<field name="domain">[]</field>
<field name="context">{}</field>
</record>
<record model="ir.ui.menu" id="account_move_budget_menu">
<field name="name">Account Move Budgets</field>
<field
name="parent_id"
ref="account.menu_finance_entries_accounting_miscellaneous"
/>
<field name="action" ref="account_move_budget_act_window" />
</record>
</odoo>

View File

@ -0,0 +1 @@
../../../../account_move_budget

View File

@ -0,0 +1,6 @@
import setuptools
setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)