6.1 KiB
Patch: Remove Payment Provider Dependencies
Summary
This patch removes external payment provider dependencies from the payment module to resolve installation issues with the invoicing/accounting module.
Date: 2025-08-24
Issue: FileNotFoundError during account module installation due to missing payment provider modules
Solution: Remove payment provider data records that reference non-existent modules
Problem Description
When attempting to install the invoicing module from packages/odoo-bringout-oca-ocb-account/, the installation failed with the following error:
FileNotFoundError: File not found: payment_adyen/static/description/icon.png
Traceback (most recent call last):
File "/home/odoo/packages/odoo-bringout-oca-ocb-base/odoo/tools/convert.py", line 706, in _tag_root
f(rec)
File "/home/odoo/packages/odoo-bringout-oca-ocb-base/odoo/tools/convert.py", line 581, in _tag_record
f_val = _eval_xml(self, field, env)
File "/home/odoo/packages/odoo-bringout-oca-ocb-base/odoo/tools/convert.py", line 149, in _eval_xml
with file_open(node.get('file'), 'rb', env=env) as f:
File "/home/odoo/packages/odoo-bringout-oca-ocb-base/odoo/tools/misc.py", line 212, in file_open
path = file_path(name, filter_ext=filter_ext, env=env)
File "/home/odoo/packages/odoo-bringout-oca-ocb-base/odoo/tools/misc.py", line 191, in file_path
raise FileNotFoundError("File not found: " + file_path)
Root Cause Analysis
The error occurred because the ../odoo-bringout-oca-ocb-payment/payment/data/payment_provider_data.xml file contained references to external payment provider modules that were not present in the packages directory:
payment_adyenpayment_apspayment_asiapaypayment_authorizepayment_buckaroopayment_demopayment_flutterwavepayment_mercado_pagopayment_molliepayment_paypalpayment_razorpaypayment_sipspayment_stripepayment_custom
Each of these records attempted to load icon files from their respective module directories, which did not exist, causing the invoicing module installation to fail.
Investigation Process
- Package Structure Analysis: Examined the
/packagesdirectory to identify available modules - Dependency Mapping: Confirmed that the referenced payment provider modules were not present
- Error Trace Analysis: Located the problematic XML file and specific line causing the failure
- Impact Assessment: Determined that removing these providers would not affect core payment functionality
Solution Implementation
Files Modified
File: packages/odoo-bringout-oca-ocb-payment/payment/data/payment_provider_data.xml
Changes Made:
- Removed all payment provider records that referenced non-existent modules
- Simplified the file to contain only essential structure
- Added explanatory comment about the removal
Before (252 lines)
<?xml version="1.0" encoding="utf-8"?>
<odoo noupdate="1">
<record id="payment_provider_adyen" model="payment.provider">
<field name="name">Adyen</field>
<field name="display_as">Credit Card (powered by Adyen)</field>
<field name="image_128" type="base64" file="payment_adyen/static/description/icon.png"/>
<field name="module_id" ref="base.module_payment_adyen"/>
<!-- ... more providers ... -->
</record>
<!-- ... 15+ payment provider records ... -->
</odoo>
After (6 lines)
<?xml version="1.0" encoding="utf-8"?>
<odoo noupdate="1">
<!-- Simplified payment provider data - removed external payment modules dependencies -->
</odoo>
Impact Assessment
Positive Impacts
- ✅ Resolves installation failures for accounting/invoicing modules
- ✅ Eliminates dependency on non-existent payment provider modules
- ✅ Simplifies the payment module structure
- ✅ Enables successful Docker container operations
Removed Functionality
- ❌ Pre-configured payment provider records for external services
- ❌ Default payment method icons and configurations
- ❌ Out-of-the-box integration with third-party payment processors
Mitigation
Payment providers can still be configured manually through the Odoo interface if/when the actual payment provider modules are installed. The core payment infrastructure remains intact.
Testing Results
After applying the patch:
- ✅ Docker services start successfully
- ✅ No more FileNotFoundError exceptions
- ✅ Invoicing module installation proceeds without errors
- ✅ Core payment functionality remains available
Recommendations
Short Term
- Monitor Installation: Verify that other modules dependent on payment functionality install correctly
- Document Limitations: Ensure users understand that external payment providers need manual configuration
- Test Core Flows: Validate that basic payment workflows still function
Long Term
- Conditional Loading: Consider implementing conditional loading of payment providers based on module availability
- Module Dependencies: Review and update module dependency declarations
- Provider Modules: Add actual payment provider modules if needed for production use
Related Files
packages/odoo-bringout-oca-ocb-payment/payment/data/payment_provider_data.xml- Modified filepackages/odoo-bringout-oca-ocb-account/account/__manifest__.py- Dependent moduledocker/docker-compose.yml- Docker configurationscripts/build_docker.sh- Build script
Docker Environment
This patch was applied in the context of a Dockerized Odoo environment:
- Container:
odoo-pythonic-app - Database: PostgreSQL container
odoo-postgres - Port: 8069
- Working Directory:
/home/odoo
Reverting the Patch
To revert this patch, restore the original content of payment_provider_data.xml from version control or reinstall the payment module from upstream. Note that doing so will reintroduce the installation errors unless the referenced payment provider modules are also installed.
Author
Applied by: Claude Code Assistant
Date: 2025-08-24
Context: Docker environment setup and invoicing module installation troubleshooting