Giter Club home page Giter Club logo

account-budgeting's Introduction

Build Status Coverage Status

OpenERP / Odoo Budgeting

You'll find modules that manage budgeting.

account-budgeting's People

Contributors

alvarorib avatar cvinh avatar eduaparicio avatar fcolus avatar francesco-ooops avatar josepmy avatar jprokop1 avatar kittiu avatar marylla avatar miquelrforgeflow avatar mostafabarmshory avatar mymage avatar noel000 avatar oca-git-bot avatar oca-transbot avatar oca-travis avatar oihane avatar pedrobaeza avatar weblate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

account-budgeting's Issues

Blocked access to General Settings and all Settings applications menu's, when installed on Odoo Community 12.0

When the module is installed on Odoo Community 12.0, an error is throwed with a web message "Uncaught Error Unknown field module_account_budget in domain", preventing and blocking access to General Settings and all Settings applications menu's.

The reason is that, the Odoo Community 12.0 don't have an "Account Budget" module or a field named "module_account_budget".

For me the solution was to delete all calls or declared view field for "module_account_budget ", in the views of the two Odoo OCA modules Budgets Management and Account Budget Template.

The request is to get the two Odoo OCA modules Budgets Management and Account Budget Template, compatible with the Odoo Community Edition.

Bug when creating a budget (Button SAVE)

Hi,

I just installed this module on my Odoo 12 CE (on premise). Going to Invoices > Accounting > Budget and creating a test budget, the following error message appeared on pressing SAVE:

Error:
Odoo Server Error

Traceback (most recent call last):
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/api.py", line 1039, in get
    value = self._data[key][field][record.id]
KeyError: 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/fields.py", line 963, in __get__
    value = record.env.cache.get(record, self)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/api.py", line 1041, in get
    raise CacheMiss(record, field)
odoo.exceptions.CacheMiss: ('crossovered.budget.lines(1,).practical_amount', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/http.py", line 654, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/http.py", line 312, in _handle_exception
    raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/tools/pycompat.py", line 87, in reraise
    raise value
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/http.py", line 696, in dispatch
    result = self._call_function(**self.params)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/http.py", line 344, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/service/model.py", line 97, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/http.py", line 337, in checked_call
    result = self.endpoint(*a, **kw)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/http.py", line 939, in __call__
    return self.method(*args, **kw)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/http.py", line 517, in response_wrap
    response = f(*args, **kw)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/addons/web/controllers/main.py", line 962, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/addons/web/controllers/main.py", line 954, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/api.py", line 749, in call_kw
    return _call_kw_multi(method, model, args, kwargs)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/api.py", line 736, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/models.py", line 2780, in read
    data[record][name] = convert(record[name], record, use_name_get)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/models.py", line 5065, in __getitem__
    return self._fields[key].__get__(self, type(self))
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/fields.py", line 967, in __get__
    self.determine_value(record)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/fields.py", line 1078, in determine_value
    self.compute_value(recs)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/fields.py", line 1034, in compute_value
    self._compute_value(records)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/fields.py", line 1025, in _compute_value
    getattr(records, self.compute)()
  File "/opt/bitnami/apps/odoo/data/addons/12.0/account_budget_oca/models/account_budget.py", line 154, in _compute_practical_amount
    (line.analytic_account_id.id, date_from, date_to, acc_ids,)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/sql_db.py", line 148, in wrapper
    return f(self, *args, **kwargs)
  File "/opt/bitnami/apps/odoo/lib/odoo-12.0.post20190118-py3.7.egg/odoo/sql_db.py", line 225, in execute
    res = self._obj.execute(query, params)
psycopg2.ProgrammingError: function to_date(date, unknown) does not exist
LINE 5:                         AND (date between to_date('2019-06-0...
                                                  ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

Invoicing -> Accounting - where is it ?

Installed this module in Odoo 16

According to the "Installed Features" of the module, one of the entry points in the GUI is

Invoicing -> Accounting -> Management -> Budgets

But I can't find

Invoicing -> Accounting

Any hint appreciated
Thanks in advance

[12.0][ADD] budget_management (PO/EX budget commitment, easy budget planing by KPI/Analytic, warning if not enough budget)

These module is built on top of already great budgeting capability of mis_buider_budget, but add more features to

  1. Tighten the control during document transaction
  2. Simplify process for an organization to setup and make use of budget control add reporting especially in the context of cost/profit center (based on analytic_account)

Remarks: this is based on my experiences doing budget management with an organization, but for this I wanted to make it more lightweight and generic enough for most use. Feedback are greatly appreciated.

Design Goals

  1. Budget Commitment: PR/PO/EX and SO to have accounting budget commitment. I.e., PR-PO-INV, budget will commit when document is confirmed, and reversed commit when passed to next document.
  2. Budget Control: Ability to lock document when the commit/actual of any document will result in budget balance < 0.0
  3. Budget Chartfield: Chartfield means, Costcenter/Project, which is analytic_account in Odoo. We want extend 1 and 2 to allowing operate at Costcenter/Project level.
  4. Budget Planning: As a new budget planning document, for a user in a costcenter to easily fill in a fiscal year budget for his/her business unit. And once confirmed, system to auto create mis report instances as we know about in order to control budget as refer to 1, 2, 3.

Goal 1: Budget Commitment

This one can be quite easy, by adding a new table to log all the commitment, i.e., budget.commit. I am looking into create followings addons one for each type of document.

  • purchase_budget_commit #29
  • expense_budget_commit #31
  • purchase_request_budget_commit

Goal 2: Budget Control

This part will deal with calling available mis_builder's API to find out available budget, and give warning.

  • invoice_budget_control -- I.e., allow user to set to control on invoice, and lock budget on validate invoice.
  • purchase_budget_control
  • expense_budget_control
  • purchase_request_budget_control

Goal 3: Budgeting with more Analytic Dimensions: (TBD)

N/A

Goal 4: Budget Planning and Budget Revision: (TBD)

For big organization, there will be preparation process, when organization discuss for next year budgeting. Normally it will occur, i.e, 2-3 months ahead of the budget year. Expected procedure can be,

  • Budget committee call for new budget year (budget.management for new year), and setup budget target (for each operating unit)
  • Each unit, by analytic account (unit / project), create new budget.plan for given budget.management.
  • Approval process, to ensure budget allocated properly to all units/projects also withing budget target.
  • After approved, budget.plan is converted into budget.control, and system can use it to control budget

[12.0][ADD] budget_control [WIP]

Note: start in [12.0] budget expected to continue in [13.0] as soon an required dependencies are ready.

Overview of Budget Control for Public Sector

This is a set of modules aimed for efficiently manage budgeting for public sector. It will include the following features,

  • Budget Period
    For control period, i.e., 1 fiscal year, a central configurator on how budget will be control over the period.
  • Budget Control Sheet
    For each costcenter/project (analytic account), there will be 1 control sheet per control period, allowing user to do the planning and then approval on how much budget allocated in each expense category.
  • Budget Commitment (budget moves)
    In addition to invoiced amount (actual), system can now track budget commitment on all related documents for PR/PO/EX or SO. This give ability to control budget since the beginning.
  • Budget Controlling
    Ability to block the confirmation of any document that will result in overall consumed amount (PR+PO+INV) exceed the allocated budget.
  • Budget Transfer
    During the control period, ability to transfer budget from one analytic account to another.
  • Budget Year End Closing Process
    1. Budget allocation carry forward. Allocated amount remain form older period, to be carried into the new period.
    2. Budget commitment carry over, ie.., PR/PO, from the old period, to also moved to commit in the new period.
  • Multi Dimensions
    Extend the analytic_tag_dimension module to cover all document required. This will ensure that, the reporting is more useful when compare more dimensions
  • Budget Reporting
    Enhance the mis builder report, i.e., to be more fined grained when displaying the report.
    Budget Monitoring Report that can see the entire picture of budget, using Odoo BI.
    Some other useful report.

Current WIP: #35


Budget Process

image

Before new Fiscal Year

  1. Prepare new Budget Period

    • Budget Manager :: Create budget period for new fiscal year, identify all expense group.
  2. Create Budget Control Sheets

    • Budget Manager :: Prepare draft (inactive) budget control sheet with allocated budget for every budget code (analytic)
  • Budget Approval Process (optional)
    • Budget User :: Submit budget control sheet through final approval process in order to activate the budget (Optional step). At this point, each budget code (analytic) will have remaining balance to use.

During Fiscal Year

  1. Budget Commitment and Actual
    • Budget commitment on PR/PO/EX
    • Budget actual in INV
    • Budget Balance = Budget Allocation - Budget Consumed (all commit + actual)
  2. Budget Monitoring and Control
    • Budget Manager and Users will have visibility of all budgets (based on permission)
    • At any point, if the confirmation of a any document will result in Budget Balance < 0.0, system will block the document confirm and show warning message that budget is not enough
  3. Budget Transfer
    • Budget User and Budget Manager :: can always transfer unused budget from one budget code (analytic) to another. Optional approval process is possible. During budget transfer process, budget will be locked for transferring budget code (analytic).

Year End Closing Process

In additional to normal account closing process, we will have a new budget closing process too.

  1. Budget Commitment Carry Forward

    • Budget Manager :: can see all document (PR/PO/EX) with commitment amount of the current fiscal year, after confirm, those commitment amount will be moved to next fiscal year.
  2. Budget Initial Allocation

    • Budget Manager :: can use commitment amount forwarded as the initial budget allocation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.