Add PCM carrier-route postcard pick-and-send #16

Merged
westfarn merged 1 commits from feat/15-pcm-carrier-route-campaigns into main 2026-09-21 13:29:20 -07:00
Owner

Summary

Closes #15.
Mirrors westfarn/web_django_template#11.

  • Compose can target the postcard mailing list or find and select one or two USPS carrier routes by ZIP (optional radius).
  • Estimated cost is shown per route and for the selection (PCM design pricing, else PCM_POSTCARD_PRICE_* fallback).
  • Selected routes order through PCM POST /order/postcard/with-list-count — occupant addresses are not imported into Contacts.
  • Not official EDDM postage; PCM FirstClass/Standard purchased occupant lists on carrier routes.

Test plan

  • Campaign compose: mailing-list audience still quotes list size × per-piece cost.
  • Switch to USPS carrier routes, search ZIP 60540 (mocked or live PCM), pick 1–2 routes, confirm household count + estimated cost.
  • Saving without a selection is rejected; saving with a quote creates one contact-less Message and shows the route panel on the report.
  • Send places /order/postcard/with-list-count (not per-recipient /order/postcard).
  • uv run python manage.py test messaging.tests.CarrierRoutePostcardTests messaging.tests.PostcardDesignPickTests
## Summary Closes #15. Mirrors westfarn/web_django_template#11. - Compose can target the postcard mailing list **or** find and select one or two USPS carrier routes by ZIP (optional radius). - Estimated cost is shown per route and for the selection (PCM design pricing, else `PCM_POSTCARD_PRICE_*` fallback). - Selected routes order through PCM `POST /order/postcard/with-list-count` — occupant addresses are not imported into Contacts. - Not official EDDM postage; PCM FirstClass/Standard purchased occupant lists on carrier routes. ## Test plan - [ ] Campaign compose: mailing-list audience still quotes list size × per-piece cost. - [ ] Switch to USPS carrier routes, search ZIP 60540 (mocked or live PCM), pick 1–2 routes, confirm household count + estimated cost. - [ ] Saving without a selection is rejected; saving with a quote creates one contact-less Message and shows the route panel on the report. - [ ] Send places `/order/postcard/with-list-count` (not per-recipient `/order/postcard`). - [ ] `uv run python manage.py test messaging.tests.CarrierRoutePostcardTests messaging.tests.PostcardDesignPickTests`
westfarn added 1 commit 2026-09-21 13:27:23 -07:00
Add PCM carrier-route postcard pick-and-send (#15)
CI / test (pull_request) Successful in 24s
f7e3c05c59
## Summary
Closes #15.
- Let compose target mailing-list contacts or 1–2 USPS carrier routes, with household count and estimated cost shown before save.
- Place selected routes through PCM list-count orders instead of importing occupant addresses into Contacts.
westfarn merged commit 045e956011 into main 2026-09-21 13:29:20 -07:00
westfarn deleted branch feat/15-pcm-carrier-route-campaigns 2026-09-21 13:29:20 -07:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ai_ml_operations/monica_site#16