From b2108fa1edbae3c7ebadce674679ea29c2f00979 Mon Sep 17 00:00:00 2001 From: Daniel Covington Date: Fri, 21 Aug 2026 12:30:52 -0400 Subject: [PATCH] Move blue envelope questions off the purple screen onto their own Purple and blue envelope details were getting mixed up on both the order form and the confirmation email. The purple screen no longer asks about blue envelopes at all; the blue screen now owns the provider question and always shows its permit questions (not just when buying from KCI), and the order-confirmation email keeps purple and blue answers in separate sections. Also drop the blue page's visibleIf tied to the purple envelope stock choice - it was hiding all blue questions for anyone using their own purple stock, which is unrelated to blue envelope needs. Co-Authored-By: Claude Sonnet 5 --- app/models/OrderDetailsAnswersMapper.asp | 6 ++-- app/models/OrderMailer.asp | 18 +++++----- app/views/Order/continue.asp | 44 ++++++++++-------------- 3 files changed, 29 insertions(+), 39 deletions(-) diff --git a/app/models/OrderDetailsAnswersMapper.asp b/app/models/OrderDetailsAnswersMapper.asp index 3d69afc..ef83de7 100644 --- a/app/models/OrderDetailsAnswersMapper.asp +++ b/app/models/OrderDetailsAnswersMapper.asp @@ -26,7 +26,6 @@ Function ValidateOrderDetailsAnswers(answers) RequireBoolean errors, answers, "MailingNonprofitAuthCodeUnknown" RequireBoolean errors, answers, "PurpleWantsQuote" - RequireBoolean errors, answers, "PurpleWantsBlueEnvelopes" RequireBoolean errors, answers, "PurpleTrackMIBallot" RequireBoolean errors, answers, "BlueWantsQuote" RequireBoolean errors, answers, "BluePrintPermit" @@ -59,9 +58,6 @@ Sub MapOrderDetailsAnswers(ByRef model, answers) model.PurpleWantsQuote = DictValue(answers, "PurpleWantsQuote") model.PurpleEnvelopeStock = DictValue(answers, "PurpleEnvelopeStock") model.PurplePrintOption = DictValue(answers, "PurplePrintOption") - model.PurpleWantsBlueEnvelopes = DictValue(answers, "PurpleWantsBlueEnvelopes") - model.PurpleBlueProvider = DictValue(answers, "PurpleBlueProvider") - model.PurpleBlueProviderOther = DictValue(answers, "PurpleBlueProviderOther") model.PurplePrintStyle = DictValue(answers, "PurplePrintStyle") model.PurpleColorCodingBy = DictValue(answers, "PurpleColorCodingBy") model.PurplePrecinctCount = DictValue(answers, "PurplePrecinctCount") @@ -72,6 +68,8 @@ Sub MapOrderDetailsAnswers(ByRef model, answers) ' Blue envelope model.BlueWantsQuote = DictValue(answers, "BlueWantsQuote") + model.PurpleBlueProvider = DictValue(answers, "PurpleBlueProvider") + model.PurpleBlueProviderOther = DictValue(answers, "PurpleBlueProviderOther") model.BluePrintPermit = DictValue(answers, "BluePrintPermit") model.BluePermitOwnership = DictValue(answers, "BluePermitOwnership") model.BlueHasNonprofitStatus = DictValue(answers, "BlueHasNonprofitStatus") diff --git a/app/models/OrderMailer.asp b/app/models/OrderMailer.asp index 4d7d7f2..c94b8bd 100644 --- a/app/models/OrderMailer.asp +++ b/app/models/OrderMailer.asp @@ -71,18 +71,10 @@ Class OrderMailer_Class EmailRow("Phone", model.Phone)) If IsTrue(model.PurpleWantsQuote) Then - Dim purpleBlueProviderLine - purpleBlueProviderLine = LabelPurpleBlueProvider(model.PurpleBlueProvider) - If purpleBlueProviderLine = "Other" And Len(Trim(model.PurpleBlueProviderOther & "")) > 0 Then - purpleBlueProviderLine = model.PurpleBlueProviderOther - End If - html = html & EmailSection("Purple Ballot Envelopes", _ EmailRow("Permanent ballot list count", model.PurplePermanentBallotListCount) & _ EmailRow("Envelope stock", LabelEnvelopeStock(model.PurpleEnvelopeStock)) & _ EmailRow("Print option", LabelPrintOption(model.PurplePrintOption)) & _ - EmailRow("Also wants KCI blue envelopes", EmailYesNo(model.PurpleWantsBlueEnvelopes)) & _ - EmailRow("Blue envelope provider", purpleBlueProviderLine) & _ EmailRow("Print style", LabelPrintStyle(model.PurplePrintStyle)) & _ EmailRow("Color coding by", LabelColorCodingBy(model.PurpleColorCodingBy)) & _ EmailRow("Number of precincts", model.PurplePrecinctCount) & _ @@ -91,7 +83,13 @@ Class OrderMailer_Class EmailRow("Extra envelopes requested", model.PurpleExtraEnvelopeQty)) End If - If IsTrue(model.BlueWantsQuote) Then + If Not IsNull(model.BlueWantsQuote) Then + Dim blueProviderLine + blueProviderLine = LabelPurpleBlueProvider(model.PurpleBlueProvider) + If blueProviderLine = "Other" And Len(Trim(model.PurpleBlueProviderOther & "")) > 0 Then + blueProviderLine = model.PurpleBlueProviderOther + End If + ' City/permit number are collected for an own-organization permit - a permit ' lookup can't be done from the nonprofit authorization code alone. Dim bluePermitLine @@ -103,6 +101,8 @@ Class OrderMailer_Class End If html = html & EmailSection("Blue AV Envelopes", _ + EmailRow("Purchasing blue envelopes from KCI", EmailYesNo(model.BlueWantsQuote)) & _ + EmailRow("Blue envelope provider", blueProviderLine) & _ EmailRow("Print permit", EmailYesNo(model.BluePrintPermit)) & _ EmailRow("Permit ownership", LabelPermitOwnership(model.BluePermitOwnership)) & _ EmailRow("Confirmed nonprofit status with USPS", LabelNonprofitStatus(model.BlueHasNonprofitStatus)) & _ diff --git a/app/views/Order/continue.asp b/app/views/Order/continue.asp index 8462796..370ae42 100644 --- a/app/views/Order/continue.asp +++ b/app/views/Order/continue.asp @@ -124,30 +124,6 @@ { value: "PermitOnly", text: "State of Michigan permit only" } ] }, - { - type: "boolean", name: "PurpleWantsBlueEnvelopes", labelTrue: "Yes", labelFalse: "No", - title: "Are you planning to use KCI blue envelopes?", - visibleIf: "{PurplePrintOption} = 'AddressesAndPermit'", - isRequired: true - }, - { - type: "radiogroup", name: "PurpleBlueProvider", - title: "Who is your blue envelope provider?", - visibleIf: "{PurpleWantsBlueEnvelopes} = false", - isRequired: true, - choices: [ - { value: "ElectionSource", text: "ElectionSource" }, - { value: "PSI", text: "PSI" }, - { value: "Spectrum", text: "Spectrum" }, - { value: "Other", text: "Other" } - ] - }, - { - type: "text", name: "PurpleBlueProviderOther", - title: "Please specify your blue envelope provider", - visibleIf: "{PurpleBlueProvider} = 'Other'", - isRequired: true - }, { type: "radiogroup", name: "PurplePrintStyle", title: "Would you like your envelopes printed with color coding or black ink only?", @@ -209,17 +185,33 @@ { name: "blueEnvelope", title: "3. Blue AV Envelope Order Form", - visibleIf: "{PurpleEnvelopeStock} <> 'OwnStock'", elements: [ { type: "boolean", name: "BlueWantsQuote", labelTrue: "Yes", labelFalse: "No", title: "Would you like to purchase blue AV envelopes from KCI?", isRequired: true }, + { + type: "radiogroup", name: "PurpleBlueProvider", + title: "Who is your blue envelope provider?", + visibleIf: "{BlueWantsQuote} = false", + isRequired: true, + choices: [ + { value: "ElectionSource", text: "ElectionSource" }, + { value: "PSI", text: "PSI" }, + { value: "Spectrum", text: "Spectrum" }, + { value: "Other", text: "Other" } + ] + }, + { + type: "text", name: "PurpleBlueProviderOther", + title: "Please specify your blue envelope provider", + visibleIf: "{PurpleBlueProvider} = 'Other'", + isRequired: true + }, { type: "boolean", name: "BluePrintPermit", labelTrue: "Yes", labelFalse: "No", title: "Would you like KCI to print a permit on your blue envelope?", - visibleIf: "{BlueWantsQuote} = true", isRequired: true }, {