Rework: use native res.partner.bank qr_code_method instead of report xpath
Register 'spayd' as a proper qr_code_method on res.partner.bank (same extension point account_qr_code_sepa uses for EPC/'sct_qr'), sequence=6 so it's tried before EPC (sequence 20). Eligibility now requires CZK/EUR currency AND a Czech customer country - previously the report template replaced EPC for *any* customer as long as the invoice currency was CZK or EUR, which would incorrectly show a Czech SPAYD code to e.g. a German customer being invoiced in EUR. account.move._generate_qr_code() already tries all registered methods in priority order and the existing div#qrcode block in account.report_invoice_document already renders whatever comes back, so this needs no report template override at all. - Move get_cz_qr_code_base64()/cz_to_iban() from account_move.py into res_partner_bank.py (as _get_qr_code_generation_params/_spayd_to_iban); fix bank_code not being zero-padded to 4 digits, which could throw off the mod-97 checksum for short local bank codes. Verified the checksum against the standard 19-2000145399/0800 -> CZ6508000000192000145399 reference example and general IBAN mod-97 validity. - Remove views/report_invoice.xml (nothing left to override) and the now unnecessary qrcode Python dependency (Odoo's own barcode report action renders the image; this module only supplies the SPAYD string). - Update README FAQ to match the new eligibility rule. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -46,14 +46,15 @@ If you are a **Slovak company** invoicing **Czech customers in EUR**:
|
||||
**Q: The QR code is not generated on the invoice**
|
||||
A: Make sure you have:
|
||||
- The **QR Codes** option enabled in the **Invoicing** app configuration
|
||||
- A bank account set up for your company with the **same currency as the invoice** (EUR or CZK)
|
||||
- The invoice's bank account (**Payment QR-code** section) is in **CZK or EUR**
|
||||
- The **customer's country is set to Czech Republic** - SPAYD is only offered
|
||||
automatically for Czech customers; for anyone else Odoo falls back to EPC
|
||||
- The invoice is **confirmed/posted**
|
||||

|
||||
|
||||
|
||||
**Q: The QR code is generated on the invoice, but scanning it results in an error**
|
||||
A: Check whether:
|
||||
- A bank account for the **invoice currency** (EUR or CZK) is set up for the company
|
||||
- The bank account number is in **valid format** (Czech format `123-456/0800` or IBAN)
|
||||
- The customer's banking app supports **SPAYD QR codes**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user