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-01-04 04:34:56 +01:00
2026-01-04 04:34:56 +01:00
2026-01-04 04:34:56 +01:00
2026-01-02 07:50:04 +01:00
2026-01-02 07:50:04 +01:00
2026-01-02 07:50:04 +01:00
2026-01-04 04:34:56 +01:00
2026-01-01 09:15:31 +01:00
2026-01-01 09:15:31 +01:00
2026-01-01 09:15:31 +01:00
2026-01-04 04:34:56 +01:00
2026-01-04 04:34:52 +01:00
2026-01-04 04:34:56 +01:00
2026-01-01 09:15:31 +01:00
2026-01-01 09:15:31 +01:00
2026-01-01 09:15:31 +01:00
2026-01-01 09:15:31 +01:00
2026-01-01 09:15:31 +01:00
2026-01-04 04:34:56 +01:00
2026-01-01 09:15:31 +01:00
2026-01-04 04:34:56 +01:00
2026-01-01 09:15:31 +01:00
2026-01-01 09:15:31 +01:00
2026-01-04 04:34:52 +01:00
2026-01-01 09:15:31 +01:00
2026-01-01 09:15:31 +01:00
2026-01-04 04:34:52 +01:00
2026-01-01 09:15:31 +01:00
2026-01-04 04:34:52 +01:00
2026-01-01 09:15:31 +01:00
2026-01-02 17:19:19 +01:00
2026-01-04 04:34:52 +01:00
2026-01-01 09:15:31 +01:00
2026-01-01 09:15:31 +01:00
2026-01-04 04:34:52 +01:00
2026-01-02 17:19:19 +01:00
2026-01-02 15:53:51 +01:00
2026-01-02 15:53:51 +01:00
2026-01-02 07:50:04 +01:00
2026-01-04 04:34:56 +01:00
2026-01-02 17:12:18 +01:00
2026-01-01 09:15:31 +01:00
2026-01-01 09:15:31 +01:00
2026-01-01 09:15:31 +01:00
2026-01-01 09:15:31 +01:00
2026-01-02 19:05:46 +01:00
2026-01-05 16:23:30 +01:00
2026-01-04 04:34:56 +01:00
2026-01-04 04:34:56 +01:00
2026-01-05 17:00:44 +01:00
2026-01-07 13:18:40 +01:00
2026-01-01 09:15:31 +01:00
2026-01-13 21:57:37 +01:00
2026-01-02 15:53:51 +01:00
2026-01-02 07:50:04 +01:00
2026-01-01 09:15:31 +01:00
2026-01-01 09:15:31 +01:00
2026-01-01 09:15:31 +01:00
2026-01-02 15:53:51 +01:00
2026-01-03 07:00:30 +01:00
2026-01-04 04:34:48 +01:00
2026-01-04 04:34:52 +01:00
2026-01-04 06:23:39 +01:00
2026-01-20 21:12:51 +01:00
2026-01-05 16:23:30 +01:00
2026-01-05 20:50:24 +01:00
2026-01-05 22:07:50 +01:00
2026-01-05 22:07:50 +01:00
2026-01-05 22:07:50 +01:00
2026-01-09 11:43:42 +01:00
2026-01-11 08:37:59 +01:00
2026-01-13 13:33:55 +01:00
2026-01-14 21:15:18 +01:00
2026-01-21 14:20:36 +01:00
2026-01-21 15:11:12 +01:00
2026-01-21 15:13:26 +01:00
2026-01-21 15:13:26 +01:00
2026-01-22 13:36:04 +01:00
2026-01-22 20:17:04 +01:00
2026-01-25 08:59:47 +01:00
2026-01-31 07:48:09 +01:00
2026-02-02 19:20:48 +01:00
2026-02-02 19:18:28 +01:00
2026-02-07 08:22:34 +01:00
2026-02-07 08:20:08 +01:00
2026-02-08 11:11:03 +01:00
2026-02-08 14:00:30 +01:00
2026-02-09 20:22:08 +01:00
2026-02-13 20:57:54 +01:00
2026-02-13 20:56:07 +01:00
2026-02-13 20:56:07 +01:00
2026-02-16 07:12:57 +01:00
2026-02-16 07:36:49 +01:00
2026-02-28 17:28:54 +01:00
2026-02-16 21:27:58 +01:00
2026-03-02 20:55:02 +01:00
2026-03-02 20:55:02 +01:00
2026-03-06 15:44:35 +01:00
2026-03-08 06:21:20 +01:00
2026-03-09 20:33:48 +01:00
2026-03-11 08:59:13 +01:00
2026-03-11 17:39:28 +01:00
2026-03-11 17:57:52 +01:00
2026-03-11 17:57:52 +01:00
2026-03-16 15:15:16 +01:00
2026-03-16 15:15:16 +01:00
2026-03-26 14:51:55 +01:00
2026-03-27 06:39:16 +01:00
2026-01-02 07:50:04 +01:00
2026-01-02 15:53:51 +01:00
2026-01-02 17:19:19 +01:00