[ADD] account_move_line_cumulated_balance: cumulated balance

Co-Authored-By: Pedro M. Baeza <pedro.baeza@tecnativa.com>
This commit is contained in:
Cesar Andres Sanchez
2022-07-01 00:35:58 +02:00
parent 63729056d0
commit db4cf76144
19 changed files with 908 additions and 0 deletions

View File

@@ -0,0 +1,106 @@
================================
Journal Ledger Cumulated Balance
================================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! 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/13.0/account_move_line_cumulated_balance
: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-13-0/account-financial-tools-13-0-account_move_line_cumulated_balance
: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/13.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows you to show the cumulated balance, both in the company
currency and in the original currency, on the general ledger and partner ledger
menus, which is an aid for accountants that need to check the evolution of the
balances.
**Table of contents**
.. contents::
:local:
Configuration
=============
To see all the menus, make sure:
* Your user is member of the group
"Technical Settings / Show Full Accounting Features"
* The page is running in debug mode or you have the `base_technical_features`
module installed and belonging to such group.
Usage
=====
#. Go to *Invoicing > Accounting > General Ledger* or
*Invoicing > Accounting > Partner Ledger*
#. Two new columns will be available:
* Cumulated Balance
* Cumulated Balance in Currency
Known issues / Roadmap
======================
* For v14, there's only need to migrate the field amount_currency_balance, as
the other one already exists in core.
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_line_cumulated_balance%0Aversion:%2013.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
~~~~~~~
* Tecnativa
Contributors
~~~~~~~~~~~~
* Odoo SA
* `Tecnativa <https://www.tecnativa.com>`_:
* César A. Sánchez
* 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.
This module is part of the `OCA/account-financial-tools <https://github.com/OCA/account-financial-tools/tree/13.0/account_move_line_cumulated_balance>`_ 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,14 @@
# Copyright 2022 Tecnativa - César A. Sánchez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Journal Ledger Cumulated Balance",
"summary": "Show cumulated balances on the interactive journal ledgers",
"version": "13.0.1.0.0",
"category": "Account",
"license": "AGPL-3",
"website": "https://github.com/OCA/account-financial-tools",
"author": "Tecnativa, Odoo Community Association (OCA)",
"depends": ["account"],
"data": ["views/account_move_views.xml"],
}

View File

@@ -0,0 +1,44 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_move_line_cumulated_balance
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-09 14:47+0000\n"
"PO-Revision-Date: 2022-07-09 14:47+0000\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_line_cumulated_balance
#: model:ir.model.fields,field_description:account_move_line_cumulated_balance.field_account_move_line__cumulated_balance
msgid "Cumulated Balance"
msgstr ""
#. module: account_move_line_cumulated_balance
#: model:ir.model.fields,field_description:account_move_line_cumulated_balance.field_account_move_line__cumulated_balance_currency
msgid "Cumulated Balance in Currency"
msgstr ""
#. module: account_move_line_cumulated_balance
#: model:ir.model.fields,help:account_move_line_cumulated_balance.field_account_move_line__cumulated_balance
msgid ""
"Cumulated balance depending on the domain and the order chosen in the view."
msgstr ""
#. module: account_move_line_cumulated_balance
#: model:ir.model.fields,help:account_move_line_cumulated_balance.field_account_move_line__cumulated_balance_currency
msgid ""
"Cumulated balance in currency depending on the domain and the order chosen "
"in the view."
msgstr ""
#. module: account_move_line_cumulated_balance
#: model:ir.model,name:account_move_line_cumulated_balance.model_account_move_line
msgid "Journal Item"
msgstr ""

View File

@@ -0,0 +1,49 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_move_line_cumulated_balance
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-09 14:48+0000\n"
"PO-Revision-Date: 2022-07-09 16:49+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n"
"Language: es\n"
"X-Generator: Poedit 2.3\n"
#. module: account_move_line_cumulated_balance
#: model:ir.model.fields,field_description:account_move_line_cumulated_balance.field_account_move_line__cumulated_balance
msgid "Cumulated Balance"
msgstr "Saldo acumulado"
#. module: account_move_line_cumulated_balance
#: model:ir.model.fields,field_description:account_move_line_cumulated_balance.field_account_move_line__cumulated_balance_currency
msgid "Cumulated Balance in Currency"
msgstr "Saldo acumulado en moneda"
#. module: account_move_line_cumulated_balance
#: model:ir.model.fields,help:account_move_line_cumulated_balance.field_account_move_line__cumulated_balance
msgid ""
"Cumulated balance depending on the domain and the order chosen in the view."
msgstr ""
"Saldo acumulado dependiendo del dominio y el orden escogidos en la vista."
#. module: account_move_line_cumulated_balance
#: model:ir.model.fields,help:account_move_line_cumulated_balance.field_account_move_line__cumulated_balance_currency
msgid ""
"Cumulated balance in currency depending on the domain and the order chosen "
"in the view."
msgstr ""
"Saldo acumulado en moneda dependiendo del dominio y el orden escogidos en "
"la vista."
#. module: account_move_line_cumulated_balance
#: model:ir.model,name:account_move_line_cumulated_balance.model_account_move_line
msgid "Journal Item"
msgstr "Apunte contable"

View File

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

View File

@@ -0,0 +1,73 @@
# Copyright 2022 Tecnativa - César A. Sánchez
# Copyright 2022 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from psycopg2 import sql
from odoo import api, fields, models
class AccountMoveLine(models.Model):
_inherit = "account.move.line"
cumulated_balance = fields.Monetary(
string="Cumulated Balance",
store=False,
currency_field="company_currency_id",
compute="_compute_cumulated_balance",
help="Cumulated balance depending on the domain and the order chosen in the view.",
)
cumulated_balance_currency = fields.Monetary(
string="Cumulated Balance in Currency",
store=False,
currency_field="currency_id",
compute="_compute_cumulated_balance",
help="Cumulated balance in currency depending on the domain and "
"the order chosen in the view.",
)
@api.model
def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None):
def to_tuple(t):
return tuple(map(to_tuple, t)) if isinstance(t, (list, tuple)) else t
# Add the domain and order by in order to compute the cumulated
# balance in _compute_cumulated_balance
order = (order or self._order) + ", id desc"
return super(
AccountMoveLine, self.with_context(order_cumulated_balance=order,),
).search_read(domain, fields, offset, limit, order)
@api.depends_context("order_cumulated_balance")
def _compute_cumulated_balance(self):
self.cumulated_balance = 0
self.cumulated_balance_currency = 0
order_cumulated_balance = (
self.env.context.get("order_cumulated_balance", self._order) + ", id"
)
order_string = ", ".join(
self._generate_order_by_inner(
self._table, order_cumulated_balance, "", reverse_direction=False,
)
)
query = sql.SQL(
"""SELECT account_move_line.id,
SUM(account_move_line.balance) OVER (
ORDER BY {order_by_clause}
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
),
SUM(account_move_line.amount_currency) OVER (
ORDER BY {order_by_clause}
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
)
FROM account_move_line
LEFT JOIN account_move on account_move_line.move_id = account_move.id
WHERE
account_move.state = 'posted'
"""
).format(order_by_clause=sql.SQL(order_string),)
self.env.cr.execute(query)
result = {r[0]: (r[1], r[2]) for r in self.env.cr.fetchall()}
for record in self:
record.cumulated_balance = result[record.id][0]
record.cumulated_balance_currency = result[record.id][1]

View File

@@ -0,0 +1,6 @@
To see all the menus, make sure:
* Your user is member of the group
"Technical Settings / Show Full Accounting Features"
* The page is running in debug mode or you have the `base_technical_features`
module installed and belonging to such group.

View File

@@ -0,0 +1,5 @@
* Odoo SA
* `Tecnativa <https://www.tecnativa.com>`_:
* César A. Sánchez
* Pedro M. Baeza

View File

@@ -0,0 +1,4 @@
This module allows you to show the cumulated balance, both in the company
currency and in the original currency, on the general ledger and partner ledger
menus, which is an aid for accountants that need to check the evolution of the
balances.

View File

@@ -0,0 +1,2 @@
* For v14, there's only need to migrate the field amount_currency_balance, as
the other one already exists in core.

View File

@@ -0,0 +1,6 @@
#. Go to *Invoicing > Accounting > General Ledger* or
*Invoicing > Accounting > Partner Ledger*
#. Two new columns will be available:
* Cumulated Balance
* Cumulated Balance in Currency

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,459 @@
<?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: http://docutils.sourceforge.net/" />
<title>Journal Ledger Cumulated Balance</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="journal-ledger-cumulated-balance">
<h1 class="title">Journal Ledger Cumulated Balance</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/13.0/account_move_line_cumulated_balance"><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-13-0/account-financial-tools-13-0-account_move_line_cumulated_balance"><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/13.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>This module allows you to show the cumulated balance, both in the company
currency and in the original currency, on the general ledger and partner ledger
menus, which is an aid for accountants that need to check the evolution of the
balances.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="id1">Configuration</a></li>
<li><a class="reference internal" href="#usage" id="id2">Usage</a></li>
<li><a class="reference internal" href="#known-issues-roadmap" id="id3">Known issues / Roadmap</a></li>
<li><a class="reference internal" href="#bug-tracker" id="id4">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="id5">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="id6">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="id7">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="id8">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h1><a class="toc-backref" href="#id1">Configuration</a></h1>
<p>To see all the menus, make sure:</p>
<ul class="simple">
<li>Your user is member of the group
“Technical Settings / Show Full Accounting Features”</li>
<li>The page is running in debug mode or you have the <cite>base_technical_features</cite>
module installed and belonging to such group.</li>
</ul>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#id2">Usage</a></h1>
<ol class="arabic simple">
<li>Go to <em>Invoicing &gt; Accounting &gt; General Ledger</em> or
<em>Invoicing &gt; Accounting &gt; Partner Ledger</em></li>
<li>Two new columns will be available:<ul>
<li>Cumulated Balance</li>
<li>Cumulated Balance in Currency</li>
</ul>
</li>
</ol>
</div>
<div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#id3">Known issues / Roadmap</a></h1>
<ul class="simple">
<li>For v14, theres only need to migrate the field amount_currency_balance, as
the other one already exists in core.</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#id4">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_line_cumulated_balance%0Aversion:%2013.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="#id5">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#id6">Authors</a></h2>
<ul class="simple">
<li>Tecnativa</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#id7">Contributors</a></h2>
<ul class="simple">
<li>Odoo SA</li>
<li><a class="reference external" href="https://www.tecnativa.com">Tecnativa</a>:<ul>
<li>César A. Sánchez</li>
<li>Pedro M. Baeza</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#id8">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/13.0/account_move_line_cumulated_balance">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,4 @@
# Copyright 2020 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)
from . import test_account_move_line_cumulated_balance

View File

@@ -0,0 +1,84 @@
# Copyright 2020 Tecnativa - Víctor Martínez
# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html
from odoo.tests import Form
from odoo.tests.common import SavepointCase
class TestAccount(SavepointCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.account_account_type_model = cls.env["account.account.type"]
cls.account_account_model = cls.env["account.account"]
cls.account_type_receivable = cls.account_account_type_model.create(
{"name": "Test Receivable", "type": "receivable", "internal_group": "asset"}
)
cls.account_type_regular = cls.account_account_type_model.create(
{"name": "Test Regular", "type": "other", "internal_group": "income"}
)
cls.account_receivable = cls.account_account_model.create(
{
"name": "Test Receivable",
"code": "TEST_AR",
"user_type_id": cls.account_type_receivable.id,
"reconcile": True,
}
)
cls.account_income = cls.account_account_model.create(
{
"name": "Test Income",
"code": "TEST_IN",
"user_type_id": cls.account_type_regular.id,
"reconcile": False,
}
)
cls.partner = cls.env["res.partner"].create(
{
"name": "Test customer",
"customer_rank": 1,
"property_account_receivable_id": cls.account_receivable.id,
}
)
cls.journal = cls.env["account.journal"].create(
{
"name": "Test journal",
"type": "sale",
"code": "test-sale-jorunal",
"company_id": cls.env.company.id,
}
)
cls.product = cls.env["product.product"].create(
{"name": "Test product", "type": "service"}
)
invoice = Form(
cls.env["account.move"].with_context(
default_type="out_invoice", default_company_id=cls.env.company.id
)
)
invoice.partner_id = cls.partner
invoice.journal_id = cls.journal
with invoice.invoice_line_ids.new() as line_form:
line_form.name = cls.product.name
line_form.product_id = cls.product
line_form.quantity = 1.0
line_form.price_unit = 10
line_form.account_id = cls.account_income
invoice = invoice.save()
invoice.action_post()
cls.invoice = invoice
def test_remove_invoice_error(self):
# Delete invoice while name isn't /
lines = (
self.env["account.move.line"]
.with_context(order_cumulated_balance="date desc, id desc")
.search(
[("move_id.state", "=", "posted"), ("move_id", "=", self.invoice.id)]
)
)
self.assertAlmostEqual(lines[0].cumulated_balance, 0)
self.assertAlmostEqual(lines[0].cumulated_balance_currency, 0)
self.assertAlmostEqual(lines[1].cumulated_balance, 10)
self.assertAlmostEqual(lines[1].cumulated_balance_currency, 0)

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_move_line_tree_grouped_general" model="ir.ui.view">
<field name="name">account.move.line.tree.grouped.misc</field>
<field name="model">account.move.line</field>
<field name="inherit_id" ref="account.view_move_line_tree_grouped_general" />
<field name="arch" type="xml">
<xpath expr="/tree" position="attributes">
<attribute name="default_order">date asc</attribute>
</xpath>
<field name="amount_currency" position="before">
<field name="cumulated_balance" optional="show" />
</field>
<field name="amount_currency" position="after">
<field
name="cumulated_balance_currency"
groups="base.group_multi_currency"
/>
</field>
</field>
</record>
<record id="view_move_line_tree_grouped_partner" model="ir.ui.view">
<field name="name">account.move.line.tree.grouped.partner</field>
<field name="model">account.move.line</field>
<field name="inherit_id" ref="account.view_move_line_tree_grouped_partner" />
<field name="arch" type="xml">
<xpath expr="/tree" position="attributes">
<attribute name="default_order">date asc</attribute>
</xpath>
<field name="credit" position="after">
<field name="cumulated_balance" optional="show" />
</field>
<field name="amount_currency" position="after">
<field
name="cumulated_balance_currency"
optional="show"
groups="base.group_multi_currency"
/>
</field>
</field>
</record>
</odoo>

View File

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

View File

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