AR/AP netting
=============
This module allows to compensate the balance of a receivable account with the
balance of a payable account for the same partner, creating a journal item
that reflects this operation.
**WARNING**: This operation can be forbidden in your country by the accounting
regulations, so you should check current laws before using it. For example, in
Spain, this is not allowed at first instance, unless you document well the
operation from both parties.
Usage
=====
From any account journal entries view:
* Accounting/Journal Entries/Journal Items
* Accounting/Periodic Processing/Reconciliation/Manual Reconciliation
select all the lines that corresponds to both AR/AP operations from the same
partner. Click on "More > Compensate". If the items don't correspond to the
same partner or they aren't AR/AP accounts, you will get an error.
On contrary, a dialog box will be presented with the result of the operation
and a selection of the journal to register the operation. When you click on the
"Compensate" button, a journal entry is created with the corresponding
counterparts of the AR/AP operations.
With this option, you can select which fields do you want to compare for updating.
Use case: you have specific accounts in taxes, and you don't want to lose them,
but you want to update their groups through the wizard. Before this, the update
was all or nothing. Now, you have total control!
* Compare all fields from template
Not all fields were properly compared with previous code. This means also
to exclude some of them, but now we have a full and extensible system.
* Optimize cached method
* Generate accounts and fiscal positions using Odoo methods (tax already did)
* README by fragments
* Add tests up to full coverage
When marking methods as ormcache, you can't return recordsets, as they keep
the cursor information, and that cursor can be closed (worker spawn for example)
when you need to access again data.
This is fixed returning IDs instead, and browsing when needed
- New-style license headers.
- Remove .pot file.
- Remove tax codes stuff, now removed from v9.
- Refactor methods for search, create, update, delete. Now they are smaller, fitter, happier, more productive.
- Only update fields that have any kind of change on any updated record.
- Place the wizard in the configuration page, instead of its own menu item.
- Display amount of disabled taxes at ending page.
As there's a constraint that forbids to write the code of the account
if it has moves, we delete the corresponding entry on update only,
because the method that prepares the values is the same for new and
existing accounts.
* Fix calculated field when showing inactives + add field to view
* Migrated to new API.
* Provided hooks for detecting changes and for adding update/create values.
* Purge dead error detection code (not applying).
* Use global mapping dictionaries stored on class instead of passing arguments down to top and viceversa.
* Number fields computed by a function field instead of being computed by hand.
* Use recordsets as indexes instead of ids to avoid repetitive browses.
* Re-enable local cache variables
* README + authors
* search on code first to match tax codes
The tax code code should be more discriminant that the tax code name.
* compare more fields in tax codes
* deletion of tax codes removed from templates
For tax codes, it make sense to propose deletion, since tax codes
are normally defined by the tax authority and the user does not
customize them.
* update accounts on taxes even if an update of the account was not requested
Useful when the chart of taxes changes but the chart of account
need not be updated.
* depth-first search of tax codes
This helps creating parents before children.
* compare more fields in taxes
* add active field on tax code
Deactivate tax codes which are not in the template.
* deactivate taxes that are not in the template
* multi-company criteria for taxes
* avoid inserting duplicates in presence of inactive taxes or tax codes
* Move out of unported
* Set account_chart_update installable
* value_reference of ir.property is a char
* Use get_by_record method of ir.property
* number digits is returned before assignment in case of property exist but account not
* product_obj isn't used