@endsection
{{-- ═══════════════════════════════════════════════════════════════════════════
Step 4 — Product modals
Placed here (outside the flex layout, at body level via @stack('page_modals'))
so the Bootstrap backdrop covers the full viewport including the sidebar.
═══════════════════════════════════════════════════════════════════════════ --}}
@push('page_modals')
{{-- ── MODAL 1: Add Integrated ── --}}
Add Integrated
$
One time
$
Monthly
Additional Card Types
Please make your selection (optional)
Configurations
Use 24-hour format
{{-- Live cert test disproved "MULTIPLE" — ElapApiService::mapLocationType()'s
own docblock confirms both "M" and "MULTIPLE" were rejected as invalid and
the real multi-location code was never identified. Only "Single" is
offered here to avoid presenting a choice guaranteed to fail, same as the
Multi Terminal Status fix on the Standalone modal. --}}
Please make your selection (optional)
Token Zone cannot be changed without losing existing tokens once processing begins.
{{-- Live-verified: this is the "Source" cascade key from ELAP's
product/standalone/equipment/list catalog (sourceBillTo's object keys —
e.g. PN/PO/MO/STR/RTL), NOT masterRecord/posSource. Populated dynamically
from the selected Brand+Model's catalog entry — see turbo-app-create.js. --}}
{{-- Filtered client-side to the catalog entries for the selected Brand that
have a real (non-empty) industryApplication/sourceBillTo map — "stub" rows
like a bare "Vx520" with industryApplication: [] are excluded since they
have no valid combo and would dead-end the cascade. --}}
{{-- Populated from the selected catalog entry's industryApplication keys. --}}
{{-- Populated from industryApplication[industry] for the selected entry. --}}
{{-- Populated from the per-combo product/standalone/equipment lookup's
communicationWithPOS labels once Industry/Brand/Application/Source/
Model are all selected — see CONNECTION_METHOD_CODES below for the
label→code map ("WiFi"→"F" and "Ethernet"→"Q" are live-confirmed;
Dial/Broadband/Wireless are still flagged guesses). --}}
{{-- Populated from sourceBillTo[source] for the selected entry — real
ELAP codes ("MER"/"AGT"/"N/A"), shown with a friendly label. --}}
USD
EMV Reader/PIN Pad Selection
{{-- "N/A" (opt out of a separate reader) is always available. The remaining
options come from the per-combo product/standalone/equipment lookup's
emv[].sourceBillTo keys for the chosen terminal — see
populateEmvReaderCascade() in turbo-app-create.js. --}}
{{-- Populated from the per-combo lookup's emv[].brand. Normally exactly one
entry, so this stays fixed/read-only (matching the earlier screenshot);
if ELAP ever returns more than one entry it becomes a real pick list. --}}
{{-- Populated from the per-combo lookup's emv[].model — same caveat as Brand. --}}
Configurations
{{-- Live cert test (2026-07-10): "Y" and "N" (the previous guesses)
are both rejected ("configurations.customerReceipt value is
invalid") — confirmed via direct product-create calls on this
account. Only "A" and "C" actually succeed; ELAP's own label for
"C" isn't known, so it's shown as its raw code rather than
inventing another unconfirmed label. --}}
{{-- Live cert test (2026-07-10): ELAP rejected both "M" and "L" with
"PrintSize must match an accepted value: [S]" — an explicit enum
listing confirming "S" is the ONLY accepted value on this account,
same pattern as the Multi Terminal Status fix. Not offering a
choice guaranteed to fail. --}}
{{-- Populated from the per-combo lookup's batchCloseMethod labels
(AUTO→"A", MANUAL→"M" — both confirmed: "A" via a live sample,
and the closed [A, M] enum via an ELAP validation error). --}}
Use 24-hour format
{{-- Live cert test (2026-07-10) disproved "N/A" and "Y" — ELAP rejected both
with "configurations.multiTerminalStatus value is invalid". Only "N" is
currently accepted on this account (confirmed even with Manual batch
close); ELAP's Parent/Child codes ("P"/"C") exist but need account-level
multi-location setup this form doesn't collect, so they're not offered
here to avoid presenting a choice guaranteed to fail. --}}
Please make your selection (optional)
{{-- Disabled unless Industry = E-Commerce, mirroring the screenshot's
greyed-out state for a Retail selection. --}}
{{-- Greyed out/derived from the selected terminal (Brand+Model), not
independently user-editable — still sent as "Y" since a disabled
checkbox's initial checked state is the value. --}}
{{-- ── MODAL 3: Add WebPass ── --}}
Add WebPass
$
One time
$
Monthly
Additional Card Types
Please make your selection (optional)
Configurations
Use 24-hour format
{{-- Live cert test disproved "MULTIPLE" — see ElapApiService::mapLocationType()'s
docblock, same reasoning as the Integrated modal's identical fix above. --}}
{{-- ── MODAL: Attach Document (Step 6) ──
Placed here at body level so the Bootstrap backdrop covers the full viewport.
Same pattern as the Step 4 product modals above. --}}