Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 122 additions & 0 deletions mis_builder_cash_flow/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

=====================
MIS Builder Cash Flow
=====================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:a467ad57fed429e41572a3dce8c8382aa700302b7be25de631486e140b72fee5
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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%2Fmis--builder-lightgray.png?logo=github
:target: https://github.com/OCA/mis-builder/tree/19.0/mis_builder_cash_flow
:alt: OCA/mis-builder
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/mis-builder-19-0/mis-builder-19-0-mis_builder_cash_flow
: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/mis-builder&target_branch=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module allows you to have a cash flow forecast. The forecast is
based on two types of date:

- Accounting entries: Due date field instead of Date
- Forecast lines: manual lines created that forecast in/out cashflow
moves.

**Table of contents**

.. contents::
:local:

Usage
=====

To use this module, you need to:

1. Go to Accounting > Reports > MIS Reporting > MIS Reports and choose
"Cash Flow" report
2. You can add forecast lines on Accounting > Reports > MIS Reporting >
Cash Flow Forecast Line
3. If you select on "Target Moves" the value "All Posted Entries", you
will get only lines for already posted invoices/entries + the
forecast lines.
4. Selecting "All Entries", draft invoices/entries are also included.
5. In any case, cancelled invoices/entries are not included.

Known issues / Roadmap
======================

The mis_builder
`roadmap <https://github.com/OCA/mis-builder/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement>`__
and `known
issues <https://github.com/OCA/mis-builder/issues?q=is%3Aopen+is%3Aissue+label%3Abug>`__
can be found on GitHub.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/mis-builder/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/mis-builder/issues/new?body=module:%20mis_builder_cash_flow%0Aversion:%2019.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
-------

* ADHOC SA

Contributors
------------

- Juan José Scarafía <jjs@adhoc.com.ar>
- Gonzalo Ruzafa <gr@adhoc.com.ar>
- Alberto Martín <alberto.martin@guadaltech.es>
- `Tecnativa <https://www.tecnativa.com>`__:

- Pedro M. Baeza

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-dnplkndll| image:: https://github.com/dnplkndll.png?size=40px
:target: https://github.com/dnplkndll
:alt: dnplkndll

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-dnplkndll|

This module is part of the `OCA/mis-builder <https://github.com/OCA/mis-builder/tree/19.0/mis_builder_cash_flow>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
4 changes: 4 additions & 0 deletions mis_builder_cash_flow/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Copyright 2019 ADHOC SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models
from . import report
24 changes: 24 additions & 0 deletions mis_builder_cash_flow/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright 2019 ADHOC SA
# Copyright 2021 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "MIS Builder Cash Flow",
"version": "19.0.1.0.0",
"license": "AGPL-3",
"author": "ADHOC SA, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/mis-builder",
"depends": ["mis_builder"],
"data": [
"security/mis_cash_flow_security.xml",
"report/mis_cash_flow_views.xml",
"views/mis_cash_flow_forecast_line_views.xml",
"views/account_account_views.xml",
"data/mis_report_style.xml",
"data/mis_report.xml",
"data/mis_report_instance.xml",
],
"installable": True,
"maintainers": ["dnplkndll"],
"development_status": "Beta",
}
109 changes: 109 additions & 0 deletions mis_builder_cash_flow/data/mis_report.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 ADHOC SA
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo noupdate="True">
<record id="mis_report_cash_flow" model="mis.report">
<field name="name">Cash Flow</field>
<field name="style_id" ref="mis_style_cash_flow" />
</record>
<record id="mis_kpi_aliquidity" model="mis.report.kpi">
<field name="report_id" ref="mis_report_cash_flow" />
<field name="name">liquidity</field>
<field name="description">LIQUIDITY</field>
<field name="style_id" ref="mis_style_account_sub_total" />
<field name="auto_expand_accounts" eval="True" />
<field name="auto_expand_accounts_style_id" ref="mis_style_account_detail" />
<field name="sequence">20</field>
<field
name="expression"
>bal[][('account_type', '=', 'asset_cash'), ('line_type', '=', 'move_line'), ('account_id.hide_in_cash_flow', '=', False)]</field>
</record>
<record id="mis_kpi_in_total" model="mis.report.kpi">
<field name="report_id" ref="mis_report_cash_flow" />
<field name="name">in_total</field>
<field name="description">IN TOTAL</field>
<field name="style_id" ref="mis_style_account_sub_total" />
<field name="sequence">30</field>
<field name="expression">in_receivable + in_forecast</field>
</record>
<record id="mis_kpi_in_receivable" model="mis.report.kpi">
<field name="report_id" ref="mis_report_cash_flow" />
<field name="name">in_receivable</field>
<field name="description">In receivable</field>
<field name="style_id" ref="mis_style_account_line" />
<field name="auto_expand_accounts" eval="True" />
<field name="auto_expand_accounts_style_id" ref="mis_style_account_detail" />
<field name="sequence">50</field>
<field
name="expression"
>bal[][('account_type', '=', 'asset_receivable'), ('full_reconcile_id', '=', False), ('line_type', '=', 'move_line'), ('account_id.hide_in_cash_flow', '=', False)]</field>
</record>
<record id="mis_kpi_in_forecast" model="mis.report.kpi">
<field name="report_id" ref="mis_report_cash_flow" />
<field name="name">in_forecast</field>
<field name="description">In forecast</field>
<field name="style_id" ref="mis_style_account_line" />
<field name="auto_expand_accounts" eval="True" />
<field name="auto_expand_accounts_style_id" ref="mis_style_account_detail" />
<field name="sequence">70</field>
<field
name="expression"
>bal[][('line_type', '=', 'forecast_line'), ('debit', '!=', 0.0), ('account_id.hide_in_cash_flow', '=', False)]</field>
</record>
<record id="mis_kpi_out_total" model="mis.report.kpi">
<field name="report_id" ref="mis_report_cash_flow" />
<field name="name">out_total</field>
<field name="description">OUT TOTAL</field>
<field name="style_id" ref="mis_style_account_sub_total" />
<field name="sequence">80</field>
<field name="expression">out_payable + out_forecast</field>
</record>
<record id="mis_kpi_out_payable" model="mis.report.kpi">
<field name="report_id" ref="mis_report_cash_flow" />
<field name="name">out_payable</field>
<field name="description">Out payable</field>
<field name="style_id" ref="mis_style_account_line" />
<field name="auto_expand_accounts" eval="True" />
<field name="auto_expand_accounts_style_id" ref="mis_style_account_detail" />
<field name="sequence">100</field>
<field
name="expression"
>bal[][('account_type', '=', 'liability_payable'), ('full_reconcile_id', '=', False), ('line_type', '=', 'move_line'), ('account_id.hide_in_cash_flow', '=', False)]</field>
</record>
<record id="mis_kpi_out_forecast" model="mis.report.kpi">
<field name="report_id" ref="mis_report_cash_flow" />
<field name="name">out_forecast</field>
<field name="description">Out forecast</field>
<field name="style_id" ref="mis_style_account_line" />
<field name="auto_expand_accounts" eval="True" />
<field name="auto_expand_accounts_style_id" ref="mis_style_account_detail" />
<field name="sequence">120</field>
<field
name="expression"
>bal[][('line_type', '=', 'forecast_line'), ('credit', '!=', 0.0), ('account_id.hide_in_cash_flow', '=', False)]</field>
</record>
<record id="mis_kpi_period_balance" model="mis.report.kpi">
<field name="report_id" ref="mis_report_cash_flow" />
<field name="name">period_balance</field>
<field name="description">PERIOD BALANCE</field>
<field name="style_id" ref="mis_style_account_sub_total" />
<field name="sequence">130</field>
<field name="expression">in_total + out_total</field>
<field
name="style_expression"
>'Cash Flow - Good' if period_balance >= 0.0 else 'Cash Flow - Bad'</field>
</record>
<record id="mis_kpi_balance" model="mis.report.kpi">
<field name="report_id" ref="mis_report_cash_flow" />
<field name="name">balance</field>
<field name="description">BALANCE</field>
<field name="style_id" ref="mis_style_account_total" />
<field name="sequence">150</field>
<field
name="expression"
>bale[][('account_id.hide_in_cash_flow', '=', False), '|', ('line_type', '=', 'forecast_line'), ('line_type', '=', 'move_line'), '|', ('account_type', '=', 'asset_cash'), ('account_type', 'in', ('asset_receivable', 'liability_payable')), ('full_reconcile_id', '=', False)]</field>
<field
name="style_expression"
>'Cash Flow - Good' if balance >= 0.0 else 'Cash Flow - Bad'</field>
</record>
</odoo>
132 changes: 132 additions & 0 deletions mis_builder_cash_flow/data/mis_report_instance.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 ADHOC SA
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo noupdate="True">
<record id="mis_instance_cash_flow" model="mis.report.instance">
<field name="name">Cash Flow</field>
<field name="report_id" ref="mis_report_cash_flow" />
<field name="comparison_mode" eval="True" />
<field name="landscape_pdf" eval="True" />
</record>
<record id="mis_period_current" model="mis.report.instance.period">
<field name="name">Current</field>
<field name="report_instance_id" ref="mis_instance_cash_flow" />
<field name="source">actuals_alt</field>
<field name="source_aml_model_id" ref="model_mis_cash_flow" />
<field name="mode">relative</field>
<field name="type">w</field>
<field name="offset">-4000</field>
<field name="duration">4001</field>
<field name="sequence">4</field>
</record>
<record id="mis_period_plus_1w" model="mis.report.instance.period">
<field name="name">+1w</field>
<field name="report_instance_id" ref="mis_instance_cash_flow" />
<field name="source">actuals_alt</field>
<field name="source_aml_model_id" ref="model_mis_cash_flow" />
<field name="mode">relative</field>
<field name="type">w</field>
<field name="offset">1</field>
<field name="duration">1</field>
<field name="sequence">10</field>
</record>
<record id="mis_period_plus_2w" model="mis.report.instance.period">
<field name="name">+2w</field>
<field name="report_instance_id" ref="mis_instance_cash_flow" />
<field name="source">actuals_alt</field>
<field name="source_aml_model_id" ref="model_mis_cash_flow" />
<field name="mode">relative</field>
<field name="type">w</field>
<field name="offset">2</field>
<field name="duration">1</field>
<field name="sequence">20</field>
</record>
<record id="mis_period_plus_3w" model="mis.report.instance.period">
<field name="name">+3w</field>
<field name="report_instance_id" ref="mis_instance_cash_flow" />
<field name="source">actuals_alt</field>
<field name="source_aml_model_id" ref="model_mis_cash_flow" />
<field name="mode">relative</field>
<field name="type">w</field>
<field name="offset">3</field>
<field name="duration">1</field>
<field name="sequence">30</field>
</record>
<record id="mis_period_plus_4w" model="mis.report.instance.period">
<field name="name">+4w</field>
<field name="report_instance_id" ref="mis_instance_cash_flow" />
<field name="source">actuals_alt</field>
<field name="source_aml_model_id" ref="model_mis_cash_flow" />
<field name="mode">relative</field>
<field name="type">w</field>
<field name="offset">4</field>
<field name="duration">1</field>
<field name="sequence">40</field>
</record>
<record id="mis_period_plus_5w" model="mis.report.instance.period">
<field name="name">+5w</field>
<field name="report_instance_id" ref="mis_instance_cash_flow" />
<field name="source">actuals_alt</field>
<field name="source_aml_model_id" ref="model_mis_cash_flow" />
<field name="mode">relative</field>
<field name="type">w</field>
<field name="offset">5</field>
<field name="duration">1</field>
<field name="sequence">50</field>
</record>
<record id="mis_period_plus_6w" model="mis.report.instance.period">
<field name="name">+6w</field>
<field name="report_instance_id" ref="mis_instance_cash_flow" />
<field name="source">actuals_alt</field>
<field name="source_aml_model_id" ref="model_mis_cash_flow" />
<field name="mode">relative</field>
<field name="type">w</field>
<field name="offset">6</field>
<field name="duration">1</field>
<field name="sequence">60</field>
</record>
<record id="mis_period_plus_7w" model="mis.report.instance.period">
<field name="name">+7w</field>
<field name="report_instance_id" ref="mis_instance_cash_flow" />
<field name="source">actuals_alt</field>
<field name="source_aml_model_id" ref="model_mis_cash_flow" />
<field name="mode">relative</field>
<field name="type">w</field>
<field name="offset">7</field>
<field name="duration">1</field>
<field name="sequence">70</field>
</record>
<record id="mis_period_plus_8w" model="mis.report.instance.period">
<field name="name">+8w</field>
<field name="report_instance_id" ref="mis_instance_cash_flow" />
<field name="source">actuals_alt</field>
<field name="source_aml_model_id" ref="model_mis_cash_flow" />
<field name="mode">relative</field>
<field name="type">w</field>
<field name="offset">8</field>
<field name="duration">1</field>
<field name="sequence">80</field>
</record>
<record id="mis_period_plus_third_month" model="mis.report.instance.period">
<field name="name">third month</field>
<field name="report_instance_id" ref="mis_instance_cash_flow" />
<field name="source">actuals_alt</field>
<field name="source_aml_model_id" ref="model_mis_cash_flow" />
<field name="mode">relative</field>
<field name="type">w</field>
<field name="offset">9</field>
<field name="duration">4</field>
<field name="sequence">90</field>
</record>
<record id="mis_period_plus_fourth_month" model="mis.report.instance.period">
<field name="name">fourth month</field>
<field name="report_instance_id" ref="mis_instance_cash_flow" />
<field name="source">actuals_alt</field>
<field name="source_aml_model_id" ref="model_mis_cash_flow" />
<field name="mode">relative</field>
<field name="type">w</field>
<field name="offset">13</field>
<field name="duration">4</field>
<field name="sequence">90</field>
</record>
</odoo>
Loading
Loading