summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwilliam <wan@odoo.com>2020-03-30 11:46:27 +0000
committerwilliam <wan@odoo.com>2020-08-05 11:57:10 +0000
commit82dc0cb7b91ae59beae7e1c865b670afc5958b31 (patch)
tree949b949b249cdac265310798d5abb82675a1741b
parent276ba8e90c87f8294286f915508766761a58d1e2 (diff)
[IMP] account: soft post entries in the future
Add an easy way to not post the entries in the future when calling post() on it, but rather set it to be auto-posted at accounting date. This is useful when we are creating a lot of entries in batch and some might be in the future, some in the past, and we don't want to separate that in two batch every time. (asset, accrual, transfer,... )
-rw-r--r--addons/account/models/account_bank_statement.py2
-rw-r--r--addons/account/models/account_move.py67
-rw-r--r--addons/account/models/account_partial_reconcile.py2
-rw-r--r--addons/account/models/account_payment.py2
-rw-r--r--addons/account/tests/common.py2
-rw-r--r--addons/account/tests/test_account_account.py4
-rw-r--r--addons/account/tests/test_account_bank_statement.py8
-rw-r--r--addons/account/tests/test_account_journal_dashboard.py4
-rw-r--r--addons/account/tests/test_account_move_entry.py42
-rw-r--r--addons/account/tests/test_account_move_in_invoice.py6
-rw-r--r--addons/account/tests/test_account_move_out_invoice.py10
-rw-r--r--addons/account/tests/test_account_move_partner_count.py2
-rw-r--r--addons/account/tests/test_account_move_payments_widget.py18
-rw-r--r--addons/account/tests/test_account_move_reconcile.py20
-rw-r--r--addons/account/tests/test_account_payment.py2
-rw-r--r--addons/account/tests/test_account_payment_register.py6
-rw-r--r--addons/account/tests/test_invoice_taxes.py10
-rw-r--r--addons/account/tests/test_reconciliation.py28
-rw-r--r--addons/account/tests/test_reconciliation_matching_rules.py6
-rw-r--r--addons/account/tests/test_tax_report.py2
-rw-r--r--addons/account/tests/test_transfer_wizard.py4
-rw-r--r--addons/account/views/account_move_views.xml10
-rw-r--r--addons/account/wizard/account_validate_account_move.py6
-rw-r--r--addons/account/wizard/account_validate_move_view.xml3
-rw-r--r--addons/account/wizard/wizard_tax_adjustments.py2
-rw-r--r--addons/account_check_printing/models/account_payment.py2
-rw-r--r--addons/account_check_printing/tests/test_print_check.py4
-rw-r--r--addons/account_debit_note/tests/test_out_debit_note.py4
-rw-r--r--addons/account_edi/models/account_move.py8
-rw-r--r--addons/account_edi_facturx/tests/test_facturx.py4
-rw-r--r--addons/delivery/tests/test_delivery_stock_move.py4
-rw-r--r--addons/hr_expense/models/hr_expense.py4
-rw-r--r--addons/l10n_ar/models/account_move.py8
-rw-r--r--addons/l10n_ch/tests/test_l10n_ch_isr_print.py4
-rw-r--r--addons/l10n_ch/tests/test_swissqr.py6
-rw-r--r--addons/l10n_cl/models/account_move.py6
-rw-r--r--addons/l10n_de/models/datev.py4
-rw-r--r--addons/l10n_fi/tests/test_get_reference.py8
-rw-r--r--addons/l10n_generic_coa/demo/account_invoice_demo.xml2
-rw-r--r--addons/l10n_id_efaktur/models/account_move.py4
-rw-r--r--addons/l10n_in/models/account_invoice.py8
-rw-r--r--addons/l10n_it_edi/models/account_invoice.py7
-rw-r--r--addons/l10n_latam_invoice_document/models/account_move.py5
-rw-r--r--addons/membership/tests/test_membership.py2
-rw-r--r--addons/payment/models/payment_acquirer.py4
-rw-r--r--addons/point_of_sale/models/pos_order.py2
-rw-r--r--addons/point_of_sale/models/pos_session.py2
-rw-r--r--addons/point_of_sale/tests/test_point_of_sale_flow.py4
-rw-r--r--addons/product_email_template/models/account_move.py8
-rw-r--r--addons/product_margin/tests/test_product_margin.py2
-rw-r--r--addons/purchase/tests/test_access_rights.py2
-rw-r--r--addons/purchase/tests/test_purchase_order_report.py2
-rw-r--r--addons/purchase_stock/models/account_invoice.py6
-rw-r--r--addons/purchase_stock/tests/test_anglo_saxon_valuation_reconciliation.py10
-rw-r--r--addons/purchase_stock/tests/test_purchase_order.py4
-rw-r--r--addons/purchase_stock/tests/test_stockvaluation.py24
-rw-r--r--addons/sale/models/account_invoice.py8
-rw-r--r--addons/sale/tests/test_reinvoice.py10
-rw-r--r--addons/sale/tests/test_sale_order.py2
-rw-r--r--addons/sale/tests/test_sale_refund.py10
-rw-r--r--addons/sale/tests/test_sale_to_invoice.py4
-rw-r--r--addons/sale_mrp/tests/test_sale_mrp_flow.py2
-rw-r--r--addons/sale_stock/tests/test_anglo_saxon_valuation.py46
-rw-r--r--addons/sale_stock/tests/test_anglo_saxon_valuation_reconciliation.py8
-rw-r--r--addons/sale_stock/tests/test_sale_stock.py4
-rw-r--r--addons/sale_timesheet/tests/test_project_overview.py2
-rw-r--r--addons/sale_timesheet/tests/test_reinvoice.py10
-rw-r--r--addons/sale_timesheet/tests/test_reporting.py4
-rw-r--r--addons/sale_timesheet/tests/test_sale_service.py2
-rw-r--r--addons/sale_timesheet/tests/test_sale_timesheet.py8
-rw-r--r--addons/snailmail_account/tests/test_pingen_send.py2
-rw-r--r--addons/stock_account/models/account_move.py10
-rw-r--r--addons/stock_account/models/product.py8
-rw-r--r--addons/stock_account/models/stock_move.py2
-rw-r--r--addons/stock_account/tests/test_anglo_saxon_valuation_reconciliation_common.py2
-rw-r--r--addons/stock_account/wizard/stock_valuation_layer_revaluation.py2
-rw-r--r--addons/stock_dropshipping/tests/test_stockvaluation.py4
-rw-r--r--addons/stock_landed_costs/models/stock_landed_cost.py2
-rw-r--r--addons/stock_landed_costs/tests/test_stock_landed_costs_purchase.py2
-rw-r--r--addons/stock_landed_costs/tests/test_stockvaluationlayer.py17
80 files changed, 319 insertions, 284 deletions
diff --git a/addons/account/models/account_bank_statement.py b/addons/account/models/account_bank_statement.py
index 692a572904d..1e9b91eb314 100644
--- a/addons/account/models/account_bank_statement.py
+++ b/addons/account/models/account_bank_statement.py
@@ -391,7 +391,7 @@ class AccountBankStatement(models.Model):
statement._set_next_sequence()
self.write({'state': 'posted'})
- self.line_ids.move_id.post()
+ self.line_ids.move_id._post(soft=False)
def button_validate(self):
if any(statement.state != 'posted' or not statement.all_lines_reconciled for statement in self):
diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py
index 4c5e0046e26..621cbb22b23 100644
--- a/addons/account/models/account_move.py
+++ b/addons/account/models/account_move.py
@@ -2,11 +2,10 @@
from odoo import api, fields, models, _
from odoo.exceptions import RedirectWarning, UserError, ValidationError, AccessError
-from odoo.tools import float_is_zero, float_repr, float_compare, date_utils, email_split, email_escape_char, email_re
+from odoo.tools import float_compare, date_utils, email_split, email_re
from odoo.tools.misc import formatLang, format_date, get_lang
from datetime import date, timedelta
-from itertools import groupby
from itertools import zip_longest
from hashlib import sha256
from json import dumps
@@ -14,6 +13,7 @@ from json import dumps
import ast
import json
import re
+import warnings
#forbidden fields
INTEGRITY_HASH_MOVE_FIELDS = ('date', 'journal_id', 'company_id')
@@ -228,7 +228,7 @@ class AccountMove(models.Model):
help="The journal entry from which this tax cash basis journal entry has been created.")
# ==== Auto-post feature fields ====
- auto_post = fields.Boolean(string='Post Automatically', default=False,
+ auto_post = fields.Boolean(string='Post Automatically', default=False, copy=False,
help='If this checkbox is ticked, this entry will be automatically posted at its date.')
# ==== Reverse feature fields ====
@@ -2226,7 +2226,7 @@ class AccountMove(models.Model):
# Reconcile moves together to cancel the previous one.
if cancel:
- reverse_moves.with_context(move_reverse_cancel=cancel).post()
+ reverse_moves.with_context(move_reverse_cancel=cancel)._post(soft=False)
for move, reverse_move in zip(self, reverse_moves):
accounts = move.mapped('line_ids.account_id') \
.filtered(lambda account: account.reconcile or account.internal_type == 'liquidity')
@@ -2288,10 +2288,40 @@ class AccountMove(models.Model):
return move
def post(self):
+ warnings.warn(
+ "RedirectWarning method 'post()' is a deprecated alias to 'action_post()' or _post()",
+ DeprecationWarning
+ )
+ return self.action_post()
+
+ def _post(self, soft=True):
+ """Post/Validate the documents.
+
+ Posting the documents will give it a number, and check that the document is
+ complete (some fields might not be required if not posted but are required
+ otherwise).
+ If the journal is locked with a hash table, it will be impossible to change
+ some fields afterwards.
+
+ :param soft (bool): if True, future documents are not immediately posted,
+ but are set to be auto posted automatically at the set accounting date.
+ Nothing will be performed on those documents before the accounting date.
+ :return Model<account.move>: the documents that have been posted
+ """
+ if soft:
+ future_moves = self.filtered(lambda move: move.date > fields.Date.today())
+ future_moves.auto_post = True
+ for move in future_moves:
+ msg = _('This move will be posted at the accounting date: %(date)s', date=format_date(self.env, move.date))
+ move.message_post(body=msg)
+ to_post = self - future_moves
+ else:
+ to_post = self
+
# `user_has_group` won't be bypassed by `sudo()` since it doesn't change the user anymore.
if not self.env.su and not self.env.user.has_group('account.group_account_invoice'):
raise AccessError(_("You don't have the access rights to post an invoice."))
- for move in self:
+ for move in to_post:
if not move.line_ids.filtered(lambda line: not line.display_type):
raise UserError(_('You need to add a line before posting.'))
if move.auto_post and move.date > fields.Date.today():
@@ -2323,16 +2353,13 @@ class AccountMove(models.Model):
move.with_context(check_move_validity=False)._onchange_currency()
# Create the analytic lines in batch is faster as it leads to less cache invalidation.
- self.mapped('line_ids').create_analytic_lines()
- self.write({
+ to_post.mapped('line_ids').create_analytic_lines()
+ to_post.write({
'state': 'posted',
'posted_before': True,
})
- for move in self:
- if move.auto_post and move.date > fields.Date.today():
- raise UserError(_("This move is configured to be auto-posted on %s", move.date.strftime(get_lang(self.env).date_format)))
-
+ for move in to_post:
move.message_subscribe([p.id for p in [move.partner_id] if p not in move.sudo().message_partner_ids])
# Compute 'ref' for 'out_invoice'.
@@ -2345,7 +2372,7 @@ class AccountMove(models.Model):
to_write['line_ids'].append((1, line.id, {'name': to_write['payment_reference']}))
move.write(to_write)
- for move in self:
+ for move in to_post:
if move.is_sale_document() \
and move.journal_id.sale_activity_type_id \
and (move.journal_id.sale_activity_user_id or move.invoice_user_id).id not in (self.env.ref('base.user_root').id, False):
@@ -2356,21 +2383,21 @@ class AccountMove(models.Model):
user_id=move.journal_id.sale_activity_user_id.id or move.invoice_user_id.id,
)
- for move in self:
+ for move in to_post:
if move.is_sale_document():
move.partner_id._increase_rank('customer_rank')
elif move.is_purchase_document():
move.partner_id._increase_rank('supplier_rank')
# Trigger action for paid invoices in amount is zero
- self.filtered(
+ to_post.filtered(
lambda m: m.is_invoice(include_receipts=True) and m.currency_id.is_zero(m.amount_total)
).action_invoice_paid()
# Force balance check since nothing prevents another module to create an incorrect entry.
# This is performed at the very end to avoid flushing fields before the whole processing.
- self._check_balanced()
- return True
+ to_post._check_balanced()
+ return to_post
def _auto_compute_invoice_reference(self):
''' Hook to be overridden to set custom conditions for auto-computed invoice references.
@@ -2389,7 +2416,7 @@ class AccountMove(models.Model):
return action
def action_post(self):
- return self.post()
+ return self._post(soft=False)
def js_assign_outstanding_line(self, line_id):
''' Called by the 'payment' widget to reconcile a suggested journal item to the present
@@ -2629,7 +2656,7 @@ class AccountMove(models.Model):
('date', '<=', fields.Date.today()),
('auto_post', '=', True),
])
- records.post()
+ records._post()
# offer the possibility to duplicate thanks to a button instead of a hidden menu, which is more visible
def action_duplicate(self):
@@ -4374,7 +4401,7 @@ class AccountMoveLine(models.Model):
involved_partials += exchange_diff_partials
results['partials'] += exchange_diff_partials
- exchange_move.post()
+ exchange_move._post(soft=False)
# ==== Create the full reconcile ====
@@ -4477,7 +4504,7 @@ class AccountMoveLine(models.Model):
#post all the writeoff moves at once
if writeoff_moves:
- writeoff_moves.post()
+ writeoff_moves._post()
# Return the writeoff move.line which is to be reconciled
return line_to_reconcile
diff --git a/addons/account/models/account_partial_reconcile.py b/addons/account/models/account_partial_reconcile.py
index 2deec394a77..ef9d8f4891e 100644
--- a/addons/account/models/account_partial_reconcile.py
+++ b/addons/account/models/account_partial_reconcile.py
@@ -597,7 +597,7 @@ class AccountPartialReconcile(models.Model):
moves_to_create.append(move_vals)
moves = self.env['account.move'].create(moves_to_create)
- moves.post()
+ moves._post(soft=False)
# Reconcile the tax lines being on a reconcile tax basis transfer account.
for line, move_index, sequence in to_reconcile_after:
diff --git a/addons/account/models/account_payment.py b/addons/account/models/account_payment.py
index c3ece2d28f6..6780cebb709 100644
--- a/addons/account/models/account_payment.py
+++ b/addons/account/models/account_payment.py
@@ -717,7 +717,7 @@ class AccountPayment(models.Model):
def action_post(self):
''' draft -> posted '''
- self.move_id.post()
+ self.move_id._post(soft=False)
def action_cancel(self):
''' draft -> cancelled '''
diff --git a/addons/account/tests/common.py b/addons/account/tests/common.py
index 5561005589d..701a56d0d63 100644
--- a/addons/account/tests/common.py
+++ b/addons/account/tests/common.py
@@ -532,7 +532,7 @@ class TestAccountReconciliationCommon(AccountTestInvoicingCommon):
invoice = self.env['account.move'].with_context(default_move_type=type).create(invoice_vals)
if auto_validate:
- invoice.post()
+ invoice.action_post()
return invoice
def create_invoice(self, type='out_invoice', invoice_amount=50, currency_id=None):
diff --git a/addons/account/tests/test_account_account.py b/addons/account/tests/test_account_account.py
index 3247feff6f0..8b7b22bc74f 100644
--- a/addons/account/tests/test_account_account.py
+++ b/addons/account/tests/test_account_account.py
@@ -52,7 +52,7 @@ class TestAccountAccount(AccountTestInvoicingCommon):
}),
],
})
- move.post()
+ move.action_post()
self.assertRecordValues(move.line_ids, [
{'reconciled': False, 'amount_residual': 0.0, 'amount_residual_currency': 0.0},
@@ -115,7 +115,7 @@ class TestAccountAccount(AccountTestInvoicingCommon):
}),
],
})
- move.post()
+ move.action_post()
# Set the account as reconcile and partially reconcile something.
account.reconcile = True
diff --git a/addons/account/tests/test_account_bank_statement.py b/addons/account/tests/test_account_bank_statement.py
index 878158bb490..60e96694c0a 100644
--- a/addons/account/tests/test_account_bank_statement.py
+++ b/addons/account/tests/test_account_bank_statement.py
@@ -761,7 +761,7 @@ class TestAccountBankStatementLine(TestAccountBankStatementCommon):
# You can't set the journal entry in an unconsistent state.
with self.assertRaises(UserError), self.cr.savepoint():
- st_line.move_id.post()
+ st_line.move_id.action_post()
def test_statement_line_move_onchange_1(self):
''' Test the consistency between the account.bank.statement.line and the generated account.move.lines
@@ -935,7 +935,7 @@ class TestAccountBankStatementLine(TestAccountBankStatementCommon):
],
},
])
- test_invoices.post()
+ test_invoices.action_post()
statement.button_post()
counterpart_lines = test_invoices.mapped('line_ids').filtered(lambda line: line.account_internal_type in ('receivable', 'payable'))
@@ -1198,7 +1198,7 @@ class TestAccountBankStatementLine(TestAccountBankStatementCommon):
}),
]
})
- test_move.post()
+ test_move.action_post()
test_line_1 = test_move.line_ids.filtered(lambda line: line.account_id == receivable_acc_1)
test_line_2 = test_move.line_ids.filtered(lambda line: line.account_id == receivable_acc_2)
@@ -1403,7 +1403,7 @@ class TestAccountBankStatementLine(TestAccountBankStatementCommon):
}),
]
})
- test_move.post()
+ test_move.action_post()
test_line_1 = test_move.line_ids.filtered(lambda line: line.name == 'test line 1')
test_line_2 = test_move.line_ids.filtered(lambda line: line.name == 'test line 2')
diff --git a/addons/account/tests/test_account_journal_dashboard.py b/addons/account/tests/test_account_journal_dashboard.py
index 316b8a0ee84..6bb127b672c 100644
--- a/addons/account/tests/test_account_journal_dashboard.py
+++ b/addons/account/tests/test_account_journal_dashboard.py
@@ -49,7 +49,7 @@ class TestAccountJournalDashboard(AccountTestInvoicingCommon):
self.assertIn('0.00', dashboard_data['sum_waiting'])
# Check Both
- invoice.post()
+ invoice.action_post()
dashboard_data = journal.get_journal_dashboard_datas()
self.assertEqual(dashboard_data['number_draft'], 1)
@@ -59,7 +59,7 @@ class TestAccountJournalDashboard(AccountTestInvoicingCommon):
self.assertIn('81.72', dashboard_data['sum_waiting'])
# Check waiting payment
- refund.post()
+ refund.action_post()
dashboard_data = journal.get_journal_dashboard_datas()
self.assertEqual(dashboard_data['number_draft'], 0)
diff --git a/addons/account/tests/test_account_move_entry.py b/addons/account/tests/test_account_move_entry.py
index 61bbd3dee9e..b0e6eb642a5 100644
--- a/addons/account/tests/test_account_move_entry.py
+++ b/addons/account/tests/test_account_move_entry.py
@@ -69,7 +69,7 @@ class TestAccountMove(AccountTestInvoicingCommon):
self.test_move.line_ids[0].account_id = custom_account
def test_misc_fiscalyear_lock_date_1(self):
- self.test_move.post()
+ self.test_move.action_post()
# Set the lock date after the journal entry date.
self.test_move.company_id.fiscalyear_lock_date = fields.Date.from_string('2017-01-01')
@@ -143,7 +143,7 @@ class TestAccountMove(AccountTestInvoicingCommon):
self.assertEqual(copy_move.date, copy_move.company_id.fiscalyear_lock_date + relativedelta(days=1))
def test_misc_fiscalyear_lock_date_2(self):
- self.test_move.post()
+ self.test_move.action_post()
# Create a bank statement to get a balance in the suspense account.
statement = self.env['account.bank.statement'].create({
@@ -160,7 +160,7 @@ class TestAccountMove(AccountTestInvoicingCommon):
self.test_move.company_id.fiscalyear_lock_date = fields.Date.from_string('2017-01-01')
def test_misc_tax_lock_date_1(self):
- self.test_move.post()
+ self.test_move.action_post()
# Set the tax lock date after the journal entry date.
self.test_move.company_id.tax_lock_date = fields.Date.from_string('2017-01-01')
@@ -249,7 +249,7 @@ class TestAccountMove(AccountTestInvoicingCommon):
copy_move = self.test_move.copy()
# /!\ The date is changed automatically to the next available one during the post.
- copy_move.post()
+ copy_move.action_post()
# You can't change the date to one being in a locked period.
with self.assertRaises(UserError), self.cr.savepoint():
@@ -297,7 +297,7 @@ class TestAccountMove(AccountTestInvoicingCommon):
# lines[1] = 'move 1 counterpart line'
# lines[2] = 'move 1 receivable line'
# lines[3] = 'move 2 counterpart line'
- draft_moves.post()
+ draft_moves.action_post()
lines = draft_moves.mapped('line_ids').sorted('balance')
(lines[0] + lines[2]).reconcile()
@@ -352,23 +352,23 @@ class TestAccountMove(AccountTestInvoicingCommon):
# We don't recompute user's input when posting
self.test_move.name = 'MyMISC/2020/0000001'
- self.test_move.post()
+ self.test_move.action_post()
self.assertEqual(self.test_move.name, 'MyMISC/2020/0000001')
# Has been posted, and it doesn't change anymore
self.test_move.button_draft()
self.test_move.date = '2020-01-02'
- self.test_move.post()
+ self.test_move.action_post()
self.assertEqual(self.test_move.name, 'MyMISC/2020/0000001')
def test_journal_sequence(self):
self.assertEqual(self.test_move.name, 'MISC/2016/01/0001')
- self.test_move.post()
+ self.test_move.action_post()
self.assertEqual(self.test_move.name, 'MISC/2016/01/0001')
copy1 = self.test_move.copy()
self.assertEqual(copy1.name, '/')
- copy1.post()
+ copy1.action_post()
self.assertEqual(copy1.name, 'MISC/2016/01/0002')
copy2 = self.test_move.copy()
@@ -378,7 +378,7 @@ class TestAccountMove(AccountTestInvoicingCommon):
self.assertEqual(copy2.name, 'MISC2/2016/01/0001')
with Form(copy2) as move_form: # It is editable in the form
move_form.name = 'MyMISC/2099/0001'
- copy2.post()
+ copy2.action_post()
self.assertEqual(copy2.name, 'MyMISC/2099/0001')
copy3 = copy2.copy()
@@ -386,22 +386,22 @@ class TestAccountMove(AccountTestInvoicingCommon):
with self.assertRaises(AssertionError):
with Form(copy2) as move_form: # It is not editable in the form
move_form.name = 'MyMISC/2099/0002'
- copy3.post()
+ copy3.action_post()
self.assertEqual(copy3.name, 'MyMISC/2099/0002')
copy3.name = 'MISC2/2016/00002'
copy4 = copy2.copy()
- copy4.post()
+ copy4.action_post()
self.assertEqual(copy4.name, 'MISC2/2016/00003')
copy5 = copy2.copy()
copy5.date = '2021-02-02'
- copy5.post()
+ copy5.action_post()
self.assertEqual(copy5.name, 'MISC2/2021/00001')
copy5.name = 'N\'importe quoi?'
copy6 = copy5.copy()
- copy6.post()
+ copy6.action_post()
self.assertEqual(copy6.name, 'N\'importe quoi?1')
def test_journal_sequence_format(self):
@@ -428,7 +428,7 @@ class TestAccountMove(AccountTestInvoicingCommon):
next_move_month.date = '2016-04-12'
next_move_year.date = '2017-03-12'
next_moves = (next_move + next_move_month + next_move_year)
- next_moves.post()
+ next_moves.action_post()
for sequence_init, sequence_next, sequence_next_month, sequence_next_year in sequences:
init_move.name = sequence_init
@@ -444,7 +444,7 @@ class TestAccountMove(AccountTestInvoicingCommon):
for c in range(2, 25):
copy = self.test_move.copy()
copy.name = "/"
- copy.post()
+ copy.action_post()
self.assertEqual(copy.name, f"{prefix}{c}")
def test_journal_sequence_multiple_type(self):
@@ -458,7 +458,7 @@ class TestAccountMove(AccountTestInvoicingCommon):
(refund + refund2).move_type = 'out_refund'
all = (entry + entry2 + invoice + invoice2 + refund + refund2)
all.name = False
- all.post()
+ all.action_post()
self.assertEqual(entry.name, 'MISC/2016/01/0002')
self.assertEqual(entry2.name, 'MISC/2016/01/0003')
self.assertEqual(invoice.name, 'INV/2016/01/0001')
@@ -471,7 +471,7 @@ class TestAccountMove(AccountTestInvoicingCommon):
other_moves.unlink() # Do not interfere when trying to get the highest name for new periods
self.test_move.name = '00000876-G 0002/2020'
next = self.test_move.copy()
- next.post()
+ next.action_post()
self.assertEqual(next.name, '00000876-G 0002/2021') # Wait, I didn't want this!
next.journal_id.sequence_override_regex = r'^(?P<seq>\d*)(?P<suffix1>.*?)(?P<year>(\d{4})?)(?P<suffix2>)$'
@@ -481,7 +481,7 @@ class TestAccountMove(AccountTestInvoicingCommon):
next = next = self.test_move.copy()
next.date = "2017-05-02"
- next.post()
+ next.action_post()
self.assertEqual(next.name, '00000001-G 0002/2017')
def test_journal_sequence_ordering(self):
@@ -497,7 +497,7 @@ class TestAccountMove(AccountTestInvoicingCommon):
# that entry is actualy the first one of the period, so it already has a name
# set it to '/' so that it is recomputed at post to be ordered correctly.
copies[0].name = '/'
- copies.post()
+ copies.action_post()
# Ordered by date
self.assertEqual(copies[0].name, 'XMISC/2019/00002')
@@ -565,7 +565,7 @@ class TestAccountMove(AccountTestInvoicingCommon):
partner = self.env['res.partner'].create({'name': 'Belouga'})
move.partner_id = partner
- move.post()
+ move.action_post()
self.assertEqual(move.message_partner_ids, self.env.user.partner_id | existing_partners | partner)
def test_misc_move_onchange(self):
diff --git a/addons/account/tests/test_account_move_in_invoice.py b/addons/account/tests/test_account_move_in_invoice.py
index 511e34983de..69c85523809 100644
--- a/addons/account/tests/test_account_move_in_invoice.py
+++ b/addons/account/tests/test_account_move_in_invoice.py
@@ -1112,7 +1112,7 @@ class TestAccountMoveInInvoiceOnchanges(AccountTestInvoicingCommon):
], self.move_vals)
def test_in_invoice_create_refund(self):
- self.invoice.post()
+ self.invoice.action_post()
move_reversal = self.env['account.move.reversal'].with_context(active_model="account.move", active_ids=self.invoice.ids).create({
'date': fields.Date.from_string('2019-02-01'),
@@ -1215,7 +1215,7 @@ class TestAccountMoveInInvoiceOnchanges(AccountTestInvoicingCommon):
move_form.currency_id = self.currency_data['currency']
move_form.save()
- self.invoice.post()
+ self.invoice.action_post()
# The currency rate changed from 1/3 to 1/2.
move_reversal = self.env['account.move.reversal'].with_context(active_model="account.move", active_ids=self.invoice.ids).create({
@@ -1651,7 +1651,7 @@ class TestAccountMoveInInvoiceOnchanges(AccountTestInvoicingCommon):
}),
]
})
- move.post()
+ move.action_post()
wizard = self.env['account.accrual.accounting.wizard']\
.with_context(active_model='account.move.line', active_ids=move.invoice_line_ids.ids).create({
diff --git a/addons/account/tests/test_account_move_out_invoice.py b/addons/account/tests/test_account_move_out_invoice.py
index 53a29cfda99..b18edefe04e 100644
--- a/addons/account/tests/test_account_move_out_invoice.py
+++ b/addons/account/tests/test_account_move_out_invoice.py
@@ -1578,7 +1578,7 @@ class TestAccountMoveOutInvoiceOnchanges(AccountTestInvoicingCommon):
})
def test_out_invoice_create_refund(self):
- self.invoice.post()
+ self.invoice.action_post()
move_reversal = self.env['account.move.reversal'].with_context(active_model="account.move", active_ids=self.invoice.ids).create({
'date': fields.Date.from_string('2019-02-01'),
@@ -1682,7 +1682,7 @@ class TestAccountMoveOutInvoiceOnchanges(AccountTestInvoicingCommon):
move_form.currency_id = self.currency_data['currency']
move_form.save()
- self.invoice.post()
+ self.invoice.action_post()
# The currency rate changed from 1/3 to 1/2.
move_reversal = self.env['account.move.reversal'].with_context(active_model="account.move", active_ids=self.invoice.ids).create({
@@ -1963,7 +1963,7 @@ class TestAccountMoveOutInvoiceOnchanges(AccountTestInvoicingCommon):
],
})
- move.post()
+ move.action_post()
self.assertInvoiceValues(move, [
{
@@ -2064,7 +2064,7 @@ class TestAccountMoveOutInvoiceOnchanges(AccountTestInvoicingCommon):
# - As the date changed, the currency rate has changed (1/3 => 1/2).
move.company_id.tax_lock_date = fields.Date.from_string('2016-12-31')
- move.post()
+ move.action_post()
self.assertInvoiceValues(move, [
{
@@ -2328,7 +2328,7 @@ class TestAccountMoveOutInvoiceOnchanges(AccountTestInvoicingCommon):
}),
]
})
- move.post()
+ move.action_post()
wizard = self.env['account.accrual.accounting.wizard']\
.with_context(active_model='account.move.line', active_ids=move.invoice_line_ids.ids).create({
diff --git a/addons/account/tests/test_account_move_partner_count.py b/addons/account/tests/test_account_move_partner_count.py
index 5da8e35a8ec..88eab61d167 100644
--- a/addons/account/tests/test_account_move_partner_count.py
+++ b/addons/account/tests/test_account_move_partner_count.py
@@ -23,7 +23,7 @@ class TestAccountMovePartnerCount(AccountTestInvoicingCommon):
'partner_id': self.partner_a.id,
'invoice_line_ids': [(0, 0, {'name': 'aaaa', 'price_unit': 100.0})],
},
- ]).post()
+ ]).action_post()
self.assertEqual(self.partner_a.supplier_rank, 1)
self.assertEqual(self.partner_a.customer_rank, 1)
diff --git a/addons/account/tests/test_account_move_payments_widget.py b/addons/account/tests/test_account_move_payments_widget.py
index 9f3ba3f4674..f4c0d9fffa3 100644
--- a/addons/account/tests/test_account_move_payments_widget.py
+++ b/addons/account/tests/test_account_move_payments_widget.py
@@ -33,7 +33,7 @@ class TestAccountMovePaymentsWidget(AccountTestInvoicingCommon):
(0, 0, {'debit': 500.0, 'credit': 0.0, 'amount_currency': 0.0, 'currency_id': False, 'account_id': cls.payable_account.id, 'partner_id': cls.partner_a.id}),
],
})
- cls.payment_2016_curr_1.post()
+ cls.payment_2016_curr_1.action_post()
cls.payment_2016_curr_2 = cls.env['account.move'].create({
'date': '2016-01-01',
@@ -42,7 +42,7 @@ class TestAccountMovePaymentsWidget(AccountTestInvoicingCommon):
(0, 0, {'debit': 500.0, 'credit': 0.0, 'amount_currency': 1550.0, 'currency_id': cls.curr_2.id, 'account_id': cls.payable_account.id, 'partner_id': cls.partner_a.id}),
],
})
- cls.payment_2016_curr_2.post()
+ cls.payment_2016_curr_2.action_post()
cls.payment_2017_curr_2 = cls.env['account.move'].create({
'date': '2017-01-01',
@@ -51,7 +51,7 @@ class TestAccountMovePaymentsWidget(AccountTestInvoicingCommon):
(0, 0, {'debit': 500.0, 'credit': 0.0, 'amount_currency': 950.0, 'currency_id': cls.curr_2.id, 'account_id': cls.payable_account.id, 'partner_id': cls.partner_a.id}),
],
})
- cls.payment_2017_curr_2.post()
+ cls.payment_2017_curr_2.action_post()
cls.payment_2016_curr_3 = cls.env['account.move'].create({
'date': '2016-01-01',
@@ -60,7 +60,7 @@ class TestAccountMovePaymentsWidget(AccountTestInvoicingCommon):
(0, 0, {'debit': 500.0, 'credit': 0.0, 'amount_currency': 3050.0, 'currency_id': cls.curr_3.id, 'account_id': cls.payable_account.id, 'partner_id': cls.partner_a.id}),
],
})
- cls.payment_2016_curr_3.post()
+ cls.payment_2016_curr_3.action_post()
cls.payment_2017_curr_3 = cls.env['account.move'].create({
'date': '2017-01-01',
@@ -69,7 +69,7 @@ class TestAccountMovePaymentsWidget(AccountTestInvoicingCommon):
(0, 0, {'debit': 500.0, 'credit': 0.0, 'amount_currency': 1950.0, 'currency_id': cls.curr_3.id, 'account_id': cls.payable_account.id, 'partner_id': cls.partner_a.id}),
],
})
- cls.payment_2017_curr_3.post()
+ cls.payment_2017_curr_3.action_post()
# -------------------------------------------------------------------------
# HELPERS
@@ -123,7 +123,7 @@ class TestAccountMovePaymentsWidget(AccountTestInvoicingCommon):
'currency_id': self.curr_1.id,
'invoice_line_ids': [(0, 0, {'name': '/', 'price_unit': 2500.0})],
})
- out_invoice.post()
+ out_invoice.action_post()
# Vendor bill of 2500.0 in curr_1.
in_invoice = self.env['account.move'].create({
@@ -134,7 +134,7 @@ class TestAccountMovePaymentsWidget(AccountTestInvoicingCommon):
'currency_id': self.curr_1.id,
'invoice_line_ids': [(0, 0, {'name': '/', 'price_unit': 2500.0})],
})
- in_invoice.post()
+ in_invoice.action_post()
expected_amounts = {
self.payment_2016_curr_1.id: 500.0,
@@ -159,7 +159,7 @@ class TestAccountMovePaymentsWidget(AccountTestInvoicingCommon):
'currency_id': self.curr_2.id,
'invoice_line_ids': [(0, 0, {'name': '/', 'price_unit': 7500.0})],
})
- out_invoice.post()
+ out_invoice.action_post()
# Vendor bill of 2500.0 in curr_1.
in_invoice = self.env['account.move'].create({
@@ -170,7 +170,7 @@ class TestAccountMovePaymentsWidget(AccountTestInvoicingCommon):
'currency_id': self.curr_2.id,
'invoice_line_ids': [(0, 0, {'name': '/', 'price_unit': 7500.0})],
})
- in_invoice.post()
+ in_invoice.action_post()
expected_amounts = {
self.payment_2016_curr_1.id: 1500.0,
diff --git a/addons/account/tests/test_account_move_reconcile.py b/addons/account/tests/test_account_move_reconcile.py
index 76b5b51cb17..cf4edd1f371 100644
--- a/addons/account/tests/test_account_move_reconcile.py
+++ b/addons/account/tests/test_account_move_reconcile.py
@@ -240,7 +240,7 @@ class TestAccountMoveReconcile(AccountTestInvoicingCommon):
(0, 0, {'debit': 0.0, 'credit': 500.0, 'account_id': account_id}),
]
})
- move.post()
+ move.action_post()
line_1 = move.line_ids.filtered(lambda line: line.debit == 1000.0)
line_2 = move.line_ids.filtered(lambda line: line.debit == 200.0)
@@ -344,7 +344,7 @@ class TestAccountMoveReconcile(AccountTestInvoicingCommon):
}
])
- moves.post()
+ moves.action_post()
line_1 = moves.line_ids.filtered(lambda line: line.debit == 1200.0)
line_2 = moves.line_ids.filtered(lambda line: line.debit == 120.0)
@@ -478,7 +478,7 @@ class TestAccountMoveReconcile(AccountTestInvoicingCommon):
}
])
- moves.post()
+ moves.action_post()
line_1 = moves.line_ids.filtered(lambda line: line.debit == 1200.0)
line_2 = moves.line_ids.filtered(lambda line: line.debit == 780.0)
@@ -751,7 +751,7 @@ class TestAccountMoveReconcile(AccountTestInvoicingCommon):
]
})
- (cash_basis_move + payment_move).post()
+ (cash_basis_move + payment_move).action_post()
# Initial amounts by accounts:
@@ -968,7 +968,7 @@ class TestAccountMoveReconcile(AccountTestInvoicingCommon):
]
})
- (cash_basis_move + payment_move).post()
+ (cash_basis_move + payment_move).action_post()
# Initial amounts by accounts:
@@ -1186,7 +1186,7 @@ class TestAccountMoveReconcile(AccountTestInvoicingCommon):
]
})
- (cash_basis_move + payment_move + end_move).post()
+ (cash_basis_move + payment_move + end_move).action_post()
self.assertAmountsGroupByAccount([
# Account Balance Amount Currency
@@ -1301,7 +1301,7 @@ class TestAccountMoveReconcile(AccountTestInvoicingCommon):
]
})
- (cash_basis_move + payment_move).post()
+ (cash_basis_move + payment_move).action_post()
self.assertAmountsGroupByAccount([
# Account Balance Amount Currency
@@ -1399,7 +1399,7 @@ class TestAccountMoveReconcile(AccountTestInvoicingCommon):
]
})
- (invoice_move + payment_move).post()
+ (invoice_move + payment_move).action_post()
receivable_lines = (invoice_move + payment_move).line_ids\
.filtered(lambda line: line.account_id == self.extra_receivable_account_1)
@@ -1507,7 +1507,7 @@ class TestAccountMoveReconcile(AccountTestInvoicingCommon):
]
})
- (invoice_move + refund_move).post()
+ (invoice_move + refund_move).action_post()
receivable_lines = (invoice_move + refund_move).line_ids\
.filtered(lambda line: line.account_id == self.extra_receivable_account_1)
@@ -1605,7 +1605,7 @@ class TestAccountMoveReconcile(AccountTestInvoicingCommon):
]
})
- (invoice_move + payment_move).post()
+ (invoice_move + payment_move).action_post()
receivable_lines = (invoice_move + payment_move).line_ids\
.filtered(lambda line: line.account_id == self.extra_receivable_account_1)
diff --git a/addons/account/tests/test_account_payment.py b/addons/account/tests/test_account_payment.py
index e991d57c4c1..147643e975d 100644
--- a/addons/account/tests/test_account_payment.py
+++ b/addons/account/tests/test_account_payment.py
@@ -476,7 +476,7 @@ class TestAccountPayment(AccountTestInvoicingCommon):
})
payment.action_post()
- invoice.post()
+ invoice.action_post()
(counterpart_lines + invoice.line_ids.filtered(lambda line: line.account_internal_type == 'receivable'))\
.reconcile()
diff --git a/addons/account/tests/test_account_payment_register.py b/addons/account/tests/test_account_payment_register.py
index ba6e6c6c63c..db51a0efde6 100644
--- a/addons/account/tests/test_account_payment_register.py
+++ b/addons/account/tests/test_account_payment_register.py
@@ -51,7 +51,7 @@ class TestAccountPaymentRegister(AccountTestInvoicingCommon):
'currency_id': cls.currency_data['currency'].id,
'invoice_line_ids': [(0, 0, {'product_id': cls.product_a.id, 'price_unit': 1000.0})],
})
- cls.out_invoice_1.post()
+ cls.out_invoice_1.action_post()
cls.out_invoice_2 = cls.env['account.move'].create({
'move_type': 'out_invoice',
'date': '2017-01-01',
@@ -60,7 +60,7 @@ class TestAccountPaymentRegister(AccountTestInvoicingCommon):
'currency_id': cls.currency_data['currency'].id,
'invoice_line_ids': [(0, 0, {'product_id': cls.product_a.id, 'price_unit': 2000.0})],
})
- (cls.out_invoice_1 + cls.out_invoice_2).post()
+ (cls.out_invoice_1 + cls.out_invoice_2).action_post()
# Vendor bills, in_invoice_1 + in_invoice_2 are sharing the same batch but not in_invoice_3.
cls.in_invoice_1 = cls.env['account.move'].create({
@@ -85,7 +85,7 @@ class TestAccountPaymentRegister(AccountTestInvoicingCommon):
'currency_id': cls.currency_data['currency'].id,
'invoice_line_ids': [(0, 0, {'product_id': cls.product_a.id, 'price_unit': 3000.0})],
})
- (cls.in_invoice_1 + cls.in_invoice_2 + cls.in_invoice_3).post()
+ (cls.in_invoice_1 + cls.in_invoice_2 + cls.in_invoice_3).action_post()
def test_register_payment_single_batch_grouped_keep_open_lower_amount(self):
''' Pay 800.0 with 'open' as payment difference handling on two customer invoices (1000 + 2000). '''
diff --git a/addons/account/tests/test_invoice_taxes.py b/addons/account/tests/test_invoice_taxes.py
index b61db994e7c..5bd600f1f1e 100644
--- a/addons/account/tests/test_invoice_taxes.py
+++ b/addons/account/tests/test_invoice_taxes.py
@@ -101,7 +101,7 @@ class TestInvoiceTaxes(AccountTestInvoicingCommon):
(121, self.percent_tax_1_incl),
(100, self.percent_tax_2),
])
- invoice.post()
+ invoice.action_post()
self.assertRecordValues(invoice.line_ids.filtered('tax_line_id'), [
{'name': self.percent_tax_1.name, 'tax_base_amount': 100, 'price_unit': 21, 'tax_ids': []},
{'name': self.percent_tax_1_incl.name, 'tax_base_amount': 100, 'price_unit': 21, 'tax_ids': []},
@@ -126,7 +126,7 @@ class TestInvoiceTaxes(AccountTestInvoicingCommon):
(121, self.percent_tax_1_incl + self.percent_tax_2),
(100, self.percent_tax_2),
])
- invoice.post()
+ invoice.action_post()
self.assertRecordValues(invoice.line_ids.filtered('tax_line_id').sorted(lambda x: x.price_unit), [
{'name': self.percent_tax_1_incl.name, 'tax_base_amount': 100, 'price_unit': 21, 'tax_ids': [self.percent_tax_2.id]},
{'name': self.percent_tax_2.name, 'tax_base_amount': 221, 'price_unit': 26.52, 'tax_ids': []},
@@ -150,7 +150,7 @@ class TestInvoiceTaxes(AccountTestInvoicingCommon):
(121, self.group_tax),
(100, self.percent_tax_2),
])
- invoice.post()
+ invoice.action_post()
self.assertRecordValues(invoice.line_ids.filtered('tax_line_id').sorted(lambda x: x.price_unit), [
{'name': self.percent_tax_1_incl.name, 'tax_base_amount': 100, 'price_unit': 21, 'tax_ids': [self.percent_tax_2.id]},
{'name': self.percent_tax_2.name, 'tax_base_amount': 221, 'price_unit': 26.52, 'tax_ids': []},
@@ -224,7 +224,7 @@ class TestInvoiceTaxes(AccountTestInvoicingCommon):
# Test invoice repartition
invoice = self._create_invoice([(100, tax)], inv_type='out_invoice')
- invoice.post()
+ invoice.action_post()
self.assertEqual(len(invoice.line_ids), 4, "There should be 4 account move lines created for the invoice: payable, base and 2 tax lines")
inv_base_line = invoice.line_ids.filtered(lambda x: not x.tax_repartition_line_id and x.account_id.user_type_id.type != 'receivable')
@@ -240,7 +240,7 @@ class TestInvoiceTaxes(AccountTestInvoicingCommon):
# Test refund repartition
refund = self._create_invoice([(100, tax)], inv_type='out_refund')
- refund.post()
+ refund.action_post()
self.assertEqual(len(refund.line_ids), 4, "There should be 4 account move lines created for the refund: payable, base and 2 tax lines")
ref_base_line = refund.line_ids.filtered(lambda x: not x.tax_repartition_line_id and x.account_id.user_type_id.type != 'receivable')
diff --git a/addons/account/tests/test_reconciliation.py b/addons/account/tests/test_reconciliation.py
index c7350c25701..b904e0b8cd9 100644
--- a/addons/account/tests/test_reconciliation.py
+++ b/addons/account/tests/test_reconciliation.py
@@ -26,7 +26,7 @@ class TestReconciliationExec(TestAccountReconciliationCommon):
(0, 0, {'quantity': 1, 'price_unit': 50.0, 'name': 'test'})
],
})
- move.post()
+ move.action_post()
# Create a bank statement of 40 EURO.
bank_stmt = self.env['account.bank.statement'].create({
@@ -94,7 +94,7 @@ class TestReconciliationExec(TestAccountReconciliationCommon):
})
]
})
- invoice.post()
+ invoice.action_post()
# We create a bank statement with two lines of 1.00 USD each.
statement = self.env['account.bank.statement'].create({
'journal_id': self.bank_journal_usd_id,
@@ -175,7 +175,7 @@ class TestReconciliationExec(TestAccountReconciliationCommon):
'line_ids': [(0,0, debit_line_vals), (0, 0, credit_line_vals)]
}
move = self.env['account.move'].create(vals)
- move.post()
+ move.action_post()
return move.id
move_list_vals = [
('1', -1.83, 0, self.currency_swiss_id),
@@ -241,7 +241,7 @@ class TestReconciliationExec(TestAccountReconciliationCommon):
'line_ids': [(0,0, debit_line_vals), (0, 0, credit_line_vals)]
}
move_ids += self.env['account.move'].create(vals)
- move_ids.post()
+ move_ids.action_post()
account_move_line = move_ids.mapped('line_ids').filtered(lambda l: l.account_id == self.account_rcv)
writeoff_vals = [{
@@ -312,7 +312,7 @@ class TestReconciliationExec(TestAccountReconciliationCommon):
(0, 0, {'product_id': self.product.id, 'quantity': 1, 'price_unit': 50.0})
],
})
- (invoice_a + invoice_b).post()
+ (invoice_a + invoice_b).action_post()
# Preparing Payments
# One partial for invoice_a (fully assigned to it)
@@ -609,7 +609,7 @@ class TestReconciliationExec(TestAccountReconciliationCommon):
(0, 0, {'quantity': 1, 'price_unit': 100.0, 'name': 'product that cost 100'})
],
})
- invoice_cust_1.post()
+ invoice_cust_1.action_post()
aml = invoice_cust_1.invoice_line_ids[0]
self.assertEqual(aml.credit, 50.0)
#####
@@ -742,7 +742,7 @@ class TestReconciliationExec(TestAccountReconciliationCommon):
'tax_repartition_line_id': self.tax_cash_basis.invoice_repartition_line_ids.filtered(lambda x: x.repartition_type == 'tax').id,
'tax_base_amount': 100,
})
- purchase_move.post()
+ purchase_move.action_post()
reverse_date = fields.Date.today() + timedelta(days=+7)
revertWidget = self.env['account.move.reversal'].create({
@@ -780,7 +780,7 @@ class TestReconciliationExec(TestAccountReconciliationCommon):
'credit': 11,
'move_id': general_move1.id,
})
- general_move1.post()
+ general_move1.action_post()
general_move2 = self.env['account.move'].create({
'name': 'general2',
'journal_id': self.general_journal.id,
@@ -797,7 +797,7 @@ class TestReconciliationExec(TestAccountReconciliationCommon):
'debit': 10,
'move_id': general_move2.id,
})
- general_move2.post()
+ general_move2.action_post()
general_move3 = self.env['account.move'].create({
'name': 'general3',
'journal_id': self.general_journal.id,
@@ -814,7 +814,7 @@ class TestReconciliationExec(TestAccountReconciliationCommon):
'debit': 1,
'move_id': general_move3.id,
})
- general_move3.post()
+ general_move3.action_post()
to_reconcile = ((general_move1 + general_move2 + general_move3)
.mapped('line_ids')
.filtered(lambda l: l.account_id.id == account_rcv.id))
@@ -866,7 +866,7 @@ class TestReconciliationExec(TestAccountReconciliationCommon):
]
})
- move_balance.post()
+ move_balance.action_post()
move_balance_receiv = move_balance.line_ids.filtered(lambda l: l.account_id.internal_type == 'receivable')
(inv1_receivable + inv2_receivable + pay_receivable + move_balance_receiv).reconcile()
@@ -934,7 +934,7 @@ class TestReconciliationExec(TestAccountReconciliationCommon):
]
})
- move_balance.post()
+ move_balance.action_post()
move_balance_receiv = move_balance.line_ids.filtered(lambda l: l.account_id.internal_type == 'receivable')
(inv1_receivable + inv2_receivable + pay_receivable + move_balance_receiv).reconcile()
@@ -1015,7 +1015,7 @@ class TestReconciliationExec(TestAccountReconciliationCommon):
]
})
- move_balance.post()
+ move_balance.action_post()
move_balance_receiv = move_balance.line_ids.filtered(lambda l: l.account_id.internal_type == 'receivable')
(inv1_receivable + inv2_receivable + pay_receivable + move_balance_receiv).reconcile()
@@ -1331,7 +1331,7 @@ class TestReconciliationExec(TestAccountReconciliationCommon):
(0, False, {'debit': 0.05, 'account_id': self.diff_expense_account.id, 'name': 'Balance WriteOff'}),
]
})
- move_balance.post()
+ move_balance.action_post()
move_balance_receiv = move_balance.line_ids.filtered(lambda l: l.account_id.internal_type == 'receivable')
(inv1_receivable + payment_receivable + move_balance_receiv).reconcile()
diff --git a/addons/account/tests/test_reconciliation_matching_rules.py b/addons/account/tests/test_reconciliation_matching_rules.py
index bb68dab220b..34bffa76fed 100644
--- a/addons/account/tests/test_reconciliation_matching_rules.py
+++ b/addons/account/tests/test_reconciliation_matching_rules.py
@@ -126,7 +126,7 @@ class TestReconciliationMatchingRules(AccountTestInvoicingCommon):
invoice_line_form.price_unit = amount
invoice_line_form.tax_ids.clear()
invoice = invoice_form.save()
- invoice.post()
+ invoice.action_post()
lines = invoice.line_ids
return lines.filtered(lambda l: l.account_id.user_type_id.type in ('receivable', 'payable'))
@@ -420,7 +420,7 @@ class TestReconciliationMatchingRules(AccountTestInvoicingCommon):
'credit': 10,
})
- move.post()
+ move.action_post()
move_reversed = move._reverse_moves()
self.assertTrue(move_reversed.exists())
@@ -619,7 +619,7 @@ class TestReconciliationMatchingRules(AccountTestInvoicingCommon):
}),
],
})
- move.post()
+ move.action_post()
move_line_1 = move.line_ids.filtered(lambda line: line.debit == 100.0)
move_line_2 = move.line_ids.filtered(lambda line: line.debit == 14.0)
diff --git a/addons/account/tests/test_tax_report.py b/addons/account/tests/test_tax_report.py
index eb81364760d..ff16eba5300 100644
--- a/addons/account/tests/test_tax_report.py
+++ b/addons/account/tests/test_tax_report.py
@@ -165,7 +165,7 @@ class TaxReportTest(AccountTestInvoicingCommon):
(0, 0, {'quantity': 1, 'price_unit': 42, 'tax_ids': [(6, 0, test_tax.ids)]}),
],
})
- test_invoice.post()
+ test_invoice.action_post()
self.assertTrue(any(line.tax_tag_ids == self.tax_report_line_1_55.tag_ids[0] for line in test_invoice.line_ids), "The test invoice should contain a tax line with tag 55")
tag_name_before = self.tax_report_line_1_55.tag_name
diff --git a/addons/account/tests/test_transfer_wizard.py b/addons/account/tests/test_transfer_wizard.py
index 760981438a4..76a393f790d 100644
--- a/addons/account/tests/test_transfer_wizard.py
+++ b/addons/account/tests/test_transfer_wizard.py
@@ -122,7 +122,7 @@ class TestTransferWizard(AccountTestInvoicingCommon):
}),
]
})
- cls.move_1.post()
+ cls.move_1.action_post()
cls.move_2 = cls.env['account.move'].create({
'journal_id': cls.journal.id,
@@ -186,7 +186,7 @@ class TestTransferWizard(AccountTestInvoicingCommon):
}),
]
})
- cls.move_2.post()
+ cls.move_2.action_post()
def test_transfer_wizard_reconcile(self):
diff --git a/addons/account/views/account_move_views.xml b/addons/account/views/account_move_views.xml
index 18aa8075699..09f700adb78 100644
--- a/addons/account/views/account_move_views.xml
+++ b/addons/account/views/account_move_views.xml
@@ -486,10 +486,10 @@
<!-- Post -->
<button name="action_post" string="Post" class="oe_highlight"
type="object" groups="account.group_account_invoice"
- attrs="{'invisible': ['|', ('state', '!=', 'draft'), ('move_type', '!=', 'entry')]}"/>
+ attrs="{'invisible': ['|', '|', ('state', '!=', 'draft'), ('auto_post', '=', True), ('move_type', '!=', 'entry')]}"/>
<button name="action_post" string="Validate" class="oe_highlight"
type="object" groups="account.group_account_invoice"
- attrs="{'invisible': ['|', ('state', '!=', 'draft'), ('move_type', '=', 'entry')]}"/>
+ attrs="{'invisible': ['|', '|', ('state', '!=', 'draft'), ('auto_post', '=', True), ('move_type', '=', 'entry')]}"/>
<!-- Send (only invoices) -->
<button name="action_invoice_sent"
type="object"
@@ -542,6 +542,10 @@
attrs="{'invisible': ['|', '|', ('move_type', 'not in', ('in_invoice', 'in_refund')), ('invoice_has_outstanding', '=', False), ('payment_state', 'not in', ('not_paid', 'partial'))]}">
You have <bold><a class="alert-link" href="#outstanding" role="button">outstanding debits</a></bold> for this supplier. You can allocate them to mark this bill as paid.
</div>
+ <div class="alert alert-info" role="alert" style="margin-bottom:0px;"
+ attrs="{'invisible': ['|', ('state', '!=', 'draft'), ('auto_post', '=', False)]}">
+ This move is configured to be posted automatically at the accounting date: <field name="date" readonly="1"/>.
+ </div>
<sheet>
<div name="button_box" class="oe_button_box">
<button name="open_reconcile_view"
@@ -1023,7 +1027,7 @@
widget="email"
attrs="{'invisible': ['|', ('move_type', 'not in', ('in_invoice', 'in_refund')), ('invoice_source_email', '=', False)]}"/>
<field name="auto_post"
- attrs="{'invisible': [('move_type', '!=', 'in_invoice')], 'readonly': ['|',('reversed_entry_id', '!=', False),('state','!=','draft')]}"/>
+ attrs="{'readonly': ['|',('reversed_entry_id', '!=', False),('state','!=','draft')]}"/>
<field name="to_check"/>
</group>
</group>
diff --git a/addons/account/wizard/account_validate_account_move.py b/addons/account/wizard/account_validate_account_move.py
index a7e5bef2e24..2c676d520eb 100644
--- a/addons/account/wizard/account_validate_account_move.py
+++ b/addons/account/wizard/account_validate_account_move.py
@@ -1,4 +1,4 @@
-from odoo import models, api, _
+from odoo import models, fields, _
from odoo.exceptions import UserError
@@ -6,11 +6,13 @@ class ValidateAccountMove(models.TransientModel):
_name = "validate.account.move"
_description = "Validate Account Move"
+ force_post = fields.Boolean(string="Force", help="Entries in the future are set to be auto-posted by default. Check this checkbox to post them now.")
+
def validate_move(self):
context = dict(self._context or {})
moves = self.env['account.move'].browse(context.get('active_ids'))
move_to_post = moves.filtered(lambda m: m.state == 'draft')
if not move_to_post:
raise UserError(_('There are no journal items in the draft state to post.'))
- move_to_post.post()
+ move_to_post._post(not self.force_post)
return {'type': 'ir.actions.act_window_close'}
diff --git a/addons/account/wizard/account_validate_move_view.xml b/addons/account/wizard/account_validate_move_view.xml
index c6439570c6b..e4494cfc272 100644
--- a/addons/account/wizard/account_validate_move_view.xml
+++ b/addons/account/wizard/account_validate_move_view.xml
@@ -8,6 +8,9 @@
<field name="model">validate.account.move</field>
<field name="arch" type="xml">
<form string="Post Journal Entries">
+ <group>
+ <field name="force_post"/>
+ </group>
<span class="o_form_label">All selected journal entries will be validated and posted. You won't be able to modify them afterwards.</span>
<footer>
<button string="Post Journal Entries" name="validate_move" type="object" default_focus="1" class="btn-primary"/>
diff --git a/addons/account/wizard/wizard_tax_adjustments.py b/addons/account/wizard/wizard_tax_adjustments.py
index 18936c49ceb..c771d838044 100644
--- a/addons/account/wizard/wizard_tax_adjustments.py
+++ b/addons/account/wizard/wizard_tax_adjustments.py
@@ -56,7 +56,7 @@ class TaxAdjustments(models.TransientModel):
'line_ids': move_line_vals,
}
move = self.env['account.move'].create(vals)
- move.post()
+ move._post()
# Return an action opening the created move
action = self.env.ref(self.env.context.get('action', 'account.action_move_line_form'))
diff --git a/addons/account_check_printing/models/account_payment.py b/addons/account_check_printing/models/account_payment.py
index 4a1fe600315..673ed281950 100644
--- a/addons/account_check_printing/models/account_payment.py
+++ b/addons/account_check_printing/models/account_payment.py
@@ -88,7 +88,7 @@ class AccountPayment(models.Model):
}
}
else:
- self.filtered(lambda r: r.state == 'draft').post()
+ self.filtered(lambda r: r.state == 'draft').action_post()
return self.do_print_checks()
def action_unmark_sent(self):
diff --git a/addons/account_check_printing/tests/test_print_check.py b/addons/account_check_printing/tests/test_print_check.py
index 30d88d054b2..82222daea88 100644
--- a/addons/account_check_printing/tests/test_print_check.py
+++ b/addons/account_check_printing/tests/test_print_check.py
@@ -39,7 +39,7 @@ class TestPrintCheck(AccountTestInvoicingCommon):
'invoice_date': '2017-01-01',
'invoice_line_ids': [(0, 0, {'product_id': self.product_a.id, 'price_unit': 100.0})]
} for i in range(nb_invoices_to_test)])
- out_invoices.post()
+ out_invoices.action_post()
# Create a single payment.
payment = self.env['account.payment.register'].with_context(active_model='account.move', active_ids=out_invoices.ids).create({
@@ -80,7 +80,7 @@ class TestPrintCheck(AccountTestInvoicingCommon):
'invoice_date': '2017-01-01',
'invoice_line_ids': [(0, 0, {'product_id': self.product_a.id, 'price_unit': 100.0})]
} for i in range(nb_invoices_to_test)])
- out_refunds.post()
+ out_refunds.action_post()
# Create a single payment.
payment = self.env['account.payment.register'].with_context(active_model='account.move', active_ids=out_refunds.ids).create({
diff --git a/addons/account_debit_note/tests/test_out_debit_note.py b/addons/account_debit_note/tests/test_out_debit_note.py
index f712c5dfe0d..dd024fa23b0 100644
--- a/addons/account_debit_note/tests/test_out_debit_note.py
+++ b/addons/account_debit_note/tests/test_out_debit_note.py
@@ -10,7 +10,7 @@ class TestAccountDebitNote(AccountTestInvoicingCommon):
def test_00_debit_note_out_invoice(self):
""" Debit Note of a regular Customer Invoice"""
invoice = self.init_invoice('out_invoice')
- invoice.post()
+ invoice.action_post()
move_debit_note_wiz = self.env['account.debit.note'].with_context(active_model="account.move",
active_ids=invoice.ids).create({
'date': fields.Date.from_string('2019-02-01'),
@@ -29,7 +29,7 @@ class TestAccountDebitNote(AccountTestInvoicingCommon):
def test_10_debit_note_in_refund(self):
""" Debit Note of a vendor refund (is a regular vendor bill) """
invoice = self.init_invoice('in_refund')
- invoice.post()
+ invoice.action_post()
move_debit_note_wiz = self.env['account.debit.note'].with_context(active_model="account.move",
active_ids=invoice.ids).create({
'date': fields.Date.from_string('2019-02-01'),
diff --git a/addons/account_edi/models/account_move.py b/addons/account_edi/models/account_move.py
index b44a375673b..76bc9309611 100644
--- a/addons/account_edi/models/account_move.py
+++ b/addons/account_edi/models/account_move.py
@@ -9,7 +9,7 @@ class AccountMove(models.Model):
edi_document_ids = fields.One2many('ir.attachment', 'res_id', domain=[('res_model', '=', 'account.move'), ('edi_format_id', '!=', False)])
- def post(self):
+ def _post(self, soft=True):
# OVERRIDE
# Generate the electronic documents for the move.
existing_attachments = self.env['ir.attachment'].search([
@@ -17,11 +17,11 @@ class AccountMove(models.Model):
('res_id', 'in', self.ids),
('edi_format_id', 'in', self.journal_id.edi_format_ids.ids)])
existing_attachments.unlink()
- res = super(AccountMove, self).post()
- for move in self:
+ posted = super()._post(soft)
+ for move in posted:
move.journal_id.edi_format_ids._create_ir_attachments(move)
- return res
+ return posted
@api.returns('mail.message', lambda value: value.id)
def message_post(self, **kwargs):
diff --git a/addons/account_edi_facturx/tests/test_facturx.py b/addons/account_edi_facturx/tests/test_facturx.py
index faf1e89c38e..bf7f03b1c74 100644
--- a/addons/account_edi_facturx/tests/test_facturx.py
+++ b/addons/account_edi_facturx/tests/test_facturx.py
@@ -157,7 +157,7 @@ class TestAccountEdiFacturx(AccountTestEdiCommon):
def test_facturx(self):
''' Test the generated Facturx Edi attachment without any modification of the invoice. '''
- self.invoice.post()
+ self.invoice.action_post()
xml_content = self.facturx_edi_format._export_invoice_to_attachment(self.invoice)['datas']
current_etree = self.get_xml_tree_from_string(xml_content)
@@ -171,7 +171,7 @@ class TestAccountEdiFacturx(AccountTestEdiCommon):
'invoice_line_ids': [(1, self.invoice.invoice_line_ids.id, {'tax_ids': [(6, 0, self.tax_group.ids)]})],
})
- self.invoice.post()
+ self.invoice.action_post()
xml_content = self.facturx_edi_format._export_invoice_to_attachment(self.invoice)['datas']
current_etree = self.get_xml_tree_from_string(xml_content)
diff --git a/addons/delivery/tests/test_delivery_stock_move.py b/addons/delivery/tests/test_delivery_stock_move.py
index d39f98b1cb7..dff96b036a1 100644
--- a/addons/delivery/tests/test_delivery_stock_move.py
+++ b/addons/delivery/tests/test_delivery_stock_move.py
@@ -76,11 +76,11 @@ class StockMoveInvoice(AccountTestInvoicingCommon):
# I confirm the invoice
self.invoice = self.sale_prepaid.invoice_ids
- self.invoice.post()
+ self.invoice.action_post()
# I pay the invoice.
self.invoice = self.sale_prepaid.invoice_ids
- self.invoice.post()
+ self.invoice.action_post()
self.journal = self.AccountJournal.search([('type', '=', 'cash'), ('company_id', '=', self.sale_prepaid.company_id.id)], limit=1)
register_payments = self.env['account.payment.register'].with_context(active_model='account.move', active_ids=self.invoice.ids).create({
diff --git a/addons/hr_expense/models/hr_expense.py b/addons/hr_expense/models/hr_expense.py
index 1e2b3835a7d..62f1337f0d9 100644
--- a/addons/hr_expense/models/hr_expense.py
+++ b/addons/hr_expense/models/hr_expense.py
@@ -208,7 +208,7 @@ class HrExpense(models.Model):
if any(attachment.res_id or attachment.res_model != 'hr.expense' for attachment in attachments):
raise UserError(_("Invalid attachments!"))
-
+
product = self.env['product.product'].search([('can_be_expensed', '=', True)])
if product:
product = product.filtered(lambda p: p.default_code == "EXP_GEN") or product[0]
@@ -532,7 +532,7 @@ class HrExpense(models.Model):
# post the moves
for move in move_group_by_sheet.values():
- move.post()
+ move._post()
return move_group_by_sheet
diff --git a/addons/l10n_ar/models/account_move.py b/addons/l10n_ar/models/account_move.py
index b444383fbde..19894f44911 100644
--- a/addons/l10n_ar/models/account_move.py
+++ b/addons/l10n_ar/models/account_move.py
@@ -145,7 +145,7 @@ class AccountMove(models.Model):
action = self.env.ref('account.action_account_journal_form')
raise RedirectWarning(msg, action.id, _('Go to Journals'))
- def post(self):
+ def _post(self, soft=True):
ar_invoices = self.filtered(lambda x: x.company_id.country_id == self.env.ref('base.ar') and x.l10n_latam_use_documents)
for rec in ar_invoices:
rec.l10n_ar_afip_responsibility_type_id = rec.commercial_partner_id.l10n_ar_afip_responsibility_type_id.id
@@ -159,9 +159,9 @@ class AccountMove(models.Model):
# We make validations here and not with a constraint because we want validation before sending electronic
# data on l10n_ar_edi
ar_invoices._check_argentinian_invoice_taxes()
- res = super().post()
- self._set_afip_service_dates()
- return res
+ posted = super()._post(soft)
+ posted._set_afip_service_dates()
+ return posted
def _reverse_moves(self, default_values_list=None, cancel=False):
if not default_values_list:
diff --git a/addons/l10n_ch/tests/test_l10n_ch_isr_print.py b/addons/l10n_ch/tests/test_l10n_ch_isr_print.py
index bd568636706..9bdba9b7d0a 100644
--- a/addons/l10n_ch/tests/test_l10n_ch_isr_print.py
+++ b/addons/l10n_ch/tests/test_l10n_ch_isr_print.py
@@ -52,7 +52,7 @@ class ISRTest(AccountTestInvoicingCommon):
'invoice_date': '2019-01-01',
'invoice_line_ids': [(0, 0, {'product_id': self.product_a.id})],
})
- invoice_chf.post()
+ invoice_chf.action_post()
self.assertTrue(self.print_isr(invoice_chf))
invoice_eur = self.env['account.move'].create({
@@ -63,5 +63,5 @@ class ISRTest(AccountTestInvoicingCommon):
'invoice_date': '2019-01-01',
'invoice_line_ids': [(0, 0, {'product_id': self.product_a.id})],
})
- invoice_eur.post()
+ invoice_eur.action_post()
self.assertFalse(self.print_isr(invoice_eur))
diff --git a/addons/l10n_ch/tests/test_swissqr.py b/addons/l10n_ch/tests/test_swissqr.py
index 8976f990097..42e7830e301 100644
--- a/addons/l10n_ch/tests/test_swissqr.py
+++ b/addons/l10n_ch/tests/test_swissqr.py
@@ -156,7 +156,7 @@ class TestSwissQR(AccountTestInvoicingCommon):
def test_swissQR_missing_bank(self):
# Let us test the generation of a SwissQR for an invoice, first by showing an
# QR is included in the invoice is only generated when Odoo has all the data it needs.
- self.invoice1.post()
+ self.invoice1.action_post()
self.swissqr_not_generated(self.invoice1)
def test_swissQR_iban(self):
@@ -164,7 +164,7 @@ class TestSwissQR(AccountTestInvoicingCommon):
# Here we don't use a structured reference
iban_account = self.create_account(CH_IBAN)
self.invoice1.partner_bank_id = iban_account
- self.invoice1.post()
+ self.invoice1.action_post()
self.swissqr_generated(self.invoice1, ref_type="NON")
def test_swissQR_qriban(self):
@@ -172,5 +172,5 @@ class TestSwissQR(AccountTestInvoicingCommon):
qriban_account = self.create_account(QR_IBAN)
self.assertTrue(qriban_account.acc_type, 'qr-iban')
self.invoice1.partner_bank_id = qriban_account
- self.invoice1.post()
+ self.invoice1.action_post()
self.swissqr_generated(self.invoice1, ref_type="QRR")
diff --git a/addons/l10n_cl/models/account_move.py b/addons/l10n_cl/models/account_move.py
index 152d48e272e..605a2cf0a34 100644
--- a/addons/l10n_cl/models/account_move.py
+++ b/addons/l10n_cl/models/account_move.py
@@ -89,9 +89,9 @@ class AccountMove(models.Model):
def _onchange_journal(self):
self.l10n_latam_document_type_id = False
- def post(self):
+ def _post(self, soft=True):
self._check_document_types_post()
- super().post()
+ super()._post(soft)
def _l10n_cl_get_formatted_sequence(self, number=0):
return "%s %06d" % (self.l10n_latam_document_type_id.doc_code_prefix, number)
@@ -113,4 +113,4 @@ class AccountMove(models.Model):
param['journal_ids'] = journals
where_string += " AND l10n_latam_document_type_id = %(l10n_latam_document_type_id)s "
param['l10n_latam_document_type_id'] = self.l10n_latam_document_type_id.id or 0
- return where_string, param \ No newline at end of file
+ return where_string, param
diff --git a/addons/l10n_de/models/datev.py b/addons/l10n_de/models/datev.py
index be1382f3f74..edcfd693057 100644
--- a/addons/l10n_de/models/datev.py
+++ b/addons/l10n_de/models/datev.py
@@ -21,7 +21,7 @@ class AccountTax(models.Model):
class AccountMove(models.Model):
_inherit = 'account.move'
- def post(self):
+ def _post(self, soft=True):
# OVERRIDE to check the invoice lines taxes.
for invoice in self.filtered(lambda move: move.is_invoice()):
for line in invoice.invoice_line_ids:
@@ -32,4 +32,4 @@ class AccountMove(models.Model):
if tax.id not in account_tax:
raise UserError(_('Account %s does not authorize to have tax %s specified on the line. \
Change the tax used in this invoice or remove all taxes from the account') % (account_name, tax.name))
- return super(AccountMove, self).post()
+ return super()._post(soft)
diff --git a/addons/l10n_fi/tests/test_get_reference.py b/addons/l10n_fi/tests/test_get_reference.py
index 3268e1d49b0..7476898097d 100644
--- a/addons/l10n_fi/tests/test_get_reference.py
+++ b/addons/l10n_fi/tests/test_get_reference.py
@@ -15,25 +15,25 @@ class InvoiceGetReferenceTest(AccountTestInvoicingCommon):
def test_get_reference_finnish_invoice(self):
self.assertFalse(self.invoice.payment_reference)
self.invoice.journal_id.invoice_reference_model = 'fi'
- self.invoice.post()
+ self.invoice.action_post()
self.assertTrue(self.invoice.payment_reference)
def test_get_reference_finnish_partner(self):
self.assertFalse(self.invoice.payment_reference)
self.invoice.journal_id.invoice_reference_type = 'partner'
self.invoice.journal_id.invoice_reference_model = 'fi'
- self.invoice.post()
+ self.invoice.action_post()
self.assertTrue(self.invoice.payment_reference)
def test_get_reference_finnish_rf_invoice(self):
self.assertFalse(self.invoice.payment_reference)
self.invoice.journal_id.invoice_reference_model = 'fi_rf'
- self.invoice.post()
+ self.invoice.action_post()
self.assertTrue(self.invoice.payment_reference)
def test_get_reference_finnish_rf_partner(self):
self.assertFalse(self.invoice.payment_reference)
self.invoice.journal_id.invoice_reference_type = 'partner'
self.invoice.journal_id.invoice_reference_model = 'fi_rf'
- self.invoice.post()
+ self.invoice.action_post()
self.assertTrue(self.invoice.payment_reference)
diff --git a/addons/l10n_generic_coa/demo/account_invoice_demo.xml b/addons/l10n_generic_coa/demo/account_invoice_demo.xml
index 61c1b2f610f..6cccfa14ddb 100644
--- a/addons/l10n_generic_coa/demo/account_invoice_demo.xml
+++ b/addons/l10n_generic_coa/demo/account_invoice_demo.xml
@@ -118,7 +118,7 @@
<value name="recompute_tax_base_amount" eval="True"/>
</function>
- <function model="account.move" name="post">
+ <function model="account.move" name="action_post">
<value eval="[
ref('demo_invoice_1'), ref('demo_invoice_2'), ref('demo_invoice_3'),
ref('demo_invoice_followup'), ref('demo_invoice_equipment_purchase'),
diff --git a/addons/l10n_id_efaktur/models/account_move.py b/addons/l10n_id_efaktur/models/account_move.py
index ebc07776252..9a9cc944a98 100644
--- a/addons/l10n_id_efaktur/models/account_move.py
+++ b/addons/l10n_id_efaktur/models/account_move.py
@@ -80,7 +80,7 @@ class AccountMove(models.Model):
elif record.l10n_id_tax_number[2] not in ('0', '1'):
raise UserError(_('The third digit of a tax number must be 0 or 1'))
- def post(self):
+ def _post(self, soft=True):
"""Set E-Faktur number after validation."""
for move in self:
if move.l10n_id_need_kode_transaksi:
@@ -96,7 +96,7 @@ class AccountMove(models.Model):
if not efaktur:
raise ValidationError(_('There is no Efaktur number available. Please configure the range you get from the government in the e-Faktur menu. '))
move.l10n_id_tax_number = '%s0%013d' % (str(move.l10n_id_kode_transaksi), efaktur)
- return super(AccountMove, self).post()
+ return super()._post(soft)
def reset_efaktur(self):
"""Reset E-Faktur, so it can be use for other invoice."""
diff --git a/addons/l10n_in/models/account_invoice.py b/addons/l10n_in/models/account_invoice.py
index 316f461c488..691e661bbbd 100644
--- a/addons/l10n_in/models/account_invoice.py
+++ b/addons/l10n_in/models/account_invoice.py
@@ -87,12 +87,12 @@ class AccountMove(models.Model):
"""Overwrite in sale"""
return shipping_partner.vat
- def post(self):
+ def _post(self, soft=True):
"""Use journal type to define document type because not miss state in any entry including POS entry"""
- res = super().post()
+ posted = super()._post(soft)
gst_treatment_name_mapping = {k: v for k, v in
self._fields['l10n_in_gst_treatment']._description_selection(self.env)}
- for move in self.filtered(lambda m: m.l10n_in_company_country_code == 'IN'):
+ for move in posted.filtered(lambda m: m.l10n_in_company_country_code == 'IN'):
"""Check state is set in company/sub-unit"""
company_unit_partner = move.journal_id.l10n_in_gstin_partner_id or move.journal_id.company_id
if not company_unit_partner.state_id:
@@ -120,4 +120,4 @@ class AccountMove(models.Model):
#still state is not set then assumed that transaction is local like PoS so set state of company unit
if not move.l10n_in_state_id:
move.l10n_in_state_id = company_unit_partner.state_id
- return res
+ return posted
diff --git a/addons/l10n_it_edi/models/account_invoice.py b/addons/l10n_it_edi/models/account_invoice.py
index fc5ca66fa83..6ad986994a9 100644
--- a/addons/l10n_it_edi/models/account_invoice.py
+++ b/addons/l10n_it_edi/models/account_invoice.py
@@ -55,12 +55,12 @@ class AccountMove(models.Model):
invoice.l10n_it_einvoice_id = einvoice
invoice.l10n_it_einvoice_name = einvoice.name
- def post(self):
+ def _post(self, soft=True):
# OVERRIDE
- super(AccountMove, self).post()
+ posted = super()._post(soft)
# Retrieve invoices to generate the xml.
- invoices_to_export = self.filtered(lambda move:
+ invoices_to_export = posted.filtered(lambda move:
move.company_id.country_id == self.env.ref('base.it') and
move.is_sale_document() and
move.l10n_it_send_state not in ['sent', 'delivered', 'delivered_accepted'])
@@ -84,6 +84,7 @@ class AccountMove(models.Model):
for invoice in invoices_to_send:
invoice.send_pec_mail()
+ return posted
def _check_before_xml_exporting(self):
seller = self.company_id
diff --git a/addons/l10n_latam_invoice_document/models/account_move.py b/addons/l10n_latam_invoice_document/models/account_move.py
index c2b701788ea..e47ef5608bc 100644
--- a/addons/l10n_latam_invoice_document/models/account_move.py
+++ b/addons/l10n_latam_invoice_document/models/account_move.py
@@ -118,11 +118,11 @@ class AccountMove(models.Model):
remaining.l10n_latam_amount_untaxed = False
remaining.l10n_latam_tax_ids = [(5, 0)]
- def post(self):
+ def _post(self, soft=True):
for rec in self.filtered(lambda x: x.l10n_latam_use_documents and (not x.name or x.name == '/')):
if rec.move_type in ('in_receipt', 'out_receipt'):
raise UserError(_('We do not accept the usage of document types on receipts yet. '))
- return super().post()
+ return super()._post(soft)
@api.constrains('name', 'journal_id', 'state')
def _check_unique_sequence_number(self):
@@ -236,4 +236,3 @@ class AccountMove(models.Model):
]
if rec.search(domain):
raise ValidationError(_('Vendor bill number must be unique per vendor and company.'))
-
diff --git a/addons/membership/tests/test_membership.py b/addons/membership/tests/test_membership.py
index ae6c05aa094..d8427923299 100644
--- a/addons/membership/tests/test_membership.py
+++ b/addons/membership/tests/test_membership.py
@@ -46,7 +46,7 @@ class TestMembership(TestMembershipCommon):
'membership: new membership should be in waiting state')
# the invoice is open -> customer goes to invoiced status
- invoice.post()
+ invoice.action_post()
self.assertEqual(
self.partner_1.membership_state, 'invoiced',
'membership: after opening the invoice, customer should be in invoiced status')
diff --git a/addons/payment/models/payment_acquirer.py b/addons/payment/models/payment_acquirer.py
index c4b20bac604..c470186e4a8 100644
--- a/addons/payment/models/payment_acquirer.py
+++ b/addons/payment/models/payment_acquirer.py
@@ -674,7 +674,7 @@ class PaymentTransaction(models.Model):
self.payment_id = payment
if self.invoice_ids:
- self.invoice_ids.filtered(lambda move: move.state == 'draft').post()
+ self.invoice_ids.filtered(lambda move: move.state == 'draft')._post()
(payment.line_ids + self.invoice_ids.line_ids)\
.filtered(lambda line: line.account_id == payment.destination_account_id and not line.reconciled)\
@@ -814,7 +814,7 @@ class PaymentTransaction(models.Model):
def _reconcile_after_transaction_done(self):
# Validate invoices automatically upon the transaction is posted.
invoices = self.mapped('invoice_ids').filtered(lambda inv: inv.state == 'draft')
- invoices.post()
+ invoices._post()
# Create & Post the payments.
for trans in self:
diff --git a/addons/point_of_sale/models/pos_order.py b/addons/point_of_sale/models/pos_order.py
index b87657212c8..cab1db89058 100644
--- a/addons/point_of_sale/models/pos_order.py
+++ b/addons/point_of_sale/models/pos_order.py
@@ -414,7 +414,7 @@ class PosOrder(models.Model):
message = _("This invoice has been created from the point of sale session: <a href=# data-oe-model=pos.order data-oe-id=%d>%s</a>") % (order.id, order.name)
new_move.message_post(body=message)
order.write({'account_move': new_move.id, 'state': 'invoiced'})
- new_move.sudo().with_company(order.company_id).post()
+ new_move.sudo().with_company(order.company_id)._post()
moves += new_move
if not moves:
diff --git a/addons/point_of_sale/models/pos_session.py b/addons/point_of_sale/models/pos_session.py
index df6a35e677c..3e60d421c3f 100644
--- a/addons/point_of_sale/models/pos_session.py
+++ b/addons/point_of_sale/models/pos_session.py
@@ -369,7 +369,7 @@ class PosSession(models.Model):
data = self._create_stock_output_lines(data)
if account_move.line_ids:
- account_move.post()
+ account_move._post()
data = self._reconcile_account_move_lines(data)
diff --git a/addons/point_of_sale/tests/test_point_of_sale_flow.py b/addons/point_of_sale/tests/test_point_of_sale_flow.py
index 78e0b381ab8..c2b1696b39e 100644
--- a/addons/point_of_sale/tests/test_point_of_sale_flow.py
+++ b/addons/point_of_sale/tests/test_point_of_sale_flow.py
@@ -471,7 +471,7 @@ class TestPointOfSaleFlow(TestPointOfSaleCommon):
# I test that the total of the attached invoice is correct
invoice = self.env['account.move'].browse(res['res_id'])
- invoice.post()
+ invoice.action_post()
self.assertAlmostEqual(
invoice.amount_total, self.pos_order_pos1.amount_total, places=2, msg="Invoice not correct")
@@ -869,7 +869,7 @@ class TestPointOfSaleFlow(TestPointOfSaleCommon):
# I test that the total of the attached invoice is correct
invoice = self.env['account.move'].browse(res['res_id'])
- invoice.post()
+ invoice.action_post()
self.assertAlmostEqual(
invoice.amount_total, self.pos_order_pos1.amount_total, places=2, msg="Invoice not correct")
diff --git a/addons/product_email_template/models/account_move.py b/addons/product_email_template/models/account_move.py
index 7fd6ad2f7db..4f65d13da07 100644
--- a/addons/product_email_template/models/account_move.py
+++ b/addons/product_email_template/models/account_move.py
@@ -21,8 +21,8 @@ class AccountMove(models.Model):
)
return True
- def post(self):
+ def _post(self, soft=True):
# OVERRIDE
- res = super(AccountMove, self).post()
- self.invoice_validate_send_email()
- return res
+ posted = super()._post(soft)
+ posted.invoice_validate_send_email()
+ return posted
diff --git a/addons/product_margin/tests/test_product_margin.py b/addons/product_margin/tests/test_product_margin.py
index b80261d6453..17f6f376988 100644
--- a/addons/product_margin/tests/test_product_margin.py
+++ b/addons/product_margin/tests/test_product_margin.py
@@ -40,7 +40,7 @@ class TestProductMargin(AccountTestInvoicingCommon):
'invoice_line_ids': [(0, 0, {'product_id': ipad.id, 'quantity': 10.0, 'price_unit': 550.0})],
},
])
- invoices.post()
+ invoices.action_post()
result = ipad._compute_product_margin_fields_values()
diff --git a/addons/purchase/tests/test_access_rights.py b/addons/purchase/tests/test_access_rights.py
index eb3e521e3ea..ee79ec0f5e3 100644
--- a/addons/purchase/tests/test_access_rights.py
+++ b/addons/purchase/tests/test_access_rights.py
@@ -66,7 +66,7 @@ class TestPurchaseInvoice(AccountTestInvoicingCommon):
purchase_order.action_create_invoice()
invoice = purchase_order.invoice_ids
with self.assertRaises(AccessError):
- invoice.post()
+ invoice.action_post()
def test_read_purchase_order(self):
""" Check that a purchase user can read all purchase order and 'in' invoices"""
diff --git a/addons/purchase/tests/test_purchase_order_report.py b/addons/purchase/tests/test_purchase_order_report.py
index 0b4761893f0..e3df301e813 100644
--- a/addons/purchase/tests/test_purchase_order_report.py
+++ b/addons/purchase/tests/test_purchase_order_report.py
@@ -42,7 +42,7 @@ class TestPurchaseOrderReport(AccountTestInvoicingCommon):
f.partner_id = po.partner_id
f.purchase_id = po
invoice = f.save()
- invoice.post()
+ invoice.action_post()
po.flush()
res_product1 = self.env['purchase.report'].search([
diff --git a/addons/purchase_stock/models/account_invoice.py b/addons/purchase_stock/models/account_invoice.py
index 0caa870b315..4dce189cfff 100644
--- a/addons/purchase_stock/models/account_invoice.py
+++ b/addons/purchase_stock/models/account_invoice.py
@@ -159,13 +159,13 @@ class AccountMove(models.Model):
lines_vals_list.append(vals)
return lines_vals_list
- def post(self):
+ def _post(self, soft=True):
# OVERRIDE
# Create additional price difference lines for vendor bills.
if self._context.get('move_reverse_cancel'):
- return super(AccountMove, self).post()
+ return super()._post(soft)
self.env['account.move.line'].create(self._stock_account_prepare_anglo_saxon_in_lines_vals())
- return super(AccountMove, self).post()
+ return super()._post(soft)
def _stock_account_get_last_step_stock_moves(self):
""" Overridden from stock_account.
diff --git a/addons/purchase_stock/tests/test_anglo_saxon_valuation_reconciliation.py b/addons/purchase_stock/tests/test_anglo_saxon_valuation_reconciliation.py
index 58434bd0a54..6cb9aca889f 100644
--- a/addons/purchase_stock/tests/test_anglo_saxon_valuation_reconciliation.py
+++ b/addons/purchase_stock/tests/test_anglo_saxon_valuation_reconciliation.py
@@ -10,7 +10,7 @@ class TestValuationReconciliation(ValuationReconciliationTestCommon):
@classmethod
def setUpClass(cls, chart_template_ref=None):
super().setUpClass(chart_template_ref=chart_template_ref)
-
+
cls.stock_account_product_categ.property_account_creditor_price_difference_categ = cls.company_data['default_account_stock_price_diff']
@classmethod
@@ -65,7 +65,7 @@ class TestValuationReconciliation(ValuationReconciliationTestCommon):
self._process_pickings(purchase_order.picking_ids, date=date_po_and_delivery)
invoice = self._create_invoice_for_po(purchase_order, '2018-02-02')
- invoice.post()
+ invoice.action_post()
picking = self.env['stock.picking'].search([('purchase_id','=',purchase_order.id)])
self.check_reconciliation(invoice, picking)
# cancel the invoice
@@ -85,7 +85,7 @@ class TestValuationReconciliation(ValuationReconciliationTestCommon):
invoice = move_form.save()
# Validate the invoice and refund the goods
- invoice.post()
+ invoice.action_post()
self._process_pickings(purchase_order.picking_ids, date='2017-12-24')
picking = self.env['stock.picking'].search([('purchase_id', '=', purchase_order.id)])
self.check_reconciliation(invoice, picking)
@@ -130,7 +130,7 @@ class TestValuationReconciliation(ValuationReconciliationTestCommon):
with move_form.invoice_line_ids.edit(0) as line_form:
line_form.quantity = 3.0
invoice = move_form.save()
- invoice.post()
+ invoice.action_post()
self.check_reconciliation(invoice, picking, full_reconcile=False)
invoice2 = self._create_invoice_for_po(purchase_order, '2017-02-15')
@@ -138,7 +138,7 @@ class TestValuationReconciliation(ValuationReconciliationTestCommon):
with move_form.invoice_line_ids.edit(0) as line_form:
line_form.quantity = 2.0
invoice2 = move_form.save()
- invoice2.post()
+ invoice2.action_post()
self.check_reconciliation(invoice2, picking, full_reconcile=False)
# We don't need to make the date of processing explicit since the very last rate
diff --git a/addons/purchase_stock/tests/test_purchase_order.py b/addons/purchase_stock/tests/test_purchase_order.py
index 4837de135b6..c1e958ffb41 100644
--- a/addons/purchase_stock/tests/test_purchase_order.py
+++ b/addons/purchase_stock/tests/test_purchase_order.py
@@ -109,7 +109,7 @@ class TestPurchaseOrder(ValuationReconciliationTestCommon):
move_form.partner_id = self.partner_a
move_form.purchase_id = self.po
self.invoice = move_form.save()
- self.invoice.post()
+ self.invoice.action_post()
self.assertEqual(self.po.order_line.mapped('qty_invoiced'), [5.0, 5.0], 'Purchase: all products should be invoiced"')
@@ -145,7 +145,7 @@ class TestPurchaseOrder(ValuationReconciliationTestCommon):
with move_form.invoice_line_ids.edit(1) as line_form:
line_form.quantity = 2.0
self.invoice = move_form.save()
- self.invoice.post()
+ self.invoice.action_post()
self.assertEqual(self.po.order_line.mapped('qty_invoiced'), [3.0, 3.0], 'Purchase: Billed quantity should be 3.0')
diff --git a/addons/purchase_stock/tests/test_stockvaluation.py b/addons/purchase_stock/tests/test_stockvaluation.py
index aefd53a1afd..e2972a456a4 100644
--- a/addons/purchase_stock/tests/test_stockvaluation.py
+++ b/addons/purchase_stock/tests/test_stockvaluation.py
@@ -382,7 +382,7 @@ class TestStockValuationWithCOA(AccountTestInvoicingCommon):
move_form.partner_id = self.partner_id
move_form.purchase_id = po1
invoice_po1 = move_form.save()
- invoice_po1.post()
+ invoice_po1.action_post()
# Receive 10@20 ; create the vendor bill
po2 = self.env['purchase.order'].create({
@@ -407,7 +407,7 @@ class TestStockValuationWithCOA(AccountTestInvoicingCommon):
move_form.partner_id = self.partner_id
move_form.purchase_id = po2
invoice_po2 = move_form.save()
- invoice_po2.post()
+ invoice_po2.action_post()
# valuation of product1 should be 300
self.assertEqual(self.product1.value_svl, 300)
@@ -433,7 +433,7 @@ class TestStockValuationWithCOA(AccountTestInvoicingCommon):
with move_form.invoice_line_ids.edit(0) as line_form:
line_form.quantity = 10
creditnote_po2 = move_form.save()
- creditnote_po2.post()
+ creditnote_po2.action_post()
# check the anglo saxon entries
price_diff_entry = self.env['account.move.line'].search([('account_id', '=', self.price_diff_account.id)])
@@ -467,7 +467,7 @@ class TestStockValuationWithCOA(AccountTestInvoicingCommon):
with move_form.invoice_line_ids.edit(0) as line_form:
line_form.price_unit = 15.0
invoice = move_form.save()
- invoice.post()
+ invoice.action_post()
# Check what was posted in the price difference account
price_diff_aml = self.env['account.move.line'].search([('account_id','=', self.price_diff_account.id)])
@@ -590,7 +590,7 @@ class TestStockValuationWithCOA(AccountTestInvoicingCommon):
})]
})
- inv.post()
+ inv.action_post()
move_lines = inv.line_ids
self.assertEqual(len(move_lines), 2)
@@ -734,7 +734,7 @@ class TestStockValuationWithCOA(AccountTestInvoicingCommon):
]
})
- inv.post()
+ inv.action_post()
for p in patchers:
p.stop()
@@ -898,7 +898,7 @@ class TestStockValuationWithCOA(AccountTestInvoicingCommon):
]
})
- inv.post()
+ inv.action_post()
for p in patchers:
p.stop()
@@ -1074,7 +1074,7 @@ class TestStockValuationWithCOA(AccountTestInvoicingCommon):
]
})
- inv.post()
+ inv.action_post()
today = date_delivery1
backorder_picking = self.env['stock.picking'].search([('backorder_id', '=', picking.id)])
@@ -1104,7 +1104,7 @@ class TestStockValuationWithCOA(AccountTestInvoicingCommon):
]
})
- inv1.post()
+ inv1.action_post()
for p in patchers:
p.stop()
@@ -1216,7 +1216,7 @@ class TestStockValuationWithCOA(AccountTestInvoicingCommon):
line_form.price_unit = 100.0
line_form.discount = 10.0
invoice = invoice_form.save()
- invoice.post()
+ invoice.action_post()
# Check what was posted in the price difference account
price_diff_aml = self.env['account.move.line'].search([('account_id','=', self.price_diff_account.id)])
@@ -1262,7 +1262,7 @@ class TestStockValuationWithCOA(AccountTestInvoicingCommon):
line_form.tax_ids.clear()
line_form.discount = 10.0
invoice = invoice_form.save()
- invoice.post()
+ invoice.action_post()
# Check what was posted in the price difference account
price_diff_aml = self.env['account.move.line'].search([('account_id', '=', self.price_diff_account.id)])
@@ -1308,7 +1308,7 @@ class TestStockValuationWithCOA(AccountTestInvoicingCommon):
line_form.price_unit = 100.0
line_form.discount = 10.0
invoice = invoice_form.save()
- invoice.post()
+ invoice.action_post()
# Check if something was posted in the price difference account
price_diff_aml = self.env['account.move.line'].search([('account_id','=', self.price_diff_account.id)])
diff --git a/addons/sale/models/account_invoice.py b/addons/sale/models/account_invoice.py
index c02f918e333..9697139a518 100644
--- a/addons/sale/models/account_invoice.py
+++ b/addons/sale/models/account_invoice.py
@@ -74,18 +74,18 @@ class AccountMove(models.Model):
})
return super()._reverse_moves(default_values_list=default_values_list, cancel=cancel)
- def post(self):
+ def _post(self, soft=True):
# OVERRIDE
# Auto-reconcile the invoice with payments coming from transactions.
# It's useful when you have a "paid" sale order (using a payment transaction) and you invoice it later.
- res = super(AccountMove, self).post()
+ posted = super()._post(soft)
- for invoice in self.filtered(lambda move: move.is_invoice()):
+ for invoice in posted.filtered(lambda move: move.is_invoice()):
payments = invoice.mapped('transaction_ids.payment_id')
move_lines = payments.line_ids.filtered(lambda line: line.account_internal_type in ('receivable', 'payable') and not line.reconciled)
for line in move_lines:
invoice.js_assign_outstanding_line(line.id)
- return res
+ return posted
def action_invoice_paid(self):
# OVERRIDE
diff --git a/addons/sale/tests/test_reinvoice.py b/addons/sale/tests/test_reinvoice.py
index d714411c6ce..6ba53f7e24b 100644
--- a/addons/sale/tests/test_reinvoice.py
+++ b/addons/sale/tests/test_reinvoice.py
@@ -68,7 +68,7 @@ class TestReInvoice(TestSaleCommon):
line_form.quantity = 3.0
line_form.analytic_account_id = self.analytic_account
invoice_a = move_form.save()
- invoice_a.post()
+ invoice_a.action_post()
sale_order_line3 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line1 and sol.product_id == self.company_data['product_order_cost'])
sale_order_line4 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line2 and sol.product_id == self.company_data['product_delivery_cost'])
@@ -96,7 +96,7 @@ class TestReInvoice(TestSaleCommon):
line_form.quantity = 2.0
line_form.analytic_account_id = self.analytic_account
invoice_b = move_form.save()
- invoice_b.post()
+ invoice_b.action_post()
sale_order_line5 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line1 and sol != sale_order_line3 and sol.product_id == self.company_data['product_order_cost'])
sale_order_line6 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line2 and sol != sale_order_line4 and sol.product_id == self.company_data['product_delivery_cost'])
@@ -150,7 +150,7 @@ class TestReInvoice(TestSaleCommon):
line_form.quantity = 3.0
line_form.analytic_account_id = self.analytic_account
invoice_a = move_form.save()
- invoice_a.post()
+ invoice_a.action_post()
sale_order_line3 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line1 and sol.product_id == self.company_data['product_delivery_sales_price'])
sale_order_line4 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line2 and sol.product_id == self.company_data['product_order_sales_price'])
@@ -178,7 +178,7 @@ class TestReInvoice(TestSaleCommon):
line_form.quantity = 2.0
line_form.analytic_account_id = self.analytic_account
invoice_b = move_form.save()
- invoice_b.post()
+ invoice_b.action_post()
sale_order_line5 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line1 and sol != sale_order_line3 and sol.product_id == self.company_data['product_delivery_sales_price'])
sale_order_line6 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line2 and sol != sale_order_line4 and sol.product_id == self.company_data['product_order_sales_price'])
@@ -214,7 +214,7 @@ class TestReInvoice(TestSaleCommon):
line_form.quantity = 3.0
line_form.analytic_account_id = self.analytic_account
invoice_a = move_form.save()
- invoice_a.post()
+ invoice_a.action_post()
self.assertEqual(len(self.sale_order.order_line), 1, "No SO line should have been created (or removed) when validating vendor bill")
self.assertTrue(invoice_a.mapped('line_ids.analytic_line_ids'), "Analytic lines should be generated")
diff --git a/addons/sale/tests/test_sale_order.py b/addons/sale/tests/test_sale_order.py
index 6634e2b33ae..59b8553da78 100644
--- a/addons/sale/tests/test_sale_order.py
+++ b/addons/sale/tests/test_sale_order.py
@@ -205,7 +205,7 @@ class TestSaleOrder(TestSaleCommon):
}),
],
})
- inv.post()
+ inv.action_post()
sol = so.order_line.filtered(lambda l: l.product_id == serv_cost)
self.assertTrue(sol, 'Sale: cost invoicing does not add lines when confirming vendor invoice')
self.assertEqual((sol.price_unit, sol.qty_delivered, sol.product_uom_qty, sol.qty_invoiced), (160, 2, 0, 0), 'Sale: line is wrong after confirming vendor invoice')
diff --git a/addons/sale/tests/test_sale_refund.py b/addons/sale/tests/test_sale_refund.py
index d384bc8066d..094fe8dc473 100644
--- a/addons/sale/tests/test_sale_refund.py
+++ b/addons/sale/tests/test_sale_refund.py
@@ -75,7 +75,7 @@ class TestSaleToInvoice(TestSaleCommon):
def test_refund_create(self):
# Validate invoice
- self.invoice.post()
+ self.invoice.action_post()
# Check quantity to invoice on SO lines
for line in self.sale_order.order_line:
@@ -135,7 +135,7 @@ class TestSaleToInvoice(TestSaleCommon):
self.assertEqual(len(line.invoice_lines), 2, "The line 'ordered service' is invoiced, so it should be linked to 2 invoice lines (invoice and refund)")
# Validate the refund
- invoice_refund.post()
+ invoice_refund.action_post()
for line in self.sale_order.order_line:
if line.product_id.invoice_policy == 'delivery':
@@ -169,7 +169,7 @@ class TestSaleToInvoice(TestSaleCommon):
line_form.quantity = 4
# Validate invoice
- self.invoice.post()
+ self.invoice.action_post()
# Check quantity to invoice on SO lines
for line in self.sale_order.order_line:
@@ -228,7 +228,7 @@ class TestSaleToInvoice(TestSaleCommon):
line_form.quantity = 2
# Validate invoice
- self.invoice.post()
+ self.invoice.action_post()
# Check quantity to invoice on SO lines
for line in self.sale_order.order_line:
@@ -295,7 +295,7 @@ class TestSaleToInvoice(TestSaleCommon):
invoice_refund = move_form.save()
# Validate the refund
- invoice_refund.post()
+ invoice_refund.action_post()
for line in self.sale_order.order_line:
if line.product_id.invoice_policy == 'delivery':
diff --git a/addons/sale/tests/test_sale_to_invoice.py b/addons/sale/tests/test_sale_to_invoice.py
index a1fefc3cce0..2e945be978c 100644
--- a/addons/sale/tests/test_sale_to_invoice.py
+++ b/addons/sale/tests/test_sale_to_invoice.py
@@ -133,7 +133,7 @@ class TestSaleToInvoice(TestSaleCommon):
})
payment.create_invoices()
invoice = self.sale_order.invoice_ids[0]
- invoice.post()
+ invoice.action_post()
# Check discount appeared on both SO lines and invoice lines
for line, inv_line in zip(self.sale_order.order_line, invoice.invoice_line_ids):
@@ -195,7 +195,7 @@ class TestSaleToInvoice(TestSaleCommon):
self.assertEqual(line.untaxed_amount_to_invoice, line.product_uom_qty * line.price_unit, "The amount to invoice should the total of the line, as the line is confirmed (no confirmed invoice)")
self.assertEqual(line.untaxed_amount_invoiced, 0.0, "The invoiced amount should be zero, as no invoice are validated for now")
- invoice.post()
+ invoice.action_post()
# Check quantity to invoice on SO lines
for line in self.sale_order.order_line:
diff --git a/addons/sale_mrp/tests/test_sale_mrp_flow.py b/addons/sale_mrp/tests/test_sale_mrp_flow.py
index 47f1523e9c0..017af400412 100644
--- a/addons/sale_mrp/tests/test_sale_mrp_flow.py
+++ b/addons/sale_mrp/tests/test_sale_mrp_flow.py
@@ -686,7 +686,7 @@ class TestSaleMrpFlow(ValuationReconciliationTestCommon):
with move_form.invoice_line_ids.edit(0) as line_form:
line_form.quantity = 2.0
self.invoice = move_form.save()
- self.invoice.post()
+ self.invoice.action_post()
aml = self.invoice.line_ids
aml_expense = aml.filtered(lambda l: l.is_anglo_saxon_line and l.debit > 0)
aml_output = aml.filtered(lambda l: l.is_anglo_saxon_line and l.credit > 0)
diff --git a/addons/sale_stock/tests/test_anglo_saxon_valuation.py b/addons/sale_stock/tests/test_anglo_saxon_valuation.py
index c6aa6576efe..e79c96ff87b 100644
--- a/addons/sale_stock/tests/test_anglo_saxon_valuation.py
+++ b/addons/sale_stock/tests/test_anglo_saxon_valuation.py
@@ -12,9 +12,9 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
@classmethod
def setUpClass(cls, chart_template_ref=None):
super().setUpClass(chart_template_ref=chart_template_ref)
-
+
cls.env.user.company_id.anglo_saxon_accounting = True
-
+
cls.product = cls.env['product.product'].create({
'name': 'product',
'type': 'product',
@@ -101,7 +101,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# Invoice the sale order.
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -145,7 +145,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
with invoice_form.invoice_line_ids.edit(0) as invoice_line:
invoice_line.quantity = 1
invoice_form.save()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -175,7 +175,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# invoice 1
invoice2 = sale_order._create_invoices()
- invoice2.post()
+ invoice2.action_post()
amls = invoice2.line_ids
self.assertEqual(len(amls), 4)
stock_out_aml = amls.filtered(lambda aml: aml.account_id == self.company_data['default_account_stock_out'])
@@ -220,7 +220,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# Invoice the sale order.
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -284,7 +284,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
with invoice_form.invoice_line_ids.edit(0) as invoice_line:
invoice_line.quantity = 1
invoice_form.save()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -314,7 +314,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# invoice 1
invoice2 = sale_order._create_invoices()
- invoice2.post()
+ invoice2.action_post()
amls = invoice2.line_ids
self.assertEqual(len(amls), 4)
stock_out_aml = amls.filtered(lambda aml: aml.account_id == self.company_data['default_account_stock_out'])
@@ -359,7 +359,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# Invoice the sale order.
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -394,7 +394,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# Invoice the sale order.
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -432,7 +432,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# Invoice the sale order.
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -468,7 +468,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# Invoice the sale order.
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -526,7 +526,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# Invoice the sale order.
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -561,7 +561,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# Invoice the sale order.
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -595,7 +595,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# Invoice the sale order.
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -639,7 +639,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
with invoice_form.invoice_line_ids.edit(0) as invoice_line:
invoice_line.quantity = 2
invoice_form.save()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -673,7 +673,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# Invoice the sale order.
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -735,7 +735,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
with invoice_form.invoice_line_ids.edit(0) as invoice_line:
invoice_line.quantity = 2
invoice_form.save()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -770,7 +770,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# Invoice the sale order.
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -846,7 +846,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# Invoice the sale order.
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# Check the resulting accounting entries
amls = invoice.line_ids
@@ -915,7 +915,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
sale_order.picking_ids.move_lines.quantity_done = 1
sale_order.picking_ids.button_validate()
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# sale 6@20, deliver, invoice
sale_order = self.env['sale.order'].create({
@@ -934,7 +934,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
sale_order.picking_ids.move_lines.quantity_done = 6
sale_order.picking_ids.button_validate()
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# check the last anglo saxon invoice line
amls = invoice.line_ids
@@ -983,7 +983,7 @@ class TestAngloSaxonValuation(ValuationReconciliationTestCommon):
# Invoice the sale order.
invoice = sale_order._create_invoices()
- invoice.post()
+ invoice.action_post()
# Make the second receipt
in_move_2 = self.env['stock.move'].create({
diff --git a/addons/sale_stock/tests/test_anglo_saxon_valuation_reconciliation.py b/addons/sale_stock/tests/test_anglo_saxon_valuation_reconciliation.py
index 0cef43ad17e..05a07a56682 100644
--- a/addons/sale_stock/tests/test_anglo_saxon_valuation_reconciliation.py
+++ b/addons/sale_stock/tests/test_anglo_saxon_valuation_reconciliation.py
@@ -78,7 +78,7 @@ class TestValuationReconciliation(ValuationReconciliationTestCommon):
self._process_pickings(sale_order.picking_ids)
invoice = self._create_invoice_for_so(sale_order, test_product, '2018-02-12')
- invoice.post()
+ invoice.action_post()
picking = self.env['stock.picking'].search([('sale_id', '=', sale_order.id)])
self.check_reconciliation(invoice, picking, operation='sale')
@@ -94,7 +94,7 @@ class TestValuationReconciliation(ValuationReconciliationTestCommon):
sale_order = self._create_sale(test_product, '2018-01-01')
invoice = self._create_invoice_for_so(sale_order, test_product, '2018-02-03')
- invoice.post()
+ invoice.action_post()
self._process_pickings(sale_order.picking_ids)
@@ -133,11 +133,11 @@ class TestValuationReconciliation(ValuationReconciliationTestCommon):
picking = self.env['stock.picking'].search([('sale_id', '=', sale_order.id)], order="id asc", limit=1)
invoice = self._create_invoice_for_so(sale_order, test_product, '2018-02-03', quantity=3)
- invoice.post()
+ invoice.action_post()
self.check_reconciliation(invoice, picking, full_reconcile=False, operation='sale')
invoice2 = self._create_invoice_for_so(sale_order, test_product, '2018-03-12', quantity=2)
- invoice2.post()
+ invoice2.action_post()
self.check_reconciliation(invoice2, picking, full_reconcile=False, operation='sale')
self._process_pickings(sale_order.picking_ids.filtered(lambda x: x.state != 'done'), quantity=3.0)
diff --git a/addons/sale_stock/tests/test_sale_stock.py b/addons/sale_stock/tests/test_sale_stock.py
index 19569195003..4c9cb9779fc 100644
--- a/addons/sale_stock/tests/test_sale_stock.py
+++ b/addons/sale_stock/tests/test_sale_stock.py
@@ -216,7 +216,7 @@ class TestSaleStock(TestSaleCommon, ValuationReconciliationTestCommon):
self.assertEqual(self.so.invoice_status, 'invoiced', 'Sale Stock: so invoice_status should be "invoiced" instead of "%s" after invoicing' % self.so.invoice_status)
self.assertEqual(len(self.inv_1), 1, 'Sale Stock: only one invoice instead of "%s" should be created' % len(self.inv_1))
self.assertEqual(self.inv_1.amount_untaxed, self.inv_1.amount_untaxed, 'Sale Stock: amount in SO and invoice should be the same')
- self.inv_1.post()
+ self.inv_1.action_post()
# Create return picking
stock_return_picking_form = Form(self.env['stock.return.picking']
@@ -805,7 +805,7 @@ class TestSaleStock(TestSaleCommon, ValuationReconciliationTestCommon):
# create invoice for 3 quantity and post it
inv_1 = so._create_invoices()
- inv_1.post()
+ inv_1.action_post()
self.assertEqual(inv_1.state, 'posted', 'invoice should be in posted state')
pick_2 = so.picking_ids.filtered('backorder_id')
diff --git a/addons/sale_timesheet/tests/test_project_overview.py b/addons/sale_timesheet/tests/test_project_overview.py
index 8af287de964..46b198d9730 100644
--- a/addons/sale_timesheet/tests/test_project_overview.py
+++ b/addons/sale_timesheet/tests/test_project_overview.py
@@ -54,7 +54,7 @@ class TestSaleProject(TestReporting):
action_invoice = payment.with_context(context).create_invoices()
invoice = self.env['account.move'].browse(action_invoice['res_id'])
- invoice.post()
+ invoice.action_post()
# simulate the auto creation of the SO line for expense, like we confirm a vendor bill.
so_line_expense = self.env['sale.order.line'].create({
diff --git a/addons/sale_timesheet/tests/test_reinvoice.py b/addons/sale_timesheet/tests/test_reinvoice.py
index 43976827bae..0ea1087d926 100644
--- a/addons/sale_timesheet/tests/test_reinvoice.py
+++ b/addons/sale_timesheet/tests/test_reinvoice.py
@@ -93,7 +93,7 @@ class TestReInvoice(TestCommonSaleTimesheet):
line_form.quantity = 3.0
line_form.analytic_account_id = self.analytic_account
invoice_a = move_form.save()
- invoice_a.post()
+ invoice_a.action_post()
sale_order_line3 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line1 and sol.product_id == self.company_data['product_order_cost'])
sale_order_line4 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line2 and sol.product_id == self.company_data['product_delivery_cost'])
@@ -128,7 +128,7 @@ class TestReInvoice(TestCommonSaleTimesheet):
line_form.quantity = 2.0
line_form.analytic_account_id = self.analytic_account
invoice_b = move_form.save()
- invoice_b.post()
+ invoice_b.action_post()
sale_order_line5 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line1 and sol != sale_order_line3 and sol.product_id == self.company_data['product_order_cost'])
sale_order_line6 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line2 and sol != sale_order_line4 and sol.product_id == self.company_data['product_delivery_cost'])
@@ -192,7 +192,7 @@ class TestReInvoice(TestCommonSaleTimesheet):
line_form.quantity = 3.0
line_form.analytic_account_id = self.analytic_account
invoice_a = move_form.save()
- invoice_a.post()
+ invoice_a.action_post()
sale_order_line3 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line1 and sol.product_id == self.company_data['product_delivery_sales_price'])
sale_order_line4 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line2 and sol.product_id == self.company_data['product_order_sales_price'])
@@ -227,7 +227,7 @@ class TestReInvoice(TestCommonSaleTimesheet):
line_form.quantity = 2.0
line_form.analytic_account_id = self.analytic_account
invoice_b = move_form.save()
- invoice_b.post()
+ invoice_b.action_post()
sale_order_line5 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line1 and sol != sale_order_line3 and sol.product_id == self.company_data['product_delivery_sales_price'])
sale_order_line6 = self.sale_order.order_line.filtered(lambda sol: sol != sale_order_line2 and sol != sale_order_line4 and sol.product_id == self.company_data['product_order_sales_price'])
@@ -263,7 +263,7 @@ class TestReInvoice(TestCommonSaleTimesheet):
line_form.quantity = 3.0
line_form.analytic_account_id = self.analytic_account
invoice_a = move_form.save()
- invoice_a.post()
+ invoice_a.action_post()
# let's log some timesheets (on the project created by sale_order_line1)
task_sol1 = sale_order_line.task_id
diff --git a/addons/sale_timesheet/tests/test_reporting.py b/addons/sale_timesheet/tests/test_reporting.py
index 158e4f974d5..a851a3bbb96 100644
--- a/addons/sale_timesheet/tests/test_reporting.py
+++ b/addons/sale_timesheet/tests/test_reporting.py
@@ -232,7 +232,7 @@ class TestReporting(TestCommonSaleTimesheet):
action_invoice = payment.with_context(context).create_invoices()
invoice_id = action_invoice['res_id']
invoice_1 = self.env['account.move'].browse(invoice_id)
- invoice_1.post()
+ invoice_1.action_post()
self.env['project.profitability.report'].flush()
# deliver project should now have cost and something invoiced
@@ -287,7 +287,7 @@ class TestReporting(TestCommonSaleTimesheet):
action_invoice = payment.with_context(context).create_invoices()
invoice_id = action_invoice['res_id']
invoice_2 = self.env['account.move'].browse(invoice_id)
- invoice_2.post()
+ invoice_2.action_post()
self.env['project.profitability.report'].flush()
# deliver project should not be impacted by the invoice of the other SO
diff --git a/addons/sale_timesheet/tests/test_sale_service.py b/addons/sale_timesheet/tests/test_sale_service.py
index b85695e092d..ee37a45d448 100644
--- a/addons/sale_timesheet/tests/test_sale_service.py
+++ b/addons/sale_timesheet/tests/test_sale_service.py
@@ -163,7 +163,7 @@ class TestSaleService(TestCommonSaleTimesheet):
# invoice SO, and validate invoice
invoice = self.sale_order._create_invoices()[0]
- invoice.post()
+ invoice.action_post()
# make task non billable
task_serv2.write({'sale_line_id': False})
diff --git a/addons/sale_timesheet/tests/test_sale_timesheet.py b/addons/sale_timesheet/tests/test_sale_timesheet.py
index add615452e0..80947e41fbf 100644
--- a/addons/sale_timesheet/tests/test_sale_timesheet.py
+++ b/addons/sale_timesheet/tests/test_sale_timesheet.py
@@ -145,7 +145,7 @@ class TestSaleTimesheet(TestCommonSaleTimesheet):
self.assertFalse(timesheet4.timesheet_invoice_id, "The timesheet4 should not be linked to the invoice, since we are in ordered quantity")
# validate the first invoice
- invoice1.post()
+ invoice1.action_post()
self.assertEqual(so_line_ordered_global_project.product_uom_qty, invoice_line_1.quantity, "The invoice (ordered) quantity should not change when modifying timesheet")
self.assertFalse(timesheet1.timesheet_invoice_id, "The timesheet1 should not be linked to the invoice, since we are in ordered quantity")
@@ -289,7 +289,7 @@ class TestSaleTimesheet(TestCommonSaleTimesheet):
self.assertFalse(timesheet4.timesheet_invoice_id, "The timesheet4 should not still be linked to the invoice")
# validate the second invoice
- invoice2.post()
+ invoice2.action_post()
self.assertEqual(timesheet1.timesheet_invoice_id, invoice1, "The timesheet1 should not be linked to the invoice 1, even after validation")
self.assertEqual(timesheet2.timesheet_invoice_id, invoice2, "The timesheet2 should not be linked to the invoice 1, even after validation")
@@ -372,7 +372,7 @@ class TestSaleTimesheet(TestCommonSaleTimesheet):
self.assertFalse(timesheet2.timesheet_invoice_id, "The timesheet2 should not be linked to the invoice, since timesheets are used for time tracking in milestone")
# validate the invoice
- invoice1.post()
+ invoice1.action_post()
self.assertFalse(timesheet1.timesheet_invoice_id, "The timesheet1 should not be linked to the invoice, even after invoice validation")
self.assertFalse(timesheet2.timesheet_invoice_id, "The timesheet2 should not be linked to the invoice, even after invoice validation")
@@ -488,7 +488,7 @@ class TestSaleTimesheet(TestCommonSaleTimesheet):
self.assertEqual(so_line_deliver_global_project.qty_invoiced, timesheet1.unit_amount)
# validate invoice
- invoice.post()
+ invoice.action_post()
wizard.write({
'date_invoice_timesheet': today - timedelta(days=4)
diff --git a/addons/snailmail_account/tests/test_pingen_send.py b/addons/snailmail_account/tests/test_pingen_send.py
index 71a1b4b89d3..e3cb29ebbd7 100644
--- a/addons/snailmail_account/tests/test_pingen_send.py
+++ b/addons/snailmail_account/tests/test_pingen_send.py
@@ -48,7 +48,7 @@ class TestPingenSend(HttpCase):
})],
})
- invoice.post()
+ invoice.action_post()
return invoice
diff --git a/addons/stock_account/models/account_move.py b/addons/stock_account/models/account_move.py
index e3ffb4ce05d..f081c5285f1 100644
--- a/addons/stock_account/models/account_move.py
+++ b/addons/stock_account/models/account_move.py
@@ -25,22 +25,22 @@ class AccountMove(models.Model):
move_vals['line_ids'] = [vals for vals in move_vals['line_ids'] if not vals[2]['is_anglo_saxon_line']]
return move_vals
- def post(self):
+ def _post(self, soft=True):
# OVERRIDE
# Don't change anything on moves used to cancel another ones.
if self._context.get('move_reverse_cancel'):
- return super(AccountMove, self).post()
+ return super()._post(soft)
# Create additional COGS lines for customer invoices.
self.env['account.move.line'].create(self._stock_account_prepare_anglo_saxon_out_lines_vals())
# Post entries.
- res = super(AccountMove, self).post()
+ posted = super()._post(soft)
# Reconcile COGS lines in case of anglo-saxon accounting with perpetual valuation.
- self._stock_account_anglo_saxon_reconcile_valuation()
- return res
+ posted._stock_account_anglo_saxon_reconcile_valuation()
+ return posted
def button_draft(self):
res = super(AccountMove, self).button_draft()
diff --git a/addons/stock_account/models/product.py b/addons/stock_account/models/product.py
index d8d8b113221..27de3425fc2 100644
--- a/addons/stock_account/models/product.py
+++ b/addons/stock_account/models/product.py
@@ -62,7 +62,7 @@ class ProductTemplate(models.Model):
# Create the account moves.
if move_vals_list:
account_moves = self.env['account.move'].sudo().create(move_vals_list)
- account_moves.post()
+ account_moves._post()
return res
# -------------------------------------------------------------------------
@@ -282,7 +282,7 @@ class ProductProduct(models.Model):
account_moves = self.env['account.move'].sudo().create(am_vals_list)
if account_moves:
- account_moves.post()
+ account_moves._post()
def _run_fifo(self, quantity, company):
self.ensure_one()
@@ -489,7 +489,7 @@ class ProductProduct(models.Model):
'stock_move_id': vacuum_svl.stock_move_id.id,
'move_type': 'entry',
})
- new_account_move.post()
+ new_account_move._post()
to_reconcile_account_move_lines = vacuum_svl.account_move_id.line_ids.filtered(lambda l: not l.reconciled and l.account_id == accounts['stock_output'] and l.account_id.reconcile)
to_reconcile_account_move_lines += new_account_move.line_ids.filtered(lambda l: not l.reconciled and l.account_id == accounts['stock_output'] and l.account_id.reconcile)
return to_reconcile_account_move_lines.reconcile()
@@ -783,5 +783,5 @@ class ProductCategory(models.Model):
# Create the account moves.
if move_vals_list:
account_moves = self.env['account.move'].sudo().create(move_vals_list)
- account_moves.post()
+ account_moves._post()
return res
diff --git a/addons/stock_account/models/stock_move.py b/addons/stock_account/models/stock_move.py
index 2323c9b1251..56109a86583 100644
--- a/addons/stock_account/models/stock_move.py
+++ b/addons/stock_account/models/stock_move.py
@@ -454,7 +454,7 @@ class StockMove(models.Model):
'stock_valuation_layer_ids': [(6, None, [svl_id])],
'move_type': 'entry',
})
- new_account_move.post()
+ new_account_move._post()
def _account_entry_move(self, qty, description, svl_id, cost):
""" Accounting Valuation Entries """
diff --git a/addons/stock_account/tests/test_anglo_saxon_valuation_reconciliation_common.py b/addons/stock_account/tests/test_anglo_saxon_valuation_reconciliation_common.py
index f7aa6df7e12..0af2a63c50a 100644
--- a/addons/stock_account/tests/test_anglo_saxon_valuation_reconciliation_common.py
+++ b/addons/stock_account/tests/test_anglo_saxon_valuation_reconciliation_common.py
@@ -116,4 +116,4 @@ class ValuationReconciliationTestCommon(AccountTestInvoicingCommon):
pickings.mapped('move_lines').write({'date': date})
pickings.mapped('move_lines.account_move_ids').write({'name': '/', 'state': 'draft'})
pickings.mapped('move_lines.account_move_ids').write({'date': date})
- pickings.move_lines.account_move_ids.post()
+ pickings.move_lines.account_move_ids.action_post()
diff --git a/addons/stock_account/wizard/stock_valuation_layer_revaluation.py b/addons/stock_account/wizard/stock_valuation_layer_revaluation.py
index eee3cd5a187..36a0db9f985 100644
--- a/addons/stock_account/wizard/stock_valuation_layer_revaluation.py
+++ b/addons/stock_account/wizard/stock_valuation_layer_revaluation.py
@@ -155,6 +155,6 @@ class StockValuationLayerRevaluation(models.TransientModel):
})],
}
account_move = self.env['account.move'].create(move_vals)
- account_move.post()
+ account_move._post()
return True
diff --git a/addons/stock_dropshipping/tests/test_stockvaluation.py b/addons/stock_dropshipping/tests/test_stockvaluation.py
index 4300bc66f30..f4709c03829 100644
--- a/addons/stock_dropshipping/tests/test_stockvaluation.py
+++ b/addons/stock_dropshipping/tests/test_stockvaluation.py
@@ -73,11 +73,11 @@ class TestStockValuation(ValuationReconciliationTestCommon):
with move_form.invoice_line_ids.edit(i) as line_form:
line_form.tax_ids.clear()
self.vendor_bill1 = move_form.save()
- self.vendor_bill1.post()
+ self.vendor_bill1.action_post()
# create the customer invoice
self.customer_invoice1 = self.sale_order1._create_invoices()
- self.customer_invoice1.post()
+ self.customer_invoice1.action_post()
all_amls = self.vendor_bill1.line_ids + self.customer_invoice1.line_ids
if self.sale_order1.picking_ids.move_lines.account_move_ids:
diff --git a/addons/stock_landed_costs/models/stock_landed_cost.py b/addons/stock_landed_costs/models/stock_landed_cost.py
index 076ead97c0c..1e975f323cf 100644
--- a/addons/stock_landed_costs/models/stock_landed_cost.py
+++ b/addons/stock_landed_costs/models/stock_landed_cost.py
@@ -173,7 +173,7 @@ class StockLandedCost(models.Model):
move_vals['stock_valuation_layer_ids'] = [(6, None, valuation_layer_ids)]
move = move.create(move_vals)
cost.write({'state': 'done', 'account_move_id': move.id})
- move.post()
+ move._post()
if cost.vendor_bill_id and cost.vendor_bill_id.state == 'posted' and cost.company_id.anglo_saxon_accounting:
all_amls = cost.vendor_bill_id.line_ids | cost.account_move_id.line_ids
diff --git a/addons/stock_landed_costs/tests/test_stock_landed_costs_purchase.py b/addons/stock_landed_costs/tests/test_stock_landed_costs_purchase.py
index 7bb527d8419..2c879fae12b 100644
--- a/addons/stock_landed_costs/tests/test_stock_landed_costs_purchase.py
+++ b/addons/stock_landed_costs/tests/test_stock_landed_costs_purchase.py
@@ -358,7 +358,7 @@ class TestLandedCostsWithPurchaseAndInv(TestStockValuationLCCommon):
move_form.partner_id = order.partner_id
move_form.purchase_id = order
move = move_form.save()
- move.post()
+ move.action_post()
# Check nothing was posted in the price difference account
price_diff_aml = self.env['account.move.line'].search([('account_id','=', self.price_diff_account.id), ('move_id', '=', move.id)])
diff --git a/addons/stock_landed_costs/tests/test_stockvaluationlayer.py b/addons/stock_landed_costs/tests/test_stockvaluationlayer.py
index 8d270764ba9..c2cb5354282 100644
--- a/addons/stock_landed_costs/tests/test_stockvaluationlayer.py
+++ b/addons/stock_landed_costs/tests/test_stockvaluationlayer.py
@@ -338,10 +338,10 @@ class TestStockValuationLCFIFOVB(TestStockValuationLCCommon):
self.assertEqual(valuation_aml.debit, 100)
self.assertEqual(valuation_aml.credit, 0)
- # Create a vebdor bill for the RFQ
+ # Create a vendor bill for the RFQ
action = rfq.action_create_invoice()
- vb = self.env['account.move'].search([('id', '=', action['res_id'])])
- vb.post()
+ vb = self.env['account.move'].browse(action['res_id'])
+ vb.action_post()
input_aml = self._get_stock_input_move_lines()[-1]
self.assertEqual(input_aml.debit, 100)
@@ -361,7 +361,7 @@ class TestStockValuationLCFIFOVB(TestStockValuationLCCommon):
with lcvb.invoice_line_ids.edit(0) as inv_line:
inv_line.tax_ids.clear()
lcvb = lcvb.save()
- lcvb.post()
+ lcvb.action_post()
input_aml = self._get_stock_input_move_lines()[-1]
self.assertEqual(input_aml.debit, 50)
@@ -434,7 +434,7 @@ class TestStockValuationLCFIFOVB(TestStockValuationLCCommon):
inv_line.price_unit = 50
inv_line.is_landed_costs_line = True
vb = vb.save()
- vb.post()
+ vb.action_post()
action = vb.button_create_landed_costs()
lc = Form(self.env[action['res_model']].browse(action['res_id']))
@@ -480,8 +480,8 @@ class TestStockValuationLCFIFOVB(TestStockValuationLCCommon):
# Create a vebdor bill for the RFQ
action = rfq.action_create_invoice()
- vb = self.env['account.move'].search([('id', '=', action['res_id'])])
- vb.post()
+ vb = self.env['account.move'].browse(action['res_id'])
+ vb.action_post()
expense_aml = self._get_expense_move_lines()[-1]
self.assertEqual(expense_aml.debit, 100)
@@ -502,7 +502,7 @@ class TestStockValuationLCFIFOVB(TestStockValuationLCCommon):
with lcvb.invoice_line_ids.edit(0) as inv_line:
inv_line.tax_ids.clear()
lcvb = lcvb.save()
- lcvb.post()
+ lcvb.action_post()
expense_aml = self._get_expense_move_lines()[-1]
self.assertEqual(expense_aml.debit, 50)
@@ -529,4 +529,3 @@ class TestStockValuationLCFIFOVB(TestStockValuationLCCommon):
self.assertEqual(self.product1.quantity_svl, 10)
self.assertEqual(self.product1.value_svl, 150)
-