POS Table Letters
by Odoo DevHouse https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse$ 50.01
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Restaurant (pos_restaurant)
• Point of Sale (point_of_sale) • Discuss (mail) • Inventory (stock) • Invoicing (account) |
| Lines of code | 137 |
| Technical Name |
pos_table_letters |
| License | OPL-1 |
| Website | https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Restaurant (pos_restaurant)
• Point of Sale (point_of_sale) • Discuss (mail) • Inventory (stock) • Invoicing (account) |
| Lines of code | 137 |
| Technical Name |
pos_table_letters |
| License | OPL-1 |
| Website | https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse |
| Versions | 18.0 19.0 |
Table Letters - Alphanumeric Restaurant Tables
Use alphanumeric table names in Odoo POS Restaurant - A1, VIP, Terrace-B, Mezzanine, or any custom identifier. No more numeric-only restrictions. Perfect for restaurants, cafes, hotels, and event venues with unique table naming conventions.
In standard Odoo 18/19 POS Restaurant, the table number field is stored as an Integer - only numbers like 1, 2, 3⦠are allowed.
This creates significant limitations for real-world hospitality venues:
- Cannot use letter-based names like A1, B2, C3 (restaurant sections)
- No VIP rooms, Terrace, Balcony, Mezzanine - only numbers
- Cannot use non-numeric identifiers like "Bar", "Lounge", "Patio"
- Hotels cannot use room numbers like "101A", "Suite 200"
- Event venues cannot use named tables like "Bridal", "Head Table"
- Renaming tables is limited to integers only - frustrating for staff
This module overrides the table number field from Integer to Char (text). A safe, automatic migration converts all existing numeric table numbers to their text equivalents (1 -> "1", 2 -> "2") without any data loss. The POS floor screen is patched to support text-based table names, and the rename dialog accepts any alphanumeric input - no more numeric restrictions.
- Alphanumeric Table Names: Use any text - A1, VIP, Terrace-B, Mezzanine, Suite 200
- Zero-Data-Loss Migration: Automatic column conversion preserves all existing table numbers
- POS Floor Screen Updated: Rename dialog accepts text input (not just numbers)
- New Table Creation: New tables automatically get string-based identifiers
- Backend Form Support: Table number field rendered as text input (no number spinbox)
- Instant UI Update: Optimistic reactive update - tile renames instantly without page reload
- Safe & Idempotent: Migration runs only when needed; safe to install/uninstall
1. Before - Numeric Table Numbers Only
Standard Odoo POS Restaurant only allows numbers (1, 2, 3â¦) for table names.
2. After Installation - Alphanumeric Names Available
Use any text - A1, VIP, Terrace-B, Mezzanine, Suite 200, or custom identifiers.
3. Rename Dialog - Text Input (Not Number Popup)
Click rename on any table - the dialog accepts any text, not just numeric values.
4. Backend Form - Text Input (No Number Spinbox)
Floor plan configuration shows text input for table names, not integer spinbox.
Installation & Configuration
- Install the Module: Install through Odoo Apps or manually copy to addons path
- Dependencies: Requires
pos_restaurantmodule - Restart Server & Update: Restart Odoo and update the app list
- Automatic Migration: Module converts table number column from INTEGER to VARCHAR automatically
- No Manual Configuration: Module works immediately after installation
- Test: Open POS Restaurant -> Floor Screen -> Rename any table to a text name -> Works!
Step 1: Install Module
Install the module through Odoo Apps. The module automatically detects the existing
restaurant_table.table number column type and converts it from INTEGER to VARCHAR
using a safe CAST (1 -> "1", 2 -> "2") - no data loss.
Step 2: Open POS Restaurant Floor Screen
Go to Point of Sale -> Restaurant -> Floor Screen. You will see your existing tables with their numeric names displayed as text (e.g., "1", "2", "3").
Step 3: Rename a Table to Alphanumeric Name
Select a table tile. Click the "Rename" button. A dialog appears with a text input field. Enter any alphanumeric name:
- A1, B2, C3 - Section-based table names
- VIP, VIP1, VIP2 - VIP area tables
- Terrace-B, Balcony, Patio - Outdoor seating areas
- Mezzanine, Loft, Gallery - Upper-level seating
- Bar, Lounge, Counter - Bar or counter seating
- Bridal, Head Table, DJ - Event-specific tables
Step 4: Create New Tables
When adding new tables to a floor plan, you can assign any text name during creation. The backend form uses a text input (not a number spinbox), making it intuitive to add VIP sections, outdoor areas, or any custom table naming scheme.
Step 5: Use POS - Table Names Display Correctly
When using the POS, all tables display with their alphanumeric names. The floor plan tiles update instantly when renamed - no page reload required.
Pro Tip - Migration Safety
The module includes an idempotent migration - it checks the column type before making any changes.
If you've already converted to text manually, the module skips the migration. If the column is still integer,
it converts using USING table number::VARCHAR - a standard PostgreSQL cast that preserves all existing data.
You can install/uninstall safely without worry.
Compatibility Note
This module is specifically designed for Odoo 18 and 19 POS Restaurant.
The field override preserves the same field name (table number) so all existing
JavaScript references, views, and reports continue working - no additional patches needed.
Restaurants with Sections
Name tables by section: A1, A2, B1, B2 for different dining areas.
Hotels with Suites
Room service POS needs suite numbers like "101A", "Presidential Suite".
Event Venues
Named tables for events: "Head Table", "Bridal", "DJ Booth", "VIP Section".
Outdoor Seating
Terrace, Patio, Balcony, Garden - descriptive names instead of numbers.
VIP Areas
VIP Lounge, VIP1, VIP2, Executive Section - premium area identifiers.
Multi-Level Venues
Mezzanine, Loft, Gallery, Upper Deck - clear identification across floors.
Real-World Naming Flexibility
Name tables exactly as staff and customers recognize them - no more numeric limitations.
No Data Migration Hassle
Automatic, zero-data-loss conversion - existing tables keep their numbers as text.
Improved Staff Experience
Intuitive table names reduce confusion and speed up order assignment.
Zero Operational Disruption
Works with existing floor plans - no reconfiguration needed after installation.
Do You Need Assistance or Have a Feature Request?
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