evilguy4000
1b5d019560
feat(admin): persist test recipient and send invoice email template tests
...
Add Settings.mail_test_recipient (migration 142) and wire Admin → Email Configuration to save, load, and prefill the SMTP test recipient field.
Extract invoice email PDF/HTML building into _build_invoice_email_payload for reuse. New send_invoice_template_test_email sends a real message with subject "Invoice template test: …", reusing production rendering and PDF attachment, without updating invoice status or creating InvoiceEmail records.
Add POST /admin/email-templates/<id>/send-test (optional recipient override, optional invoice_id) and Send test email UI on template view and edit pages. Extend smoke and unit tests.
2026-03-27 06:39:16 +01:00
..
2026-03-16 15:15:21 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-16 15:15:21 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-16 15:15:21 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-26 14:51:55 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-16 15:15:21 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-27 06:38:47 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-27 06:39:16 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-26 14:52:06 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-06 15:44:35 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-16 15:15:21 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00
2026-03-15 10:51:52 +01:00