Accounting Implementation Classes Extracted to org.idempiere.acct
- Goal: Technical
- Developer: Diego Ruiz(TrekGlobal)
- Feature Ticket: IDEMPIERE-6647
Accounting Implementation Classes Extracted to org.idempiere.acct
Accounting-related implementation classes have been moved out of iDempiere core into a dedicated bundle: org.idempiere.acct. This separation lays the groundwork for running iDempiere without the accounting engine in use cases where it is not needed.
What Changed
All accounting implementation classes (document posting logic, accounting schema handling, Doc_* classes, etc.) have been moved from core bundles into the dedicated org.idempiere.acct bundle.
| Aspect | Before | After |
|---|---|---|
| Accounting classes location | Spread across iDempiere core | Consolidated in org.idempiere.acct |
| Accounting engine dependency | Always loaded - part of core | Loaded only when org.idempiere.acct is active |
| Running without accounting | Not possible | Possible via Extension Manager (see limitations) |
| Plugin developers referencing acct classes | Resolved from core | Must declare dependency on org.idempiere.acct |
| Functional behavior (standard installs) | Unchanged | Unchanged — bundle is included by default |
Who Is Affected
- Standard implementations with accounting enabled: No action required. The
org.idempiere.acctbundle is included and active by default. Behavior is identical to previous releases. - Implementations wanting to run without accounting: This is now slightly possible via the Extension Manager. Be aware of the known UI limitations listed below.
- Custom plugin developers: If your plugin references any accounting implementation classes (e.g.,
org.compiere.acct.*,Doc_*classes), you must update your plugin to declare an explicit dependency onorg.idempiere.acct.
Disabling Accounting via Extension Manager
It is now possible to disable the accounting engine by disabling the org.idempiere.acct bundle through the Extension Manager.
This is an advanced configuration intended for specialized deployments that do not require accounting: such as headless integrations, operational-only setups, or specific industry verticals.
To disable accounting:
- Log in to iDempiere as a System Administrator.
- Navigate to Extension Manager.
- Locate the
org.idempiere.acctbundle. - Disable the extension.
Known limitations when accounting is disabled:
- The Post button and all Accounting related tabs disappear from the UI after accounting is disabled.
- If your implementation requires a button or an Accounting related tab - f.e. because you have a customization using that even without accounting - then you need to change the DisplayLogic of the element to remove or replace the
@#ShowAcct@=Ypart, this can be done using "Window Customization".
Do not disable accounting in production environments unless you fully understand the impact on your implementation.
Impact on Custom Plugin Developers
If your plugin had a compile-time or runtime dependency on accounting implementation classes, you must update your MANIFEST.MF:
Require-Bundle: org.idempiere.acct
Rebuild your plugin and verify there are no missing class references. Plugins that do not declare this dependency will fail to compile or throw ClassNotFoundException at runtime when accounting classes are resolved.
If your plugin only references model classes (e.g., MInvoice, MOrder) and does not directly invoke posting logic or Doc_* classes, no changes are needed.