TIP: You can type at any time to perform a new search.
Analytic Accounting support for WIP and Variances
account_analytic_wip · OCA/account-analytic
- Repository
- OCA/account-analytic · module folder · Try on Runboat
- Module version
- 3.0.3
- Category
- Accounting/Accounting
- Folder size
- 0.18 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/account-analytic
- Last tracking update
- 2026-08-07 07:47:33
- Authors
- Odoo Community Association (OCA), Open Source Integrators
- Maintainers
- Odoo Community Association (OCA), Open Source Integrators
- Committers
- GitHub, Daniel Reis, Weblate, OCA Transbot, OCA-git-bot, oca-travis, oca-ci
Code Analysis ⓘ
Views touched (6)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_analytic_tracking_form |
account.analytic.tracking.form | account.analytic.tracking.item | form | New |
account_analytic_tracking_search |
account.analytic.tracking.search | account.analytic.tracking.item | search | New |
account_analytic_tracking_tree |
account.analytic.tracking.tree | account.analytic.tracking.item | tree | New |
view_account_move_form |
Account Move Form: add Tracking Item | account.move | form | Inherits account.view_move_form |
view_analytic_line_form |
Analytic Line Form: add Tracking Item | account.analytic.line | form | Inherits account.view_account_analytic_line_form_inherit_account |
view_product_category_form |
product.category | form | Inherits product.product_category_form_view |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (6)
New fields (1)
-
analytic_tracking_item_idsOne2many → account.analytic.tracking.itemstring='Tracking Items' args: 'account.analytic.tracking.item', 'analytic_id'
No public methods.
New fields (1)
-
analytic_tracking_item_idMany2one → account.analytic.tracking.itemcopy=Falsestring='Tracking Item' args: 'account.analytic.tracking.item'
-
create(self, vals)@api.model -
populate_tracking_items(self)When creating an Analytic Item, link it to a Tracking Item, the may have to be created if it doesn't exist. Use this (and used dependency methods) as a template for other models implementing related tracking items.
New fields (22)
-
account_move_idsOne2many → account.movehelp='Related journal entries with the posted WIP.'string='Journal Entries' args: 'account.move', 'analytic_tracking_item_id' -
accounted_amountFloathelp='Amount accounted in Journal Entries. Directly set by the routine creating the Journal Entries, and not directly read from the jpunral items.' -
activity_cost_idMany2one → activity.cost.ruleargs: 'activity.cost.rule', 'Activity Cost Rule' -
actual_amountFloatcompute='_compute_actual_amounts'help='Total cost amount of the related Analytic Items. These Analytic Items are generated when a cost is incurred, and will later generated WIP and Variance Journal Entries.'store=True -
analytic_idMany2one → account.analytic.accountondelete='restrict'required=Truestring='Analytic Account' args: 'account.analytic.account' -
analytic_line_idsOne2many → account.analytic.linehelp='Related analytic items with the project actuals.'string='Analytic Items' args: 'account.analytic.line', 'analytic_tracking_item_id' -
child_idsOne2many → account.analytic.tracking.itemstring='Child Tracking Items' args: 'account.analytic.tracking.item', 'parent_id' -
company_idMany2one → res.companyrelated='analytic_id.company_id'store=True args: 'res.company' -
dateDatedefault=fields.Date.today() -
difference_actual_amountFloatcompute='_compute_actual_amounts'help='Difference between actual and planned amounts.'store=True -
nameCharcompute='_compute_name'store=True -
parent_idMany2one → account.analytic.tracking.itemondelete='cascade' args: 'account.analytic.tracking.item', 'Parent Tracking Item' -
pending_amountFloatcompute='_compute_actual_amounts'help='Amount not yet posted to journal entries.'store=True -
planned_amountFloat -
planned_qtyFloat -
product_categ_idMany2one → product.categoryrelated='product_id.categ_id'store=True args: 'product.category' -
product_idMany2one → product.productondelete='restrict'string='Cost Product' args: 'product.product' -
remaining_actual_amountFloatcompute='_compute_actual_amounts'help='Actual amount planned and not yet consumed.'store=True -
stateSelectiondefault='draft'help='Open operations are in progress, no negative variances are computed. Done operations are completed, negative variances are computed. Locked operations are done and posted, no more actions to do.' args: [('draft', 'Open'), ('done', 'Done'), ('cancel', 'Cancelled')] -
to_calculateBooleancompute='_compute_to_calculate' -
variance_actual_amountFloatcompute='_compute_actual_amounts'help='Actual amount incurred above the planned amount limit.'store=True -
wip_actual_amountFloatcompute='_compute_actual_amounts'help='Actual amount incurred below the planned amount limit.'store=True
-
action_cancel(self) -
clear_wip_journal_entries(self)Clear the WIP accounts so that their balance is zero and Debit the final Output account. -
create(self, vals)@api.model -
process_wip_and_variance(self, close=False)For each Analytic Tracking Item with a Pending Amount different from zero, generate Journal Entries for WIP and excess Variances -
write(self, vals)
New fields (1)
-
analytic_tracking_item_idMany2one → account.analytic.tracking.itemhelp='Tracking item generating this journal entry'ondelete='set null'string='Tracking Item' args: 'account.analytic.tracking.item'
No public methods.
New fields (1)
-
is_wipBooleancompute='_compute_is_wip_account'
No public methods.
New fields (2)
-
property_variance_account_idMany2one → account.accountcheck_company=Truecompany_dependent=Truedomain="[('company_id', '=', allowed_company_ids[0]), ('deprecated', '=', False)]" args: 'account.account', 'Variance Account' -
property_wip_account_idMany2one → account.accountcheck_company=Truecompany_dependent=Truedomain="[('company_id', '=', allowed_company_ids[0]), ('deprecated', '=', False)]" args: 'account.account', 'WIP Account'
No public methods.