Commit Graph
285 Commits
Author SHA1 Message Date
Christophe Simonis 83f5dc8e35 [FIX] account: do not set unknow field when creating invoice
The field `reference_type` has been removed with b5bb5bd421

Adapt newly forward-ported test to not use this field.
2019-01-14 11:31:16 +01:00
Christophe Simonis 6a0675d36d [MERGE] forward port branch saas-11.3 up to e033114879 2019-01-11 18:56:24 +01:00
Christophe Simonis d11dc31e7a [MERGE] forward port branch 11.0 up to 617652bbfe 2019-01-10 17:59:26 +01:00
Christophe Simonis 617652bbfe [MERGE] forward port branch saas-15 up to 9878db14f5 2019-01-10 17:00:16 +01:00
Christophe Simonis 96e800703b [MERGE] forward port branch saas-14 up to 390d8594b0 2019-01-10 13:22:07 +01:00
Christophe Simonis 390d8594b0 [MERGE] forward port branch 10.0 up to b131658966 2019-01-10 11:33:40 +01:00
Lucas Perais (lpe) 5e1b874cd8 [FIX] account: cash basis reconciliation on many amls
Make an expense report containing 2 expenses
one of them has tax exigible on payment

Validate the whole thing and make a payment

Before this commit, the journal entries were wrong
this was because:
-  there were 2 move lines in the payable account
Each of them wanting to reconcile with the payment, and each of them trying
to create an cash basis entry
-  the amounts were incorrect too, as the matched percentage was computed
on move lines that were not in a payable/receivable, but in taxes accounts

OPW 1912247

closes odoo/odoo#29878
2019-01-10 07:40:27 +00:00
Jorge Pinna Puissant b131658966 [FIX] account: error in Base amount tax
opw-1917605

Before this commit, when accounting is set to global rounding, the base
amount per tax is not correctly calculated.

Now, the Base amount per tax is calculated adding the rounded lines.

To test this issue, you need to set to global rounding and create a
customer invoice with the following lines :
line 1 = Qty:40; unit price:2.27; tax:15%; discount: 10%
line 2 = Qty:21; unit price:2.77; tax:15%; discount: 10%
line 3 = Qty:21; unit price:2.77; tax:15%; discount: 10%

When the invoce is printed, you would notice that the amount is 186.43
and it should be 186.42.

closes odoo/odoo#30021
2019-01-08 13:13:36 +00:00
Nicolas Lempereur 222f3166b0 [FIX] account: apply currency on uom change
When creating a new line on a customer invoice, we could get the price
unit in the company currency instead of the invoice currency.

This is because the uom_id onchange would ignore currency when setting
the price.

Changing an invoice line's price unit on uom_id change was introduced
in february 2018 in saas-11.3 with 3a38080ff.

Change to how currency is applied when setting an invoice line's price
unit was introduced in june 2018 in 9.0 with 367fadc8.

So there was a missing part in saas-11.3 to adapt 367fadc8 for 3a38080ff
change that is added with this commit.

Without the fix, the added test failed with:

  AssertionError: 10.0 != 20

opw-1920504
closes #29776
2018-12-28 13:20:52 +00:00
Christophe Simonis ec9400821e [MERGE] forward port branch saas-11.3 up to 27a084eb81 2019-01-04 14:54:08 +01:00
Laurent Smet 67d3d30cf2 [FIX] tools/date_utils: Fix get_fiscal_year with leap years
Suppose calling get_fiscal_year(date, day=29, month=2) with date(year=2017, month=2, day=28)

The computation steps are:
date_from = date(year=2017, month=2, day=28) - 1 year = date(year=2016, month=2, day=28)
date_from = date_from + 1 day = date(year=2016, month=2, day=29)

It's incorrect because the value of date_from must be date(year=2016, month=3, day=1)

closes odoo/odoo#29416
2019-01-03 08:30:31 +00:00
Christophe Simonis 55dafc20f6 [MERGE] forward port branch 11.0 up to 7e5d5045bf 2018-12-11 17:06:48 +01:00
Christophe Simonis 069278b652 [MERGE] forward port branch saas-11.3 up to 55dafc20f6 2018-12-11 18:51:05 +01:00
Christophe Simonis b09f624f20 [MERGE] forward port branch 11.0 up to 263b388c50 2018-11-22 17:52:57 +01:00
Lucas Perais (lpe) 551be27593 [FIX] account: aged report: payment for future
Create an invoice for a day, and register a payment right away
BUT choose a date in the future for that payment

Imagine a French Check. You write it, and tell your partner to cash it in
10 days later

You would enter that transaction as a temporary payment
in your own books

OPW 1893646

Before this commit, the line of the partner did not appear in the aged
report after if the report was for the date just after the invoice date

After this commit, it does

closes odoo/odoo#28728
2018-11-15 13:33:00 +00:00
Wolfgang Taferner 0246887f7b [FIX] account: wrong default journal based on type available in vals
As the journal is mostly set in the Odoo world the _default_journal
method is not needed during create, but in case you only have
partner_id, account_id and type in vals you will have retrieved a wrong
journal in case you have an incoming invoice.

closes odoo/odoo#28635
2018-11-13 16:20:42 +00:00
Christophe Simonis 94a9fc9902 [MERGE] forward port branch 11.0 up to e5c8071484 2018-11-08 14:13:52 +01:00
Christophe Simonis 21eb31d804 [MERGE] forward port branch 11.0 up to a587325ca7 2018-10-31 19:22:21 +01:00
Goffin Simon e2db39e96b Revert "(FIX] account: Impossible to make a partial credit note"
This reverts commit bb939ffac0.

closes odoo/odoo#28321
2018-10-31 14:48:14 +00:00
Christophe Simonis 8cf43f1350 [MERGE] forward port branch 11.0 up to ee0ff262f0 2018-10-29 17:12:53 +01:00
Goffin Simon bb939ffac0 (FIX] account: Impossible to make a partial credit note
Steps to reproduce the bug:

- Create a credit note for an amount of 100$
- Validate it and register a payment
- Let's pay an amount of 90$ and mark this credit note as fully paid

Bug:

An error message was raised saying: Wrong credit or debit value in accounting entry !

The field residual_company_signed must be positive for out_invoice and in_refund and
negative for in_invoice and out_refund. In this way, the correct writeoff amount
can be computed in function _create_payment_entry.

PS: In function _compute_payment_amount, the field residual_signed and residual_company_signed
are already signed, that's why it was wrong to multiply a second time on it with MAP_INVOICE_TYPE_PAYMENT_SIGN

opw:1893570

closes odoo/odoo#28148
2018-10-29 07:09:15 +00:00
Christophe Simonis cc8e8237bf [MERGE] forward port branch 11.0 up to 84500c27b1 2018-10-25 13:59:45 +02:00
Christophe Simonis 58af18eb2f [FIX] account,sale_timesheet: don't enforce test journal currency
It was causing some tests failure due to 22f0da809e
2018-10-24 17:45:34 +02:00
Goffin Simon 69a0af9e86 [FIX] account: Impossible to make a partial credit note
Steps to reproduce the bug:

- Create a credit note for an amount of 100$
- Validate it and register a payment
- Let's pay an amount of 90$ and mark this credit note as fully paid

Bug:

An error message was raised saying: Wrong credit or debit value in accounting entry !

DO NOT FORWARD-PORT

opw:1893570

closes odoo/odoo#28433
2018-11-07 09:01:14 +00:00
Christophe Simonis 1ade6675c3 [MERGE] forward port branch 11.0 up to 717f458394 2018-10-11 16:29:46 +02:00
Nicolas Martinelli 3c4f853365 [FIX] account: aged partner report
Let's consider an aged partner balance with a period of 30 days as of
2019-02-08. The specific dates used in the report are:

``` python
bisou = datetime.strptime('2019-02-08', "%Y-%m-%d").date()
for x in [0, 1, 30, 31, 60, 61, 90, 91, 120, 121]:
    print(x, bisou + relativedelta(days=-x))

0   2019-02-08
1   2019-02-07
30  2019-01-09
31  2019-01-08
60  2018-12-10
61  2018-12-09
90  2018-11-10
91  2018-11-09
120 2018-10-11
121 2018-10-10
```

However, the current periods generated are incorrect:

```
{'name': '0-30', 'stop': '2019-02-08', 'start': '2019-01-09'}
{'name': '30-60', 'stop': '2019-01-08', 'start': '2018-12-09'}
{'name': '60-90', 'stop': '2018-12-08', 'start': '2018-11-08'}
{'name': '90-120', 'stop': '2018-11-07', 'start': '2018-10-08'}
{'name': '+120', 'stop': '2018-10-07', 'start': False}
```

There is a clear inconsistency between the name of the period and the
date used. Moreover, the name is misleading: 0-30 includes the -0 date,
while 30-60 doesn't include the -30 date.

After the fix, the name and the periods are consistent. We also change
the first period to 1-30 since including 0 would mean to include amounts
which are not due yet.

```
{'name': '1-30', 'stop': '2019-02-07', 'start': '2019-01-09'}
{'name': '31-60', 'stop': '2019-01-08', 'start': '2018-12-10'}
{'name': '61-90', 'stop': '2018-12-09', 'start': '2018-11-10'}
{'name': '91-120', 'stop': '2018-11-09', 'start': '2018-10-11'}
{'name': '+120', 'stop': '2018-10-10', 'start': False}
```

opw-1886633

closes odoo/odoo#27294
2018-10-10 15:21:24 +00:00
Christophe Simonis 5de8842b31 [FIX] account: correct test
Let postgres do the casting...
2018-11-22 21:38:45 +01:00
Christophe Simonis b4e1be8ab0 [MERGE] forward port branch saas-11.3 up to b09f624f20 2018-11-22 20:06:48 +01:00
Nicolas Lempereur 1620c5b69c [FIX] account: test typo forward-port 3e4b9d4d66
also reference_type is removed from the model b5bb5bd42

closes #28536
2018-11-09 15:54:04 +00:00
Christophe Simonis 3e4b9d4d66 [MERGE] forward port branch saas-11.4 up to 639bd89635 2018-11-09 14:51:55 +01:00
Christophe Simonis 639bd89635 [MERGE] forward port branch saas-11.3 up to 94a9fc9902 2018-11-08 17:08:03 +01:00
Olivier Colson 7754416cd8 [FIX] account: fix "post at bank reconciliation" option of bank journals
Before that, with "post at bank reconciliation option" activated on bank journal, the following scenarii did not work as expected:

1. When creating an invoice, making two payments for it, and then matching only one of them with a bank statement
=> the invoice was marked as 'paid' while it should have staid 'in payment' until the second payment gets a bank statement.

2. When directly reconciling a bank statement with an invoice for its full amount
=> the invoice staid in "in payment" state, while it should have been "paid"

[IMP] account: add tests for the aforementioned cases

closes odoo/odoo#28428
2018-11-07 09:18:51 +00:00
Joren Van Onder b9e6adcaf7 [FIX] account: reconcile payments against min date_maturity journal item
1. Create a payment term with:
   - 50% due now
   - balance due in 14 days
2. Validate an invoice with this payment term and partner Agrolait
3. Create a payment from Agrolait with the 50% due
4. Add this outstanding credit to the invoice

It is reconciled with the balance due in 14 days instead of what is
due now. Because of this e.g. the Aged Receivable report will show the
customer being overdue with a payment.

This issue was first fixed in 9.0 at
adad192cc0. It was then reintroduced in
saas-11.4 at d3d2612061. This commit
adds a test to avoid regressions like this.

To fix the issue this sorts journal items by their Due Date if there
is one. Otherwise we use the date from the journal entry as before.

Note that before this commit journal items were not sorted at all by
the two 'sorted' statements. sorted returns a sorted recordset, it
doesn't modify the recordset it's called on.

opw-1906665
2018-11-07 09:25:29 +01:00
Christophe Simonis f6ca72b3ce [MERGE] forward port branch saas-11.3 up to 21eb31d804 2018-10-31 20:43:03 +01:00
Christophe Simonis ca3a1f51d8 [MERGE] forward port branch saas-11.3 up to 4f3a20bb33 2018-10-30 11:45:18 +01:00
Christophe Simonis a299517f83 [MERGE] forward port branch saas-11.3 up to 6136f0c02e 2018-10-29 11:56:32 +01:00
Christophe Simonis 43856ee6b6 [FIX] account: adapt test to new report behavior
See 3c4f853365
2018-10-17 19:44:27 +02:00
Christophe Simonis 5e055a2afd [MERGE] forward port branch saas-11.4 up to f6ca72b3ce 2018-11-02 10:52:55 +01:00
Christophe Simonis b81c2bce84 [MERGE] forward port branch saas-11.4 up to 3c108977c1 2018-10-22 16:59:51 +02:00
Laurent Smet 7053ae7828 [IMP] account: management of reconciliation rules
Bank statement lines need to be matched with entries; We have to automate this operation as much as possible.
At the same time, create an algorithm that fit everyone needs is quite impossible.
For that reason we will let users choose the rules they want with the improvement of reconciliation models.

Note that we did it only for bank statement reconliation, not for manual reconciliations.

Was task: 1877375
Was PR #26669
2018-09-20 17:11:52 +02:00
Christophe Monniez 7b0ee529cb [FIX] account: remove standard tag on l10nall test
Oversight of the dev branch that cause the test to be launched on each
runbot build.
2018-09-19 16:46:30 +02:00
Christophe Monniez b9ad03ab78 [IMP] account: test install of all l10n modules
l10n modules are blacklisted on the runbot.
With this commit, a tagged test is added that installs all the l10n
modules. A chart of account is installed in a different company for each
one. This test is a first step to test all l10n. It's intended to be
launched by a runbot cron script.
2018-09-19 15:58:10 +02:00
Olivier Colson c2177b81dd [FIX] account: don't make administrator part of account users group by default
Before that, the administrator could use accounting features by default. This is not what we want, the group only gets assigned by default when installing account_accountant, on enterprise.
2018-09-19 15:50:44 +02:00
Cedric SnauwaertandAdrien Dieudonné ee5c316817 [FIX] account: reconciliation tour, set the url to use in python
Continuation and ending of 1f848bf.

Before this commit, the bank statement reconciliation still sometimes
crashed.
Each step of the tour waits 10 secs before timeout and in this case,
changing URL may take more time since this commit b0a29c9b because
we added 'debug=assets'. It was probably a mistake.

So, removing this from the URL would probably solve the error but
the second step would always be dependent on the first.
It's why we decided to load the tour with the correct URL defined
in Python.

Co-authored-by: Adrien Dieudonné <adr@odoo.com>
2018-08-24 11:06:24 +02:00
Laurent Smet b0a29c9bad [IMP] account, bank statement reconciliation widget: improve suggestions
Suggestions made to reconcile bank statement lines are now more accurate (based on communication and amount)
There's no automatic mode anymore (button + <CTRL+ENTER> shortcut removed)
Partners are set automatically when selecting a line in the widget (that will help the creation of a res.partner.bank for him, for a better partner detection next time)

Was task: 1847703
Was PR #25438
2018-08-17 17:35:39 +02:00
Olivier Colson 73fc643057 [IMP] account: draft entries creation through registering payments.
In some countries, it might be preferable not to recon the payments journal entries at the time they are registered in the system, but to do so at the date of the bank statement line they will be reconciled with.

Thus, to manage this we've added an option on bank journals to have payments generating draft account.move when they are validated, and posting them only after bank reconciliation (+overwriting their date)

Was task 1870892
Was PR #26349
2018-08-15 08:53:40 +02:00
Olivier Colson 74b6f84cc8 [IMP] account: make partner account selection easier for vendor bills payment
This is done by displaying this field on top of the vendor bills form view and using it as a default value when registering the payment. The use of a sequence on res.partner.bank also allows giving priorities to partner bank accounts directly from the tree view that is contained in res.partner form. In case payments are generated for multiple invoices at once, their account is set as the partner's most prioritary account.

[IMP] account: payment for multiple invoices: option to group + also group on account + hide memo

Add an option in the multiple invoices payment wizard to choose whether or not to group the generated payments. This is useful in case we want to keep one payment by invoice (even if they share the same partner, etc) so that each of them corresponds to a single communication.

The memo field of this wizard is now also hidden in some cases, when displaying it would allow entering wrong communication values (for example, when paying invoices from different partners ; it makes no sense that all the generated payments share the same memo).

[IMP] account: option to sanize invoice communications
2018-08-10 16:22:20 +02:00
Cedric Snauwaert cf4d4a05fd [FIX] account: the account.move.line.reconcile is not used anymore so remove it 2018-08-10 16:10:37 +02:00
Raphael Collet 960360afe4 [REF] *: use native date/datetime for Date/Datetime fields
From this commit onwards, Date fields will return datetime.date objects and Datetime fields will return datetime.datetime objects, this implies a number of things that are clearly explained both in the ORM API for master.

This commit also introduces a number of helper functions for dates and datetimes that are exposed in tools.date_utils and fields.Date[time], explained in the documentation as well.

Task-ID: 47189
2018-08-06 14:37:19 +02:00
Laurent Smet b5bb5bd421 [IMP] account: automatic communication management on out_invoices
On the accounting config, you can select an automatic way to compute the
reference on invoice and then, improve the reconciliation in a later task:
- free communication: set what you want as reference (default)
- based on partner: find the partner more easily
- based on number: retrieve the invoice directly

Was task: 1847703
Was part of PR #25921
2018-07-26 22:45:41 +02:00