| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Inventory (stock)
• Sales (sale_management) • Discuss (mail) • Invoicing (account) |
| Lines of code | 871 |
| Technical Name |
gb_click_collect_bopis_workflow |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Inventory (stock)
• Sales (sale_management) • Discuss (mail) • Invoicing (account) |
| Lines of code | 871 |
| Technical Name |
gb_click_collect_bopis_workflow |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
Click-and-Collect / BOPIS
Reserve online, pick in store, collection-ready notify and ID check for BOPIS
Click-and-collect is now table stakes for UK retail, but Odoo has no purpose-built BOPIS process — so teams bolt it onto generic deliveries and end up with no slot control, no collection-ready notification and no audit trail. This module turns any sale order into a trackable click-and-collect order with a proper lifecycle: customers reserve online, store staff move the order through picking and ready, the customer is emailed the moment it is collection-ready, and an optional ID check is enforced before handover. Per-store collection points enforce daily capacity and opening hours, booked time slots smooth counter traffic, and no-show plus auto-expiry handling releases staged stock without manual chasing. Lead-time and no-show reporting round it out. Omnichannel retailers running Odoo eCommerce alongside physical stores get a reliable, audited BOPIS workflow their customers and store staff can trust.
Key Features
Per-Store Collection Points
cc.collection.point models each store with a source warehouse, opening and closing times, a daily_capacity and a ready_expiry_days. remaining_capacity counts active orders for a date so a point is never overbooked, and a unique-code constraint keeps points clean per company.
Full Collection Lifecycle
cc.collection.order walks reserved, picking, ready, collected, no-show and cancelled states via action_start_picking, action_mark_ready, action_collect and more — every transition tracked on chatter, with an auto-generated reference and a short collection_code the customer quotes at the counter.
Collection-Ready Notification
action_mark_ready stamps ready_date, sets an expiry_date from the point's expiry days, and _send_ready_notification fires the cc_ready mail template to the customer's email — so shoppers know exactly when to come in and notify_sent records it.
Enforced ID Check at Handover
When a point has requires_id_check set, the order inherits it and action_collect refuses to complete unless id_verified is true. action_verify_id captures the document type, reference and verifier, enforcing proof of identity before goods leave the counter.
Time-Slot Booking with Capacity Guard
cc.collection.slot defines dated time windows with a capacity; _compute_booked derives booked_count, available and is_full, the order's slot domain hides full slots, and book() refuses an overbooked slot — preventing counter queues and overcrowding.
No-Show and Auto-Expiry
action_no_show marks uncollected orders, and the cron_expire_ready_orders scheduled job auto-flags ready orders past their expiry_date as no-show with a chatter note — freeing staged stock and slot capacity without manual chasing.
Sale Order Integration
sale.order gains a Click & Collect flag and a collection point; action_create_collection_order copies the order lines into a new collection order (blocking duplicate active ones), so any quotation becomes a trackable in-store pickup in one click.
Lead-Time Reporting and Handover Wizard
Each order computes lead_time_hours from creation to ready for service-level reporting, and the cc.collection.wizard drives counter handover — capturing the ID details and collector name, verifying, and completing the collection in a single guided step.
Use Cases
Screenshots
Complete Collection
Collection Orders
Collection Points
Why Choose This Module
A complete in-store collection workflow that turns any sale order into a trackable click-and-collect order. Customers reserve online, store staff pick and stage the goods, the customer is notified the order is collection-ready, and an optional ID / proof check is enforced before handover — with a full audit trail at every step.
Specifications
- Compatible: Odoo 18.0 / 19.0
- License: LGPL-3
- Languages: 35+
- Author: Baris Genc
- Dependencies: sale_management, stock
- Support: odoo@gencbaris.com
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module