🎯 Module Overview
The Sale Order Invoice from XLS module is a powerful tool designed to streamline the invoicing process by allowing users to upload XLS files containing sales order information. The module automatically processes the file and creates invoices for the specified sales orders with the corresponding product quantities.
✨ Key Features
- Upload XLS files containing sales orders, products, and quantities
- Automatically create invoices for multiple sale orders in bulk
- Modify delivered and invoiced quantities in sales orders
- Support for sales orders containing multiple products
- Set invoice dates retroactively when uploading the file
- Automatically update sales order status to "Fully Invoiced"
- Smart filtering: Automatically skips canceled deliveries
- Intelligent processing: Skips already invoiced sales orders
- Comprehensive error handling and validation
- User-friendly wizard interface
⚙️ Installation Guide
Prerequisites
- Odoo 18 Enterprise Edition installed and running
- Sales Management module (sale_management) installed
- Accounting module (account) installed
- Appropriate user permissions for Sales and Invoicing
Installation Steps
Obtain the module files and ensure you have the complete folder structure.
Copy the module folder to your Odoo addons directory:
In Odoo, navigate to Apps menu, click the three dots in the top right, and select Update Apps List.
Search for "Sale Order Invoice from XLS" in the Apps menu and click Install.
Once installed, the module will add a new menu item in the Sales module.
📋 XLS File Format Specification
The XLS file must contain specific columns in the correct order. Below is the required format:
Required Columns
| Column Name | Data Type | Description | Example |
|---|---|---|---|
| Sale Order | Text | The sale order reference number | SO001, SO002 |
| Product | Text | Product name or internal reference | Laptop, PROD-001 |
| Quantity | Number | Quantity to invoice | 5, 10.5 |
| Invoice Date | Date | Date for the invoice (optional) | 2025-01-15 |
Sample XLS File Structure
| Sale Order | Product | Quantity | Invoice Date | |||
|---|---|---|---|---|---|---|
| SO001 | Disk # pen | 3 # 10 | 2025-01-15 | |||
| SO002 | Chair | 5 | 2025-01-16 | |||
| SO003 | Mouse | 2 | 2025-01-16 | |||
- The column headers must match exactly (case-sensitive)
- Multiple products for the same sale order should be on separate by ( # )
- Date format should be YYYY-MM-DD or your Odoo's configured date format
- Sale Order reference must exist in your Odoo system
- Product Column must take internal reference for product
📖 User Guide
Step-by-Step Process
Create an Excel file (.xls or .xlsx) with the required columns: Sale Order, Product, Quantity, and Invoice Date. Ensure all data is accurate and matches your Odoo records.
Go to Sales → Upload Invoice XLS
Click on Upload Invoice XLS to open the invoice upload wizard.
Click on the Choose File button and select your prepared XLS file from your computer.
Click Process or Generate Invoices button. The module will:
- Validate all sale orders exist and are valid
- Check product availability and quantities
- Update delivered quantities if needed
- Create invoices for each sale order
- Set the specified invoice dates
- Update sale order statuses
After processing, you'll see a summary showing:
- Number of invoices created successfully
- Any errors or skipped orders with reasons
- List of generated invoice numbers
Navigate to Accounting → Customers → Invoices to review the newly created invoices.
🔧 Business Logic & Validation
Automatic Validations
- Sale Order Validation: Verifies that the sale order exists and is in a valid state
- Product Matching: Matches products by internal reference from the XLS file
- Quantity Verification: Ensures quantities are valid and within acceptable limits
- Delivery Status Check: Automatically excludes canceled deliveries from processing
- Invoice Status Check: Skips sale orders that are already fully invoiced
- Date Validation: Validates invoice dates are in correct format and reasonable
Processing Rules
- The module updates the "Delivered Quantity" field to match the quantity specified in the XLS file
- Invoices are created based on the delivered quantities
- Multiple products in one sale order are all processed and included in a single invoice
- Invoice dates can be set retroactively to match your records
- Sale orders are marked as "Fully Invoiced" after successful invoice creation
- The module respects Odoo's standard invoicing workflow and policies
🔍 Troubleshooting
Common Issues & Solutions
Solution: Verify that the sale order reference in your XLS file exactly matches the sale order number in Odoo (including any prefixes like "SO").
Solution: Check that the product name or internal reference in your XLS file matches exactly with the product in Odoo. Product names are case-sensitive.
Solution: Ensure quantities are positive numbers. Check for any text or special characters in the quantity column.
Solution: This is intentional behavior. The module skips already invoiced orders to prevent duplicate invoices. If you need to create additional invoices, do so manually or adjust the sale order first.
Solution: Use the date format YYYY-MM-DD (e.g., 2025-01-15) or configure your Excel to match Odoo's date format settings.
Solution: Check the error log or wizard message for specific reasons. Common causes include incorrect file format, missing required columns, or permission issues.
Best Practices
- Always keep a backup of your XLS file before processing
- Test with a small sample (2-3 orders) before bulk processing
- Verify sale orders are in "Sales Order" status before processing
- Ensure you have proper user permissions for both Sales and Accounting modules
- Review generated invoices immediately after processing
- Keep your XLS file format consistent across all uploads
- Document any custom modifications to the standard process
💻 Technical Information
Module Structure
Dependencies
- sale_management: Core sales functionality
- account: Invoicing and accounting features
Module Specifications
| Module Name | Sale Order Invoice from XLS |
| Version | 18.0 |
| Category | Sales |
| License | LGPL-3 |
| Author | Hozifa Abbas - Freelancer |
| Website | https://hozifa.odoo.com/ |
| Price | $79.00 USD |
🔒 Security & Permissions
Required User Permissions
- Sales: User must have access to Sales Orders (read and write)
- Invoicing: User must have permission to create and manage invoices
- Products: User should have read access to product catalog
Access Control
The module uses Odoo's standard security framework with access rights defined in ir.model.access.csv. Administrators can customize these permissions through the Settings menu.
❓ Frequently Asked Questions
A: Yes, you can specify any quantity in the XLS file. The module will update the delivered quantity and invoice accordingly.
A: The module will skip already invoiced orders automatically. However, if orders were only partially invoiced, it may create additional invoices.
A: Yes, the module respects Odoo's multi-company setup. Ensure you're in the correct company context before processing.
A: Yes, the module uses the currency configured in the sale order and customer settings.
A: The module requires specific columns, but you can modify the source code to add additional fields or change validation logic.
A: There's no hard limit, but processing very large files (1000+ records) may take time. Monitor server resources for optimal performance.
📞 Support & Contact
If you need assistance with the module or have questions not covered in this guide:
Hozifa Abbas - Freelancer
Website: https://hozifa.odoo.com/
If you encounter any bugs or issues, please provide:
- Odoo version and module version
- Steps to reproduce the issue
- Error messages or screenshots
- Sample XLS file (with sensitive data removed)
We welcome suggestions for improvements! Contact the author with your ideas for future enhancements.
📝 Version History
- Initial release for Odoo 18 Enterprise Edition
- Support for bulk invoice creation from XLS files
- Automatic quantity updates and validation
- Retroactive invoice dating capability
- Smart filtering for canceled and invoiced orders
- Multi-product sale order support
Please log in to comment on this module