[ADD] stock_account_no_auto_reconcile

This commit is contained in:
AaronHForgeFlow
2022-08-22 14:28:02 +02:00
committed by AaronHForgeFlow
parent 4ceba41a65
commit cfc1b8f79e
16 changed files with 790 additions and 0 deletions

View File

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

View File

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

View File

@@ -0,0 +1,94 @@
===============================
Stock Account No Auto Reconcile
===============================
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! 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/stock_account_no_auto_reconcile
: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-stock_account_no_auto_reconcile
: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|
Prevent automatically reconciliation when invoicing a stock move or when validating
a stock move.
When receiving in multiple incoming shipments and invoicing periodically,
it is not desirable to reconcile until the order (SO/PO) is closed, otherwise you can get
an error when receiving or delivering another pickng, because of the partial reconcile
https://github.com/odoo/odoo/blob/15.0/addons/account/models/account_move.py#L4463
You can use additional modules, like purchase_unreconciled and sale_unreconciled in
order to perform the reconciliation when the order is fully done.
Technically, this does not depend on purchase and sale, but the symptoms only appear
when the invoce is linked to a PO SO.
**Table of contents**
.. contents::
:local:
Usage
=====
If you want to disable the standard feature of autoreconciling journal items for
interim accounts uncheck the flag "Reconcile Interim Accounts on the fly" in the
accounting settings.
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:%20stock_account_no_auto_reconcile%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
*
Contributors
~~~~~~~~~~~~
* ForgeFlow S.L. <contact@forgeflow.com>
- Aaron Henriquez <aaron.henriquez@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/stock_account_no_auto_reconcile>`_ 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,13 @@
# Copyright 2022 ForgeFlow S.L.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Stock Account No Auto Reconcile",
"summary": "Do not try to reconcile stock interim related JE",
"version": "15.0.1.0.0",
"category": "Accounting",
"author": "Odoo Community Association (OCA), ForgeFlow, ",
"license": "AGPL-3",
"website": "https://github.com/OCA/account-financial-tools",
"depends": ["purchase_stock", "sale_stock"],
"data": ["views/res_config_settings_views.xml"],
}

View File

@@ -0,0 +1,3 @@
from . import account_move
from . import res_config_settings
from . import company

View File

@@ -0,0 +1,17 @@
# Copyright 2022 ForgeFlow S.L. (http://www.forgeflow.com)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo import models
class AccountMove(models.Model):
_inherit = "account.move"
def _stock_account_anglo_saxon_reconcile_valuation(self, product=False):
"""Warning! Overpassing an standard method, avoiding reconciling interim
account JE. Pass the context to overpass
"""
if self.company_id.anglo_saxon_auto_reconcile:
return super(
AccountMove, self
)._stock_account_anglo_saxon_reconcile_valuation()

View File

@@ -0,0 +1,10 @@
# Copyright 2022 ForgeFlow S.L. (http://www.forgeflow.com)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo import fields, models
class ResCompany(models.Model):
_inherit = "res.company"
anglo_saxon_auto_reconcile = fields.Boolean(default=True)

View File

@@ -0,0 +1,17 @@
# Copyright 2022 ForgeFlow S.L. (http://www.forgeflow.com)
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo import fields, models
class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
anglo_saxon_auto_reconcile = fields.Boolean(
related="company_id.anglo_saxon_auto_reconcile",
readonly=False,
string="Reconcile Interim Accounts on the fly",
help=(
"Reconcile interim journal items when validating pickings or posting invoices"
),
)

View File

@@ -0,0 +1,3 @@
* ForgeFlow S.L. <contact@forgeflow.com>
- Aaron Henriquez <aaron.henriquez@forgeflow.com>

View File

@@ -0,0 +1,12 @@
Prevent automatically reconciliation when invoicing a stock move or when validating
a stock move.
When receiving in multiple incoming shipments and invoicing periodically,
it is not desirable to reconcile until the order (SO/PO) is closed, otherwise you can get
an error when receiving or delivering another pickng, because of the partial reconcile
https://github.com/odoo/odoo/blob/15.0/addons/account/models/account_move.py#L4463
You can use additional modules, like purchase_unreconciled and sale_unreconciled in
order to perform the reconciliation when the order is fully done.
Technically, this does not depend on purchase and sale, but the symptoms only appear
when the invoce is linked to a PO SO.

View File

@@ -0,0 +1,3 @@
If you want to disable the standard feature of autoreconciling journal items for
interim accounts uncheck the flag "Reconcile Interim Accounts on the fly" in the
accounting settings.

View File

@@ -0,0 +1,439 @@
<?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>Stock Account No Auto Reconcile</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="stock-account-no-auto-reconcile">
<h1 class="title">Stock Account No Auto Reconcile</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/stock_account_no_auto_reconcile"><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-stock_account_no_auto_reconcile"><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>Prevent automatically reconciliation when invoicing a stock move or when validating
a stock move.
When receiving in multiple incoming shipments and invoicing periodically,
it is not desirable to reconcile until the order (SO/PO) is closed, otherwise you can get
an error when receiving or delivering another pickng, because of the partial reconcile
<a class="reference external" href="https://github.com/odoo/odoo/blob/15.0/addons/account/models/account_move.py#L4463">https://github.com/odoo/odoo/blob/15.0/addons/account/models/account_move.py#L4463</a></p>
<p>You can use additional modules, like purchase_unreconciled and sale_unreconciled in
order to perform the reconciliation when the order is fully done.</p>
<p>Technically, this does not depend on purchase and sale, but the symptoms only appear
when the invoce is linked to a PO SO.</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>If you want to disable the standard feature of autoreconciling journal items for
interim accounts uncheck the flag “Reconcile Interim Accounts on the fly” in the
accounting settings.</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:%20stock_account_no_auto_reconcile%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>
<li></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. &lt;<a class="reference external" href="mailto:contact&#64;forgeflow.com">contact&#64;forgeflow.com</a>&gt;<ul>
<li>Aaron Henriquez &lt;<a class="reference external" href="mailto:aaron.henriquez&#64;forgeflow.com">aaron.henriquez&#64;forgeflow.com</a>&gt;</li>
</ul>
</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/stock_account_no_auto_reconcile">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 @@
from . import test_account_no_auto_reconcile

View File

@@ -0,0 +1,139 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import datetime
from odoo import fields
from odoo.tests import common, tagged
@tagged("-at_install", "post_install")
class StockAccountNoAutoReconcile(common.SingleTransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.product_obj = cls.env["product.product"]
cls.category_obj = cls.env["product.category"]
cls.partner_obj = cls.env["res.partner"]
cls.po_obj = cls.env["purchase.order"]
cls.acc_obj = cls.env["account.account"]
cls.categ_unit = cls.env.ref("uom.product_uom_categ_unit")
assets = cls.env.ref("account.data_account_type_current_assets")
expenses = cls.env.ref("account.data_account_type_expenses")
equity = cls.env.ref("account.data_account_type_equity")
cls.company = cls.env.ref("base.main_company")
# Create partner:
cls.partner = cls.partner_obj.create({"name": "Test Vendor"})
# Create standard product:
cls.product = cls.product_obj.create(
{"name": "saled Product", "type": "product"}
)
# Create product that uses a reconcilable stock input account.
cls.stock_journal = cls.env["account.journal"].create(
{"name": "Stock Journal", "code": "STJTEST", "type": "general"}
)
cls.sale_journal = cls.env["account.journal"].create(
{"name": "Sales Journal", "code": "SLTEST", "type": "sale"}
)
# Create account for Goods Received Not Invoiced
name = "Goods Received Not Invoiced"
code = "grni"
acc_type = equity
cls.account_grni = cls._create_account(
acc_type, name, code, cls.company, reconcile=True
)
# Create account for Cost of Goods Sold
name = "Cost of Goods Sold"
code = "cogs"
acc_type = expenses
cls.account_cogs = cls._create_account(acc_type, name, code, cls.company)
# Create account for Goods Delivered Not Invoiced
name = "Goods Delivered Not Invoiced"
code = "gdni"
acc_type = expenses
cls.account_gdni = cls._create_account(
acc_type, name, code, cls.company, reconcile=True
)
# Create account for Inventory
name = "Inventory"
code = "inventory"
acc_type = assets
cls.account_inventory = cls._create_account(acc_type, name, code, cls.company)
cls.product_categ = cls.category_obj.create(
{
"name": "Test Category",
"property_cost_method": "standard",
"property_stock_valuation_account_id": cls.account_inventory.id,
"property_stock_account_input_categ_id": cls.account_grni.id,
"property_account_expense_categ_id": cls.account_cogs.id,
"property_stock_account_output_categ_id": cls.account_gdni.id,
"property_valuation": "real_time",
"property_stock_journal": cls.stock_journal.id,
}
)
cls.product_to_reconcile = cls.product_obj.create(
{
"name": "Purchased Product (To reconcile)",
"type": "product",
"standard_price": 100.0,
"categ_id": cls.product_categ.id,
}
)
@classmethod
def _create_account(cls, acc_type, name, code, company, reconcile=False):
"""Create an account."""
account = cls.acc_obj.create(
{
"name": name,
"code": code,
"user_type_id": acc_type.id,
"company_id": company.id,
"reconcile": reconcile,
}
)
return account
def _do_picking(self, picking, date):
"""Do picking with only one move on the given date."""
picking.action_confirm()
picking.move_lines.quantity_done = picking.move_lines.product_uom_qty
picking._action_done()
for move in picking.move_lines:
move.date = date
def test_01_no_reconcile_interim(self):
"""Tests the case into which we receive the goods first, and then make the invoice."""
self.company.anglo_saxon_auto_reconcile = False
po = self.po_obj.create(
{
"partner_id": self.partner.id,
"order_line": [
(
0,
0,
{
"product_id": self.product_to_reconcile.id,
"name": self.product_to_reconcile.name,
"product_qty": 5.0,
"price_unit": 100.0,
"product_uom": self.product_to_reconcile.uom_id.id,
"date_planned": fields.Datetime.now(),
},
)
],
}
)
po.button_confirm()
self._do_picking(po.picking_ids, fields.Datetime.now())
# Invoice created and validated:
po.action_create_invoice()
invoice_ids = po.invoice_ids.filtered(lambda i: i.move_type == "in_invoice")
invoice_ids.invoice_date = datetime.now()
invoice_ids.action_post()
# should not be reconciled
stock_moves = po.picking_ids.move_lines
interim_account_id = self.account_grni.id
valuation_line = stock_moves.mapped("account_move_ids.line_ids").filtered(
lambda x: x.account_id.id == interim_account_id
)
self.assertFalse(valuation_line.reconciled)

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="account.res_config_settings_view_form" />
<field name="arch" type="xml">
<div data-key="account" position="inside">
<h2>Reconcile Interim Accounts on the fly</h2>
<div
class="row mt16 o_settings_container"
name="anglo_saxon_setting_container"
>
<div class="col-12 col-lg-6 o_setting_box" id="anglo_saxon">
<div class="o_setting_left_pane">
<field name="anglo_saxon_auto_reconcile" />
</div>
<div class="o_setting_right_pane">
<label
string="Reconcile Interim Accounts on the fly"
for="anglo_saxon_auto_reconcile"
/>
<div class="text-muted">
Reconcile interim journal items when validating pickings or posting invoices.
</div>
</div>
</div>
</div>
</div>
</field>
</record>
</odoo>