Swiss QR-Bill generator for ERPNext Sales Invoices. Automatically generates compliant QR-Bills for Swiss companies and customers according to Swiss Payment Standards 2.3.
- β Complete Swiss QR-Bill generation for Sales Invoices
- β Automatic QR reference generation with SCOR algorithm
- β QR-IBAN and standard IBAN support
- β Structured and unstructured message handling
- β Swiss Cross embedding in QR code
- β Print-ready payment slip format (A4 and perforated)
- β Multi-language support (DE, FR, IT, EN)
- β IBAN and QR-IBAN validation
- β Multi-currency support (CHF, EUR)
- β Zero external dependencies
# Ottieni l'app da GitHub
bench get-app https://github.com/Solede-SA/solede_qrbill.git
# Installa nel sito
bench --site [nome-sito] install-app solede_qrbill
# Applica modifiche
bench --site [nome-sito] migrateRequisiti: Frappe v15+, ERPNext v15+, Python 3.10+
Vai in Company β Seleziona la tua azienda e compila:
- IBAN: IBAN aziendale per ricevere pagamenti
- QR-IBAN: QR-IBAN specifico (se disponibile)
- BC Number: Bank Clearing number (numero di clearing bancario)
I campi QR-Bill sono disponibili automaticamente in Sales Invoice:
- QR IBAN: IBAN per questo specifico pagamento
- Creditor Reference: Riferimento strutturato (opzionale, auto-generato)
- Unstructured Message: Messaggio aggiuntivo per il cliente
- QR Reference: Auto-generato al submit della fattura
- Crea una Sales Invoice normalmente in ERPNext
- Compila i dati standard (Customer, Items, etc.)
- Submit la fattura
- Il sistema genera automaticamente:
- QR reference number (formato SCOR)
- QR code con Swiss Cross
- Payment slip pronto per la stampa
Il QR-Bill viene aggiunto automaticamente al print format della Sales Invoice:
- Apri una Sales Invoice submitted
- Clicca Print
- Seleziona il print format con QR-Bill
- Stampa o scarica PDF
Puoi personalizzare il QR-Bill modificando:
- QR-IBAN per fattura specifica
- Unstructured Message per note al cliente
- Amount (automatico dal totale fattura)
- Currency (CHF o EUR)
Il QR-Bill generato include:
- Importo: Totale fattura in CHF/EUR
- Valuta: CHF o EUR
- Scadenza: Due date della fattura
- Debitore: Dati cliente (nome, indirizzo)
- Creditore: Dati azienda (nome, indirizzo, IBAN)
- QR Reference: Numero riferimento SCOR (27 cifre)
- IBAN/QR-IBAN: Codice bancario
- Swiss Cross: Logo centrale per autenticitΓ
- Formato: Swiss Payment Standards 2.3 compliant
- Informazioni pagamento duplicate
- Sezione perforabile per distacco
- Layout conforme standard svizzero
Il sistema valida automaticamente:
- β Formato IBAN svizzero (CH)
- β Check digit verification
- β Lunghezza corretta (21 caratteri)
- β QR-IBAN specific validation (30000-31999)
- β SCOR algorithm check digit
- β Formato ISO 11649
- β Lunghezza reference (max 27 caratteri)
- β Currency support (CHF, EUR)
- β Amount formatting svizzero
- β Max 2 decimal places
- β Swiss address format
- β Postal code format (4 digits)
- β Required fields completeness
solede_qrbill/
βββ solede_qrbill/
β βββ qrbill/
β β βββ generator.py # QR code e reference generation
β β βββ validator.py # IBAN e reference validation
β β βββ utils.py # Helper functions
β β βββ overrides.py # Sales Invoice hooks
β β
β βββ public/
β β βββ css/
β β β βββ qr_bill_print.css # Print format styling
β β βββ js/
β β βββ sales_invoice.js # UI enhancements
β β
β βββ templates/ # Jinja templates for QR-Bill
β
βββ README.md
custom_qr_iban: QR-IBAN per questo pagamentocustom_creditor_reference: Riferimento strutturato SCORcustom_unstructured_message: Messaggio clientecustom_qr_reference: QR reference auto-generato (read-only)
custom_bc_number: Bank Clearing numbercustom_company_iban: IBAN aziendale
custom_customer_iban: IBAN cliente (se applicabile)
"QR-IBAN format not valid"
- Verifica che il QR-IBAN inizi con "CH" e abbia 21 caratteri
- Il BC number deve essere tra 30000-31999 per QR-IBAN
- Usa validator online: https://www.iban.com/
"QR reference not generated"
- Verifica che la fattura sia in stato "Submitted"
- Controlla che invoice_number sia compilato
- Verifica log:
logs/[sito]/error.log
"QR code non stampato"
- Verifica che custom CSS sia caricato
- Controlla print format settings
- Prova a rigenerare il print
# Abilita developer mode
bench --site [sito] set-config developer_mode 1
bench --site [sito] clear-cache
bench restart
# Test generazione QR reference
bench --site [sito] console
>>> from solede_qrbill.qrbill.generator import generate_qr_reference
>>> generate_qr_reference("INV-2025-0001")Contribuzioni benvenute! Leggi CONTRIBUTING.md per:
- Setup ambiente di sviluppo
- Convenzioni di codice (PEP 8, type hints)
- Testing guidelines
- Commit conventions
- Riferimenti Swiss Payment Standards
# Fork e clone
git clone https://github.com/[your-username]/solede_qrbill.git
cd solede_qrbill
# Setup pre-commit
pre-commit install
# Crea branch
git checkout -b feature/AmazingFeature
# Commit e PR
git commit -m "feat(qr-generator): description"
git push origin feature/AmazingFeature- Swiss Payment Standards
- SIX Group Documentation
- ISO 11649 Standard
- ERPNext Documentation
- Frappe Framework
GNU Affero General Public License v3.0 - vedi LICENSE
Copyright (C) 2024-2025 Solede SA and contributors
Puoi usare, modificare e distribuire liberamente. Se offri come servizio web/SaaS, DEVI condividere il codice sorgente modificato.
Sviluppato da Solede SA | GitHub Issues | info@solede.com