All in One Cancel Sale, Purchase, Picking, Invoice and Payment
by SprintERP Technologies https://sprinterp.com$ 40.00
All in One Cancel Sale, Purchase, Picking, Invoice and Payment
Cancel, Reset to Draft, or Delete records in bulk across Sales, Purchases, Invoices, Payments, and Stock Pickings with interactive server action tools and absolute security management.
Key Module Highlights
All in One Cancel Sale, Purchase, Picking, Invoice and Payment
Configure Advanced Access Rights on User Profiles
Navigate to **Settings > Users & Companies > Users** and open the targeted user profile (e.g., Mitchell Admin). Scroll down to the custom **Cancel Configuration Rights** section. Here, you can grant explicit cancellation authority by toggling the dedicated boolean switches for **Cancel Account Invoice**, **Cancel Purchase Order**, **Cancel Sale Order**, and **Cancel Stock Picking**. These choices dictate exactly which document reversals the user can process.
Security Synchronization Logic: Activating these toggles runs the underlying _sync_cancel_groups()
API method. It automatically appends (or removes) the user inside native IR security groups
such as group_cancel_sale_order, establishing an anti-bypass access matrix
immediately.
Set Global Cancellation Behavior for Sale Orders
Navigate to **Settings > Sales**. Scroll down to find the custom **Cancel Configuration For Sale Order** block. Here, you can define the core behavior of your cancellation engine using the custom radio widget. Choose between three distinct modes: **Cancel Only** (standard document reversal), **Cancel and Set to Draft** (reverts and forces state back to quotation state), or **Cancel and Delete** (cancels and completely unlinks the record). Click **Save** to apply the configuration.
System Param Mapping: This selection maps directly to the system config parameter key
se_cancel_all_orders.sale_cancel_type. When the native cancel method is called,
the backend reads this parameter to decide whether to run a simple update, state write, or
an automatic database unlink command.
Execute Single Document Cancellation inside Sales Order Form View
Navigate to **Sales > Orders > Quotations / Sales Orders** and open an active record (e.g., S00025). Click on the custom-overridden native **Cancel** button located in the top header action panel. The system will instantly check the logged-in user's credentials against the custom security access configuration parameters and initiate the background execution engine.
Security Interception Check: Clicking this triggers the inherited action_cancel()
method. If the current user profile lacks the group_cancel_sale_order access
right mapping, the system instantly blocks execution and raises an explicit
UserError dialog box.
Verify Standard 'Cancel Only' Document State Reversal
When the global cancellation type parameter is set to **Cancel Only**, clicking the header cancel action panel instantly processes document state modifications. As visible in the interface layout grid, the lifecycle stage ribbon dynamically updates to **Cancelled**, indicating that the document workflow has been successfully intercepted and stopped according to native parameters.
Backend Pipeline Flow: The core python override invokes the base super(SaleOrder,
self).action_cancel() framework logic. Since the configuration matches the default
fallback execution parameters, the record state is safely updated to 'cancel' directly
inside the database rows.
Execute Mass Cancellation Actions via Sales List Dropdown
Navigate to **Sales > Orders > Quotations** list view grid. Select multiple targeted rows (e.g., S00024 and S00023) by ticking the left side checkbox controllers. Once selected, click on the **Actions** dropdown menu button inside the top center command banner. The module dynamically reveals three custom automated server actions: **Cancel Only**, **Cancel and Reset to Draft**, and **Cancel and Delete**. Click on your targeted option to execute bulk adjustments.
Contextual Bulk Execution: These options invoke custom `ir.actions.server` code
blocks. The code forcefully injects a unique context dictionary key from_bulk_select=True
into the pipeline loop. This instructs the base model overrides to process multiple chosen
row IDs synchronously without throwing context execution blockages.
Verify Successful Mass Document Cancellation Results
After executing the bulk cancellation operation from the list dropdown panel, the system dynamically reloads the current workspace. As highlighted in the data rows grid, both targeted records (**S00024** and **S00023**) have had their status parameters updated to **Cancelled** simultaneously, proving the effective processing power of the mass execution workflow engine.
Loop Processing Validation: The custom server action iterates over the browse
collection using an optimized for r in records: loop structure. By passing
from_bulk_select=True via context fields, it overrides standard constraints to
execute secure transaction commits directly across the database layers.
Configure 'Cancel and Set to Draft' Behavior for Sale Orders
Navigate to **Settings > Sales** and locate the custom **Cancel Configuration For Sale Order** container. Change the current parameter value by selecting the second radio option: **Cancel and Set to Draft**. This advanced mode instructs the cancellation engine to automatically transition documents directly back into modification-ready states instead of locking them down as cancelled records. Click **Save** to apply the configuration.
State Logic Redirection: By switching this flag, the backend workflow condition
checks evaluate cancel_type == 'draft' as true. Instead of stopping after the
standard super call, the inherited pipeline triggers an automatic self.write({'state':
'draft'}) row update execution parameters instantly.
Execute Single Document Cancellation Under 'Draft' Redirection Mode
Navigate back to **Sales > Orders > Quotations** and open an active record (e.g., S00014) that needs structural revision. Click on the native **Cancel** button inside the top header workflow status bar. With the newly updated global configurations active, the engine will intercept the standard termination hook and dynamically force a state reset.
Advanced Process Interception: The execution pipeline validates security parameters
before calling the super script layer. Since the system parameter context verifies single
document handling (absence of from_bulk_select), it prepares the document rows
for automated workflow state transitions.
Verify Automated Automatic State Reset to Quotation (Draft)
Once the header cancellation tool is executed, the advanced processing engine intercepts the native lifecycle block. Instead of leaving the record in a locked state, it instantly forces a dynamic write operation. As shown on the top-right status ribbon tracking bar, the document transitions directly back to the **Quotation** (Draft) phase, instantly re-enabling editing, line adjustments, and confirmation flows.
Post-Cancellation Automation: The overridden method validates that the backend system
parameter value equals draft. It seamlessly executes the database instruction self.write({'state':
'draft'}) immediately after completing native unlinking protocols, ensuring a clean
automated loop.
Verify Grid Refresh Results for Form View Single Resets
Navigate to the **Sales > Orders > Quotations** backend data dashboard list. As highlighted on the real-time layout grid tracker rows, record item **S00014** accurately maintains its status stage tag highlighted as a dynamic blue **Quotation** badge. This proves that individual record adjustments on form headers process workflow parameters perfectly without leaving orphaned logs.
Workflow Thread Isolation: The background database transaction confirms that the script correctly processes separate logic threads. Because it handles a standalone active row id rather than an iterative multi-select bulk context collection array, the framework safely saves transaction states directly into the system layers.
Execute Mass 'Cancel and Reset to Draft' via Server Actions Dropdown
Navigate to **Sales > Orders > Quotations** list view. Select multiple targeted rows simultaneously (e.g., S00013, S00012, and S00010) by ticking the left side checkbox controllers. Open the top center **Actions** dropdown menu and select the custom integrated server option: **Cancel and Reset to Draft**. This triggers a rapid mass conversion sequence directly across all selected record sets at once.
Mass Server Action Execution: This action invokes the automated code block action_sale_order_cancel_draft_bulk.
It checks permissions for each selected ID, passes the data matrix via a rapid context
pipeline, intercepts native stage blocks, and forcefully applies draft state overrides
across the selected records.
Verify Mass Reset Results inside Sales Grid View Dashboard
After executing the bulk cancel and reset action, the workspace automatically updates the view. As highlighted in the selection block, rows **S00013**, **S00012**, and **S00010** have successfully bypassed locked cancellation states. Their lifecycle status parameters have simultaneously shifted back to the active blue **Quotation** stage tag.
Mass Database Updates: The background database transaction executes the server action
code blocks iteratively. By safely invoking r.with_context(from_bulk_select=True).action_cancel()
followed immediately by a rapid r.write({'state': 'draft'}) pipeline, the
framework alters massive datasets instantly without causing memory registry leaks.
Configure 'Cancel and Delete' Permanent Purge Behavior for Sale Orders
Navigate to **Settings > Sales** and find the custom **Cancel Configuration For Sale Order** container panel. Update the operational configuration by selecting the third radio option parameter: **Cancel and Delete**. This robust enterprise-grade utility instructs the engine to not only process termination hooks but to immediately wipe the document completely out of database views. Click **Save** to apply.
Database Deletion Logic: When this configuration evaluates to true, the model
override invokes standard super cancellation steps first, executes a direct cursor save
point command (self.env.cr.commit()), and immediately runs the destructive
database pipeline command self.unlink() to clear data blocks safely.
Execute Single Document Permanent Purge via Form View Header
Navigate to **Sales > Orders > Quotations** and select the targeted record items (e.g., S00001) from your dashboard container list rows. Click on the header action panel **Cancel** button. With the system configuration flags matching the permanent delete parameters, the framework triggers an automatic post-cancel cleanup protocol inside database tables instantly.
Transactional Purge Interception: The core backend code validates the context values
loop. Because cancel_type == 'delete' is evaluated, the server code overrides
native system lifecycle parameters by setting the row to cancel state first, firing database
synchronization commits, and instantly unlinking data rows.
Verify Record Purge via Native UI Exception Alerts
Immediately after executing the form view header cancellation on a record configured for deletion, the backend engine processes the database wipe. Since the active view tries to read a record that no longer exists, Odoo displays a native validation alert toast at the top-right corner: *"It seems the records with IDs 1 cannot be found. They might have been deleted."* This confirms that the data has been purged successfully.
Unlink Sync Verification: The module utilizes self.env.cr.commit() right
before running self.unlink(). This ensures that the state changes are fully
locked into the active transaction before Odoo's web client triggers its view
synchronization protocols, avoiding system page freeze errors.
Execute Mass 'Cancel and Delete' Permanent Purge via Server Actions
Navigate to **Sales > Orders > Quotations** list view dashboard. Select multiple or all targeted transaction records at once by ticking the master checkbox controller on the top grid header (e.g., 16 items selected). Click on the central **Actions** dropdown menu button inside the command banner, and choose the third custom integrated options panel: **Cancel and Delete** to trigger an automated batch removal sequence instantly.
Batch Deletion Framework: This action fires the automated code block action_sale_order_cancel_delete_bulk.
The script processes each selected row ID through an optimized loop context, updates their
state values to cancel, applies direct database transaction commits, and instantly unlinks
massive blocks of selected datasets safely.
Verify Complete Database Reset and Empty List View Parameters
After executing the mass batch purge sequence, the backend server updates view states and forces a layout refresh. As visible in the active panel, the entire quotations data grid has been wiped clean, displaying Odoo's native empty dashboard onboarding banner placeholder. This completely confirms that all targeted entries were successfully purged directly out of database tables without leaving stale or corrupt relational hooks behind.
Complete Purge Execution: The automated process successfully targeted every record ID passed in the active collection. By executing native model validations inside the batch loop, the framework purges all row entries and related internal dependencies, providing a clean database environment for testing cycles.
Configure Global Cancellation Behavior for Purchase Orders
Navigate to **Settings > Purchase**. Scroll down to find the custom **Cancel Configuration For Purchase Order** block section. Here, you can define the core behavior of your procurement cancellation workflows using the custom radio widget. Select the first mode: **Cancel Only** to enforce standard document reversal that flags items as cancelled without extra manipulation. Click **Save** to apply the configuration.
System Param Mapping: This selection maps directly to the system config parameter key
se_cancel_all_orders.purchase_cancel_type. When the native purchase cancel
method is invoked, the inherited python override reads this parameter to decide whether to
execute a standard super update or advance further down custom workflow loops.
Execute Single Document Cancellation inside Purchase Order Form View
Navigate to **Purchase > Orders > Requests for Quotation / Purchase Orders** and open an active procurement record (e.g., P00008). Click on the custom-overridden native **Cancel** button located in the top header action status bar panel. The framework will instantly check the logged-in user's credentials against the custom security group mapping matrix and initiate the backend execution engine loop.
Security Interception Check: Clicking this button triggers the inherited python
override method button_cancel() inside the purchase order model extensions. If
the current user lacks the group_cancel_purchase_order access rights, the
system blocks the execution and instantly raises a structured UserError dialog
box.
Verify Single Purchase Document 'Cancel Only' Grid Outcomes
Navigate to the **Purchase > Orders > Requests for Quotation** backend data dashboard list. As highlighted on the real-time layout grid rows tracker, the record item **P00008** accurately reflects its updated state parameter via a clear grey **Cancelled** status badge. This ensures the document workflow has been safely terminated without extra database adjustments.
Backend Pipeline Flow: The core python override invokes the base super(PurchaseOrder,
self).button_cancel() framework logic. Since the configuration matches the default
fallback execution parameters, the record state is safely updated to 'cancel' directly
inside the database rows.
Execute Mass Cancellation via Purchase List Dropdown
Navigate to the **Purchase > Orders > Requests for Quotation** list view grid. Select multiple targeted rows simultaneously (e.g., P00007 and P00006) by ticking the left side checkbox controllers. Once selected, click on the **Actions** dropdown menu button inside the top center command banner. The module dynamically reveals three custom automated server options. Select the first mass option: **Cancel Only** to process simultaneous status changes.
Contextual Bulk Execution: This calls the custom server action action_purchase_order_cancel_only_bulk.
It checks permissions for the selected records and injects the context variable from_bulk_select=True
into the pipeline, executing the cancellation logic across all targeted IDs in a secure
transaction loop.
Verify Successful Mass Purchase Document Cancellation Results
After executing the batch cancellation operation from the list dropdown panel, the workspace automatically refreshes. As highlighted inside the data rows dashboard section, both targeted records (**P00007** and **P00006**) have had their status configurations updated to **Cancelled** simultaneously, verifying the robust speed and capability of the bulk processing engine.
Loop Processing Validation: The underlying server action script iterates over the
browse data collection matrix using an optimized loop. Because
from_bulk_select=True is safely injected inside the context pool, the backend
system circumvents individual document parameters to push clean transaction updates to the
SQL layer.
Configure Global Cancellation Behavior for Stock Pickings
Navigate to **Settings > Inventory**. Scroll down to find the custom **Cancel Configuration For Stock Picking** block section. Here, you can define the precise operational behavior of your warehouse inventory transfer reversals using the custom radio widget. Select the first option: **Cancel Only** to enforce standard log termination that marks shipments as cancelled without structural deletion. Click **Save** to apply the configuration.
System Param Mapping: This selection maps directly to the system config parameter key
se_cancel_all_orders.picking_cancel_type. When a stock picking cancel request
runs, the overridden python logic scans this key value to decide whether to stop at base
execution or advance into automated draft rollback loops.
Execute Single Inventory Transfer Cancellation via Form View Header
Navigate to **Inventory > Operations > Transfers** (or click through Delivery Orders) and open an active stock picking record (e.g., WH/OUT/00006). Click on the custom-overridden native **Cancel** button located in the top header action status bar panel. The framework will instantly check the logged-in user's privileges against the custom security access configuration parameters and initiate the background execution engine loop.
Security Interception Check: Clicking this button triggers the inherited python
override method action_cancel() inside the stock.picking model
extensions. If the current user profile lacks the group_cancel_stock_picking
access right mapping, the system instantly blocks execution and raises an explicit UserError
dialog box.
Verify Inventory Transfer 'Cancel Only' Workflow Lifecycle Ribbon
When the global configuration parameters for warehouse movements are left on the standard **Cancel Only** behavior flags, clicking the action control panel instantly intercepts current lifecycle paths. As visible on the top-right tracker status bar tracking nodes, the document's state dynamically switches to **Cancelled**, successfully restricting any further product packaging or outbound delivery staging operations.
Backend Pipeline Flow: The core backend python script invokes the base super(StockPicking,
self).action_cancel() framework parameters. Since the configuration parameters
dictate standard termination hooks without extra structural triggers, the row updates its
selection keys cleanly inside the warehouse management registries.
Verify Grid Refresh Results for Single Inventory Transfer Cancellations
Navigate to the **Inventory > Operations > Transfers** list view dashboard. As highlighted on the real-time operational data grid dashboard tracking rows, the record item **WH/OUT/00006** accurately reflects its updated state parameter via a clear red **Cancelled** status badge. This ensures total workflow transparency across warehouse tracking registers.
Workflow Thread Isolation: The background database transaction confirms that the script correctly processes separate logic threads. Because it handles a standalone active row id rather than an iterative multi-select bulk context collection array, the framework safely saves transaction states directly into the stock log layers.
Execute Mass Cancellation via Inventory Transfers List Dropdown
Navigate to the **Inventory > Operations > Transfers** list view dashboard grid. Select multiple targeted delivery transfers simultaneously (e.g., WH/OUT/00002 and WH/OUT/00007) by ticking the left side checkbox controllers. Click on the central **Actions** dropdown menu button inside the top center command banner. The module dynamically reveals the custom server actions panel. Select the first option: **Cancel Only** to trigger batch status modification hooks.
Contextual Bulk Transfer Interception: This calls the custom server action action_stock_picking_cancel_only_bulk.
The script validates permissions across the dataset array, iterates over each stock picking
ID, forces all linked move lines inside move_ids_without_package to a cancelled
status, and updates the main record state cleanly.
Verify Mass Inventory Transfer Cancellation Outcomes
After executing the mass cancel action from the list view action panel dropdown, the workspace instantly reloads the data grid. As highlighted in the tracker outline box rows, both warehouse documents (**WH/OUT/00002** and **WH/OUT/00007**) have had their operational statuses updated to a distinct red **Cancelled** tag synchronously, confirming successful batch intercept processing.
Transactional Stock Log Processing: The server action executes a clean iterative background commit sequence. It directly writes cancellation keys across the targeted datasets, forcing structural updates simultaneously to both the primary parent transfers and their underlying stock moves lines without breaking relational ledger balances.
Configure Global Cancellation Behavior for Invoices and Payments
Navigate to **Settings > Invoicing**. Scroll down to find the custom **Cancel Configuration For Invoice and Payment** container panel block. Here, you can control the dynamic rollback structures for both your financial models independently using the separate radio widgets. Select the first radio option **Cancel Only** for both **Invoice Cancel type** and **Payment Cancel type** properties. Click **Save** to apply.
Dual Param Mapping Rules: These selections write parameters directly into distinct
keys: se_cancel_all_orders.invoice_cancel_type and se_cancel_all_orders.payment_cancel_type.
The financial code engine reads these individual parameters synchronously whenever reversal
sequences are initiated in either model.
Execute Single Document Cancellation inside Customer Invoice Form View
Navigate to **Invoicing > Customers > Invoices** and open an active invoice or draft bill record. Click on the custom-overridden native **Cancel** button located in the top header action status bar panel. The system will instantly check the logged-in user's financial cancellation privileges against the security database and initiate the background processing loops.
Financial Security Validation: Clicking this triggers the inherited button_cancel()
override inside the account.move model extensions. If the active user profile
lacks the group_cancel_account_invoice access right mapping, the system
instantly blocks execution and raises an explicit UserError dialog box.
Verify Invoice 'Cancel Only' Document Status Ribbon Reversal
When the global configuration parameters for financial accounting operations are set to the standard **Cancel Only** behavior flags, clicking the action panel instantly processes document state modifications. As visible on the top-right tracking bar status nodes, the document's state dynamically shifts to **Cancelled**, indicating that the journal entries have been safely reversed and blocked without purging underlying transaction rows.
Backend Pipeline Flow: The core backend python script invokes the base super(AccountMove,
self).button_cancel() framework parameters. Since the configuration matches the
default fallback execution settings, the record state updates directly within the active
accounting register tables cleanly.
Verify Grid Refresh Results for Single Customer Invoice Cancellations
Navigate to the **Invoicing > Customers > Invoices** data dashboard grid. As highlighted on the real-time operational data grid dashboard tracking rows, the targeted invoice record accurately reflects its updated parameter via a distinct **Cancelled** status badge. This ensures total ledger audit trail transparency across financial registers.
Workflow Thread Isolation: The background database transaction confirms that the script correctly processes separate logic threads. Because it handles a standalone active account move record row rather than an iterative multi-select bulk collection array, the framework safely saves transaction states directly into the system layers.
Execute Mass Cancellation via Invoices List Actions Dropdown
Navigate to the **Invoicing > Customers > Invoices** list grid panel view. Select multiple targeted invoice rows simultaneously by ticking the left side checkbox controllers. Once selected, click on the **Actions** dropdown menu button inside the top center command banner. The framework dynamically reveals the custom automated server options. Select the first option: **Cancel Only** to trigger mass status modifications.
Contextual Bulk Invoice Interception: This triggers the custom server action action_invoice_cancel_only_bulk.
The script loops over the selected account moves collection array, injects from_bulk_select=True
to prevent configuration parameters loop bypasses, and safely executes native cancellation
parameters across the database array rows.
Verify Mass Customer Invoice Cancellation Outcomes
After processing the batch cancellation command from the list dropdown panel, the layout automatically updates. As highlighted inside the data rows dashboard section, both targeted journal entry records have had their status markers instantly updated to the grey **Cancelled** badge simultaneously, confirming that the accounting moves are successfully halted.
Batch Ledger Sync Operations: The server script iterates over the account move
collection array loop. Because from_bulk_select=True overrides individual
constraints inside the model layer, the engine runs secure adjustments across the active
datasets without causing balance sheet sequence out-of-sync blockages.
Verify Payment Cancellation Core System Rule Settings
Before executing reversals on transactional payments, double-check your parameter rules under **Settings > Invoicing**. In the **Cancel Configuration For Invoice and Payment** block panel, notice how the **Payment Cancel type** radio options let you define the exact database outcomes for customer or vendor payment registries separately from standard invoice configurations.
System Parameter Sync Check: The engine isolates payment logic via se_cancel_all_orders.payment_cancel_type.
This prevents customer cash collection registry modifications from forcing unexpected states
on parent invoices, keeping your ledger reports accurately aligned.
Execute Single Document Cancellation inside Payment Form View
Navigate to **Invoicing > Customers > Payments** (or Vendors > Payments) and open an active ledger transaction record (e.g., PBNK1/2026/00001). Click on the custom-overridden native **Cancel** button located in the top header action status bar panel. The system will instantly check the logged-in user's privileges against the custom security setup and initiate the background rollback engine.
Payment Interception Validation: Clicking this button triggers the inherited python
override method action_cancel() inside the account.payment model
extensions. If the active user profile lacks the group_cancel_account_invoice
access right mapping, the execution blocks instantly and raises an explicit
UserError.
Verify Payment 'Cancel Only' Lifecycle Status Bar Reversal
When the system config parameter for accounting transactions is matching the standard **Cancel Only** behavior flags, triggering the cancel tool updates the payment ledger. As visible on the top-right status ribbon nodes tracker, the document's state dynamically switches to **Canceled**, ensuring that cash collection or bank liquidity registers are successfully closed out.
Backend State Mapping Rules: The custom payment model override triggers super(AccountPayment,
self).action_cancel() directly. If single select parameters are found, it executes a
clean write instruction to set the record state key value directly to
'canceled' in the underlying database tables.
Verify Grid Refresh Results for Single Payment Cancellations
Navigate to the **Invoicing > Vendors > Payments** (or Customers > Payments) data dashboard grid. As highlighted on the real-time operational data grid dashboard tracking rows, the payment record item **PBNK1/2026/00001** accurately reflects its updated parameter via a distinct grey **Canceled** status badge, ensuring full operational visibility.
Workflow Thread Isolation: The background database transaction confirms that the script correctly processes separate logic threads. Because it handles a standalone active record row rather than an iterative multi-select bulk context collection array, the framework safely saves transaction states directly into the system layers.
Execute Mass Cancellation via Payments List Actions Dropdown
Navigate to the **Invoicing > Vendors > Payments** (or Customers > Payments) list grid view panel. Select multiple targeted payment records simultaneously by ticking the left side checkbox controllers (e.g., 2 selected). Click on the central **Actions** dropdown menu button inside the top center command banner. The framework dynamically reveals the custom automated server options. Select the first option: **Cancel Only** to trigger mass status modifications.
Contextual Bulk Payment Interception: This triggers the custom server action action_payment_cancel_only_bulk.
The script loops over the selected account payments collection array, injects from_bulk_select=True
to prevent configuration parameters loop bypasses, and safely executes native cancellation
parameters across the database array rows.
Verify Mass Payment Cancellation Outcomes inside List Dashboard
After executing the mass batch cancellation command from the list dropdown panel, the system dynamically reloads the current workspace views. As highlighted in the data rows grid dashboard section, both targeted ledger records have had their operational statuses instantly updated to the grey **Canceled** status tag simultaneously, confirming successful batch intercept processing.
Batch Payment Process Sync: The server script iterates over the account payment
collection array loop. Because from_bulk_select=True overrides individual
single form criteria, the framework safely applies cancellation updates across massive sets
of collection registries without throwing unexpected balance errors.
Execute Single Document Cancellation inside Customer Payments Form View
Navigate to **Invoicing > Customers > Payments** and open a newly created transaction record that is currently in **Draft** status. Click on the custom-overridden native **Cancel** button located inside the top header action status bar panel to test the interception rules of your payment cancellation matrix.
Access Rights Validation Rules: Clicking this button immediately routes the system
query through the action_cancel() extension block in the
account.payment model. If the active profile lacks group access, the
transaction layer blocks further operations and fires a clear exception dialogue alert
instantly.
Verify Single Customer Payment 'Cancel Only' Lifecycle Status Bar Reversal
Once the header cancellation tool is executed, the advanced processing engine intercepts the native payment lifecycle block. As visible on the top-right status ribbon tracking bar, the customer ledger transaction successfully switches directly to the **Canceled** state node, ensuring that all financial entries are cleanly locked and stopped from processing down the pipeline.
Backend State Mapping Rules: The custom payment model override triggers super(AccountPayment,
self).action_cancel() directly. If single select parameters are found, it executes a
clean write instruction to set the record state key value directly to
'canceled' in the underlying database tables.
Verify Grid Refresh Results for Single Customer Payment Cancellations
Navigate to the **Invoicing > Customers > Payments** dashboard grid. As highlighted on the real-time operational data grid dashboard tracking rows, the processed customer payment transaction row accurately displays its state parameter via a clear grey **Canceled** badge, ensuring complete financial trail tracking.
Workflow Thread Isolation: The background database transaction confirms that the script correctly processes separate logic threads. Because it handles a standalone active record row rather than an iterative multi-select bulk context collection array, the framework safely saves transaction states directly into the customer payment logs.
Execute Mass Cancellation via Customer Payments List Actions Dropdown
Navigate to the **Invoicing > Customers > Payments** list grid layout. Select multiple targeted draft records simultaneously by ticking the left-side checkbox controllers (e.g., 3 selected). Click on the central **Actions** dropdown menu button inside the top command bar dashboard banner. The module dynamically reveals the custom automated server options. Select **Cancel Only** to trigger rapid simultaneous status changes.
Contextual Bulk Payment Interception: This triggers the custom server action action_payment_cancel_only_bulk.
The script loops over the selected customer cash collection registry dataset, injects from_bulk_select=True
to bypass standalone single configuration limits, and safely updates states across the
database matrix cleanly.
Verify Mass Customer Payment Cancellation Outcomes inside List Dashboard
After executing the mass batch cancellation command from the list dropdown panel, the system dynamically reloads the current workspace views. As highlighted in the data rows grid dashboard section, all three targeted customer cash registries have had their operational statuses instantly updated to the grey **Canceled** status tag simultaneously, confirming successful batch execution.
Batch Payment Process Sync: The server script iterates over the account payment
collection array loop. Because from_bulk_select=True overrides individual
single form criteria, the framework safely applies cancellation updates across massive sets
of collection registries without throwing unexpected balance errors.
Key Features & Capabilities
Take full control over operational mistakes. Configure custom cancellation logic across different departments seamlessly without disrupting transaction workflows.
Sales Order Cancellation
Intercept standard sale flows. Choose whether cancelled quotations stay cancelled, jump straight back into Draft status, or purge instantly from the database view.
Purchase Flow Controls
Revert historical purchase orders or RFQs with ease. Trigger `button_draft()` workflows instantly or safely drop entries under strict access permissions.
Invoice Reversal Manager
Manage customer invoices and vendor bills state adjustments effortlessly. Safely run multi-record account move deletions without manual data breaks.
Stock Picking Operations
Automated warehouse stock moves clean-ups. Changes both delivery transfers and individual move lines to draft state dynamically to restore parameters.
Mass Action List Engine
Select hundreds of items instantly within list grid views. Trigger mass action options (`Cancel`, `Reset to Draft`, `Delete`) with a single click dropdown method.
Payment Cancellation
Handle wrong payment logs seamlessly. Direct interaction rules reset linked parameters back into cancelled or draft states keeping accounting registers aligned.
Need Any Help?
Installation, Configuration & Bug Fixing support from our experts.
© 2017 SprintERP Technologies. All Rights Reserved.
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Invoicing (account) • Purchase (purchase) • Sales (sale_management) |
| Lines of code | 581 |
| Technical Name |
se_cancel_all_orders |
| License | LGPL-3 |
| Website | https://sprinterp.com |
Please log in to comment on this module