Commit Graph
30 Commits
Author SHA1 Message Date
wan 0ca97ae3d6 [FIX] account_analytic_default: compute instead of default_get + onchange
Task 2075249

The commit dd627b9 added a default_get to retrieve the default analytic
values. However, it was depending on self, which cannot be done in a
api.model

In this commit, we use an editable compute in order to update the
analytic values in all the cases, and to reduce the duplication of the
code.

X-original-commit: 69bf61bbc991eee96e673316ae8c37e98e1b8a1d
2019-11-20 17:36:09 +00:00
Christophe Simonis 07501d3cad [FIX] account_analytic_default: adapt code to new version
Oversight of previous forward-port.
2019-09-25 14:33:08 +02:00
Christophe Simonis 257a382b5c [MERGE] forward port branch saas-12.3 up to dd627b9698 2019-09-25 13:43:26 +02:00
Samuel Degueldre dd627b9698 [FIX] account_analytic_default: fix ocr not using default analytic account
PURPOSE:

Default analytic account should be used wherever possible. This wasn't
the case because the module didn't implement a default_get and only
filled the fields on product_id change, which isn't set by the OCR

task-2067097
opw-2068110

closes odoo/odoo#37389

X-original-commit: 2c450015154f8ba2384fb1f0ad1d4075785009c0
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-09-24 15:50:04 +00:00
Alex Tuyls e7697ea472 [FIX] account_analytic_default: missing analytic tag on invoice
When adding an analytic tag on a sale order line, if there is
a default analytic tag defined matching the criteria, the tag
on the SO line is overwritten in the invoice while it should be
kept.

opw-2068196

closes odoo/odoo#36685

closes odoo/odoo#36727

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-09-12 06:29:13 +00:00
Christophe Simonis b792ba7d9a [MERGE] forward port branch saas-12.3 up to 752b2553c6 2019-08-08 11:52:13 +02:00
Waleed Mohsen 431b7d7a38 [FIX] account_analytic_default: apply same logic as in _prepare_invoice_line
It was not possible to manually set a default analytic account as it was
overriden by the onchange, even if no account was returned by account_get

Apply the same logic as in _prepare_invoice_line on sale.order.line

closes odoo/odoo#30282

Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2019-08-02 14:07:34 +00:00
Laurent Smet beaa30a3d1 [IMP/REF] accounting-pocalypse yeaaahh
This commit merges the following models
 * account.invoice and account.move
 * account.invoice.line and account.move.line
 * account.voucher and account.move
 * account.voucher.line and account.move.line

It was the opportunity for a big cleanup of the code, so it also restructures the whole account module, its different models/fields, the tests etc. for a better world and a better code readability.

==== Rationale ====
The rationale of this huge change is that we want journal entries / invoices to be easily edited, and changes reflected in the other model. It's a HUGE feature and very strategic for the fiduciary companies. For example, changing the account of a journal entry needs to be automatically reflected on the related invoice.

The same reasoning applies to sale/purchase vouchers.

==== Changes made in features =====
When creating an invoice, you are now creating a journal entry directly.
--> The object account.invoice no longer exists.
In the same fashion when creating an invoice line, you're now adding journal items directly in the journal entry representing the invoice. If this invoice line has some tax, it may create additional journal items as well.
--> The models account.invoice.line & account.invoice.tax no longer exist

Identically, when creating a sale/purchase receipt with its lines, you are now creating a journal entry directly and there's no more usability difference between encoding a receipt or an invoice.
--> The object account.voucher no longer exists.
--> The object account.voucher.line no longer exists.
--> The whole account_voucher module no longer exists.

Positive side-effects coming from these changes are
* draft invoices/bills/sale or purchase receipts now create a draft accounting entry. Validate these objects now simply post its journal entry. That means that draft invoices/bills/sale or purchase receipt can straightforwardly be included in reporting or budgets.
* opening a journal entry in form view will now always open the correct view: if it's a sale/purchase journal entry we will have a customer invoice/vendor bill view or a sale/purchase receipt view, whatever the menu we're coming from.
* code & business logic simplification. It is also condensed in a single place instead of being partially duplicated on invoices, vouchers and journal entries.

There should be no feature loss, except the one allowing to group multiple journal items together based on the same product during the invoice validation.

==== Changes made in models =====
* account.invoice: model removed. Instead, now use account.move with following mapping

field (account.invoice) 		field (account.move)
-----------------------			--------------------
name 					invoice_payment_ref
number 					name
reference 				ref
comment 				narration
user_id 				invoice_user_id
amount_					total_company_signed amount_total_signed
residual 				amount_residual
state 					state + invoice_payment_state 		/!\ selection changed
date_invoice 				invoice_date
date_due 				invoice_date_due
sent 					invoice_sent
origin 					invoice_origin
payment_term_id 			invoice_payment_term_id
partner_bank_id 			invoice_partner_bank_id
incoterm_id 				invoice_incoterm_id
vendor_bill_id 				invoice_vendor_bill_id
source_email 				invoice_source_email
vendor_display_name 			invoice_vendor_display_name
invoice_icon 				invoice_vendor_icon
cash_rounding_id 			invoice_cash_rounding_id
sequence_number_next 			invoice_sequence_number_next
sequence_number_next_prefix 		invoice_sequence_number_next_prefix

'invoices' subset of account.move can be accessed by using the selection field 'type' or one of the many helpers like is_invoice()

* account.move: now has a valid state 'cancel' that has to be excluded from all business logic
* account.move: field 'amount' renamed into 'amount_total'
* account.move: field 'reverse_entry_id' renamed into 'reversed_entry_id'
* account.move.line: now has a field 'display_type' that has to be excluded from all business logic, in order to support invoice layouting
* account.invoice.line: model removed. Instead, now use account.move.line with following mapping

field (account.invoice.line) 		field (account.move.line)
----------------------------		-------------------------
invoice_id 				move_id
uom_id 					product_uom_id
invoice_line_tax_ids 			tax_ids
account_analytic_id 			analytic_account_id

'invoice lines' subset of all account.move.line from a journal entry can be accessed by using the boolean field 'exclude_from_invoice_tab'

* account.invoice.tax: model removed. Instead, now use account.move.line with following mapping

field (account.invoice.tax) 		field (account.move.line)
---------------------------		-------------------------
invoice_id 				move_id
account_analytic_id 			analytic_account_id
amount 					price_unit
base 					tax_base_amount

'tax lines' subset of all account.move.line from a journal entry can be accessed by using the relational field 'tax_line_id'

* account.invoice.confirm: model removed. Instead, now use the 'post()' function of account.move
* account.invoice.refund: model removed. Instead, now use account.move.reversal to reverse the entries with the same options as we had for invoices
* account.voucher: model removed. Instead, now use account.move of type in ['out_receipt', 'in_receipt]
* account.voucher.line: model removed. Instead, now use account.move.line

==== Changes made in functions ====
* on account.move, method _run_post_draft_to_post() renamed into _autopost_draft_entries()
* on account.move, method action_account_invoice_payment() renamed into action_invoice_register_payment()
* on account.move, method action_invoice_reconcile_to_check() renamed into action_open_matching_suspense_moves()
* on account.move, method _get_domain_edition_mode_available() renamed into _get_domain_matching_supsense_moves()
* on account.move, method _get_intrastat_country_id() renamed into _get_invoice_intrastat_country_id()
* on account.move.line, method _get_domain_for_edition_mode() renamed into _get_suspense_moves_domain()
* in account.bank.statement, contextual key 'edition_mode' renamed into 'suspense_moves_mode'

Was task 1917430
2019-06-28 11:52:55 +00:00
Christophe Simonis 71a50a2214 [MERGE] forward port branch saas-12.3 up to 409679866b 2019-06-06 11:54:35 +02:00
Nicolas Martinelli 5fccb75fde [FIX] account_analytic_default: default based on user
- Create an Analytic Distribution for:
Product A
Current user (e.g. Mitchell Admin)
- Sell the product in the POS, request an invoice

The analytic account defined is not used.

This is due to the invoice created as SUPERUSER.

We should first take into account the user on the invoice, then the
current user.

opw-2003935

closes odoo/odoo#33758

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-05-29 12:49:24 +00:00
wan 3c67bb20fe [REF] account_analytic_default*: split into multiple modules and add support for PO
Move the SO part in a new module
Add the functionality to PO

Task 1945220

closes odoo/odoo#33282

Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
2019-05-24 09:24:17 +00:00
Christophe Simonis 860dfb5586 [MERGE] forward port branch 11.0 up to d277adf4d5 2018-04-06 15:36:10 +02:00
Goffin Simon ce162fae3e [FIX] account_analytic_default: Default analytic account in multi company
Steps to reproduce the bug:

- Set your user in multi company
- Set a default analytic account A for product P with your company
- Create a PO with P and deliver it
- Generate the invoice.

Bug:

The analytic account A was not set on the line.

opw:1831998
2018-04-03 16:09:01 +02:00
jao-odoo 84a75ef851 Saas 11.2 account fix analytic accounting jao (#23110)
[IMP] purchase_requisition : add analytic_tag_ids field in purchase requistion

[IMP] sale: set analytic tags on invoice based on the analytic tags defined on SO

[IMP] account_analytic_default: add default analytic tags to invoice lines created from SO for down payment


(#23110)
2018-03-05 14:30:11 +01:00
Christophe Simonis 36945a5853 [MERGE] forward port branch 11.0 up to c2e878e34c 2018-03-01 19:43:25 +01:00
Laurent Smet d5d2a33424 [IMP] account_analytic_default: get the analytic acc. based on commercial_partner_id
The suggested analytic account must search based on the commercial_partner_id instead of
the partner_id field.

E.g. create an invoice with 'Agrolait, Thomas Passot', the analytic account 'Agrolait' wasn't set by default.

-github issue 21401
2018-02-28 13:32:18 +01:00
Joren Van Onder 079a13a349 [IMP] analytic: in-depth refactoring
* analytic accounts can be shared among companies
* amount on analytic lines always refer to amount in company currency of which it belongs to
* add analytic groups (hierarchical way to classify analytic accounts)
* analytic tags:
- only present on analytic lines, not anymore on analytic accounts
- can be used to distribue/split an analytic lines among several analytic accounts
- enabled by a dedicated res.group
- added on several objects (vouchers, expenses, analytic defaults...) as well as in bank statement reconciliation widget (manual counterpart and account.reconcile.model)

* bunch of fixes made related to analytic

Was PR #22124. Was task 32386. Original work by tbe.
2018-01-31 15:53:04 +01:00
Pratima Gupta 011d6acbe9 [IMP] account_analytic_default: remove the stat button 'Analytic Rules' 2017-09-11 18:18:41 -07:00
xmo-odoo b4429c2a91 [FIX] Various P3-related import changes
* LDAP import: python-ldap is not python3-compatible, pyldap is

  Warning: only supported from debian Stretch (current testing)?
  https://packages.debian.org/search?searchon=names&keywords=pyldap

* implicitly relative imports
* imports of moved or removed stdlib modules

issue #8530
2017-04-28 09:06:53 +02:00
qdp-odoo 4f29b77e3d [MERGE] foward port of 10.0 up to revision 84a650e33a 2016-12-30 17:21:25 +01:00
Christophe Simonis 0b846861b6 [MERGE] forward port branch 10.0 up to 5dc1c57 2016-12-01 17:05:08 +01:00
Christophe Simonis 7842498934 [MERGE] forward port branch 9.0 up to 5bed95f 2016-12-01 15:33:21 +01:00
Kinjal Mehta 8698307374 [IMP] account_analytic_default: select default product when creating analytic rule from product 2016-09-06 16:06:57 +02:00
Thibault Delavallée 4540b6595e [FIX] mrp, account_analytic_default: removed methods
When migrating stock, some dummies methods have been removed. Indeed those
calls make more problems than they solve by adding unnecessary complexity
around simple methods. However it seems some calls have been left in the
process :

 - _get_act_window_dict which is basically an env.ref or act_window.for_xml_id
 - _get_products which is basically having all product_ids from template by
   iterating on product_variant_ids.
2016-04-29 17:43:02 +02:00
Kinjal Mehta a57592abe4 [IMP] analytic: Replaced account_type field by active field
Currently there is a selection field 'account_type' on the
account.analytic.account model with 2 values : Active or Archived

Let's use an active field instead and add a Archive stat button on the
form. That way, we can remove all the domain ('account_type','=','normal')
which are implicit with the generic active field behavior
2016-03-23 16:35:34 +01:00
Mansi Trivedi 9931234e83 [FIX] product: wrong target on computed method
As in an api.multi call, should target template, not self.
Fixes traceback prone computed field
2016-02-05 13:47:49 +01:00
rap-odoo 9b38946529 [REF] account_analytic_default: migration to new API 2016-01-08 14:04:47 +01:00
rap-odoo 05a3e91487 [IMP] account_analytic_default: remove dead code
No longer called, removed in accounting refactoring
2016-01-08 13:56:35 +01:00
rap-odoo f51fd9ac8f [IMP] account_analytic_default: split files
KISS
2016-01-08 13:56:35 +01:00
rap-odoo 44d8e4b487 [REF] account_analytic_default: move files in proper folder 2016-01-08 13:56:35 +01:00