The 24-Officer Patrolcams Package gives mid-size police departments a complete body camera system with twenty-four body cameras, docking/charging stations, a professional workstation computer, monitor, automatic downloading software, and two 40 TB 4-Bay RAID NAS devices, included at no extra charge — without required monthly cloud storage fees.
A complete turnkey package for mid-size agencies that need body cameras, docking, workstation review, automatic downloads, and two 40 TB 4-Bay RAID NAS devices without a required recurring cloud contract.
The 24-Officer Patrolcams Package is built for agencies that need a serious body camera rollout with two 40 TB 4-Bay RAID NAS devices and no required monthly cloud storage contract.
For qualifying government agencies, the written quote can show the calculated amount due this budget year and the calculated amount due next budget year.
Purchasing sees the full package total clearly, with the two-budget-year payment schedule shown separately.
This package includes two 40 TB 4-Bay RAID NAS devices and avoids required monthly cloud fees, annual software fees, and long-term platform contracts.
The quote is prepared for department review, city or county approval, purchase-order processing, and budget documentation.
This package gives mid-size agencies a complete path to body camera recording, docking, downloading, review, and storage while keeping the evidence system on premises with two 40 TB 4-Bay RAID NAS devices.
Includes twenty-four Martel Crime Cam body cameras, mounting clips, docking ports with USB charger, workstation computer, monitor, automatic downloading software, and two 40 TB 4-Bay RAID NAS devices.
Departments keep evidence storage local with two 40 TB 4-Bay RAID NAS devices instead of being forced into a recurring cloud-storage plan.
Martel automatic downloading software places officer body camera photos and video into the correct folders, reducing manual copying and pasting.
A strong fit for agencies that want body cameras and local storage without monthly cloud fees, annual software licenses, or long-term platform contracts.
For qualifying government agencies with approved purchase-order/payment terms, Martel can prepare a written quote showing the total package price and the two-budget-year department payment schedule.
Choose the right police camera package for your agency size, storage needs, vehicle coverage, and purchasing timeline.
Add patrol vehicle video coverage for agencies that need both body cameras and in-car evidence recording.
Choose the quote format your agency needs. Martel can prepare a standard full purchase quote or a two-budget-year department quote for review, approval, and purchase-order processing.
These answers help law enforcement buyers understand Patrolcams pricing, budget-year quotes, local storage, ownership, and purchase order approval.
Yes. For qualifying government agencies with approved purchase-order/payment terms, Martel can prepare the quote with the calculated amount due this budget year and the calculated amount due next budget year.
No. It is not consumer financing and not a loan. It is a department payment-term quote for qualifying government agencies. No financing charges are added.
No. This package includes two 40 TB 4-Bay RAID NAS devices and avoids required monthly cloud storage fees, annual software license fees, and long-term platform contracts.
Yes. Use the quote form to request a standard full purchase quote or a two-budget-year department quote for review, approval, and purchase-order processing.
Yes. Patrolcams package quote requests use free shipping. California sales tax is estimated when California is selected and final tax is verified before the official quote or invoice.
Request a written quote showing the full package price, the two-budget-year department payment option, estimated California tax when applicable, two 40 TB 4-Bay RAID NAS devices, free shipping, and the purchase-order details your agency needs for approval.
Start My 24-Officer Written Quote25) n = 25; return n; } function dollarsFromCents(cents) { return new Intl.NumberFormat("en-US", { style: "currency", currency: "USD" }).format(Number(cents 0) / 100); } function normalizeState(v) { return String(v "").trim().toLowerCase(); } function isCaliforniaState(v) { var st = normalizeState(v); return st === "ca" st === "california"; } function getQuotePlan() { var form = byId("pc24QuoteForm"); var selected = form ? form.querySelector('input[name="quote_plan"]:checked') : null; return selected ? selected.value : "two_year_budget"; } function quotePlanLabel(plan) { return plan === "standard_purchase" ? "Standard Full Purchase Quote" : "Two-Budget-Year Department Quote"; } function calculateQuoteTotals(n) { var equipmentCents = UNIT_PRICE_CENTS * n; var taxApplies = isCaliforniaState(val("pc24_ship_state")); var taxCents = taxApplies ? Math.round((equipmentCents * CA_TAX_RATE_BPS) / 10000) : 0; var totalCents = equipmentCents + taxCents; var yearOneCents = Math.ceil(totalCents / 2); var yearTwoCents = totalCents - yearOneCents; return { equipmentCents: equipmentCents, taxApplies: taxApplies, taxCents: taxCents, totalCents: totalCents, yearOneCents: yearOneCents, yearTwoCents: yearTwoCents }; } function status(type, msg) { var el = byId("pc24Status"); if (!el) return; if (!msg) { el.style.display = "none"; el.innerHTML = " "; return; } el.style.display = "block"; el.innerHTML = msg; if (type === "error") { el.style.background = "#fff1f2"; el.style.border = "1px solid #fda4af"; el.style.color = "#7f1d1d"; } else { el.style.background = "#ecfdf5"; el.style.border = "1px solid #86efac"; el.style.color = "#064e3b"; } } function updateTotal() { var n = qty(val("pc24_quantity")); var plan = getQuotePlan(); var isTwoYear = plan !== "standard_purchase"; var totals = calculateQuoteTotals(n); var qtyLabel = n === 1 ? "1 twenty-four-officer package" : String(n) + " twenty-four-officer packages"; var totalDisplay = dollarsFromCents(totals.totalCents); var yearOneDisplay = isTwoYear ? dollarsFromCents(totals.yearOneCents) : totalDisplay; var yearTwoDisplay = isTwoYear ? dollarsFromCents(totals.yearTwoCents) : "$0.00"; setText("pc24HeroTotal", totalDisplay); setText("pc24HeroThis", yearOneDisplay); setText("pc24HeroYearOne", yearOneDisplay); setText("pc24HeroYearTwo", yearTwoDisplay); setText("pc24SideTotal", totalDisplay); setText("pc24SideSmall", qtyLabel + " selected"); setText("pc24BannerTotal", totalDisplay); setText("pc24BannerYearOne", yearOneDisplay); setText("pc24BannerYearTwo", yearTwoDisplay); setText("pc24Total", totalDisplay); setText("pc24QtyText", String(n)); setText("pc24YearOneSummaryText", yearOneDisplay); setText("pc24YearTwoSummaryText", yearTwoDisplay); var taxRow = byId("pc24TaxSummaryRow"); if (taxRow) taxRow.style.display = totals.taxApplies ? "block" : "none"; setText("pc24TaxSummaryText", totals.taxApplies ? dollarsFromCents(totals.taxCents) + " estimated at 7.25%" : "$0.00"); if (isTwoYear) { setHTML("pc24HeroSplitText", "Two-Budget-Year Department Quote: " + yearOneDisplay + " due this budget year + " + yearTwoDisplay + " due next budget year. Available for qualifying government agencies with approved purchase-order/payment terms. No financing charges. Not a loan."); setHTML("pc24SideYellowText", "Two-Budget-Year Quote Available" + yearOneDisplay + " due this budget year + " + yearTwoDisplay + " due next budget year. No financing charges. Not a loan."); } else { setHTML("pc24HeroSplitText", "Standard Full Purchase Quote: " + totalDisplay + " total calculated quote for " + qtyLabel + ". Shipping is free. California tax is estimated when applicable."); setHTML("pc24SideYellowText", "Standard Full Purchase Quote Selected" + totalDisplay + " total calculated quote. No next-budget-year balance shown."); } } function toggleBilling() { var same = byId("pc24_billing_same"); var section = byId("pc24BillingSection"); if (!section) return; section.style.display = same && same.checked ? "none" : "block"; } function validate() { var same = byId("pc24_billing_same"); if (!val("pc24_name")) return "Please enter Full Name."; if (!val("pc24_agency")) return "Please enter Agency / Department."; if (!val("pc24_email")) return "Please enter Business Email."; if (!isEmail(val("pc24_email"))) return "Please enter a valid Business Email."; if (!val("pc24_phone")) return "Please enter Phone Number."; if (!val("pc24_ship_address1") !val("pc24_ship_city") !val("pc24_ship_state") !val("pc24_ship_zip")) { return "Please complete the shipping address."; } if (same && !same.checked) { if (!val("pc24_bill_address1") !val("pc24_bill_city") !val("pc24_bill_state") !val("pc24_bill_zip")) { return "Please complete the billing address, or check billing same as shipping."; } } return ""; } function clearForm() { var ids = "pc24_name,pc24_title,pc24_agency,pc24_email,pc24_phone,pc24_ship_company,pc24_ship_name,pc24_ship_address1,pc24_ship_address2,pc24_ship_city,pc24_ship_state,pc24_ship_zip,pc24_bill_name,pc24_bill_company,pc24_bill_address1,pc24_bill_address2,pc24_bill_city,pc24_bill_state,pc24_bill_zip,pc24_message,pc24_website".split(","); for (var i = 0; i < ids.length; i++) { var el = byId(ids[i]); if (el) el.value = ""; } if (byId("pc24_quantity")) byId("pc24_quantity").value = "1"; if (byId("pc24_timeframe")) byId("pc24_timeframe").value = "ASAP"; if (byId("pc24_billing_same")) byId("pc24_billing_same").checked = true; if (byId("pc24_quote_two_year")) byId("pc24_quote_two_year").checked = true; toggleBilling(); updateTotal(); } function buildAddress() { var parts = [ val("pc24_ship_address1"), val("pc24_ship_address2") ].filter(Boolean); return parts.join(", "); } function billingSummary() { var same = byId("pc24_billing_same"); if (same && same.checked) return "Billing address is the same as shipping."; return [ "Billing Contact: " + val("pc24_bill_name"), "Billing Company: " + val("pc24_bill_company"), "Billing Address: " + val("pc24_bill_address1") + (val("pc24_bill_address2") ? ", " + val("pc24_bill_address2") : ""), "Billing City/State/ZIP: " + val("pc24_bill_city") + ", " + val("pc24_bill_state") + " " + val("pc24_bill_zip") ].join(" "); } function sendQuote() { status("", ""); updateTotal(); var err = validate(); if (err) { status("error", err); return; } var btn = byId("pc24SubmitBtn"); if (btn) { btn.disabled = true; btn.textContent = "Sending Written Quote..."; btn.style.opacity = "0.75"; btn.style.cursor = "not-allowed"; } var n = qty(val("pc24_quantity")); var plan = getQuotePlan(); var isTwoYear = plan !== "standard_purchase"; var quoteType = isTwoYear ? "split" : "full"; var totals = calculateQuoteTotals(n); var paymentOption = quotePlanLabel(plan); var paymentSummary = isTwoYear ? "Two-Budget-Year Department Quote. 24-officer package split: " + dollarsFromCents(totals.yearOneCents) + " due this budget year and " + dollarsFromCents(totals.yearTwoCents) + " due next budget year. No financing charges. Not a loan." : "Standard Full Purchase Quote. Full calculated package quote total: " + dollarsFromCents(totals.totalCents) + "."; var notes = [ "Title: " + val("pc24_title"), "Purchase Timeframe: " + val("pc24_timeframe"), "Shipping Company/Agency: " + val("pc24_ship_company"), "Shipping Contact: " + val("pc24_ship_name"), "Selected Quote Type: " + paymentOption, "Package Quantity: " + n, "SKU: 3003", "Storage: Two 40 TB 4-Bay RAID NAS devices, included at no extra charge", "Product Page: https://martelelectronics.com/24-officer-police-body-camera-package-with-two-40-terabyte-storage-package-80-terabyte-total-of-on-premises-storage/", "Page Estimated Equipment Total: " + dollarsFromCents(totals.equipmentCents), "Shipping: FREE", "Page Estimated California Tax: " + (totals.taxApplies ? dollarsFromCents(totals.taxCents) : "$0.00"), "Page Estimated Total: " + dollarsFromCents(totals.totalCents), paymentSummary, billingSummary(), "Customer Notes: " + val("pc24_message") ].join("\n"); var payload = { productKey: PRODUCT_KEY, quoteType: quoteType, quantity: n, departmentName: val("pc24_agency"), contactName: val("pc24_name"), email: val("pc24_email"), phone: val("pc24_phone"), address: buildAddress(), city: val("pc24_ship_city"), state: val("pc24_ship_state"), zip: val("pc24_ship_zip"), notes: notes, website: val("pc24_website") }; fetch(ENDPOINT, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }) .then(function (response) { return response.json().then(function (data) { if (!response.ok !data.ok) { throw new Error(data && data.error ? data.error : "The quote request could not be submitted."); } return data; }); }) .then(function (data) { var successLines = [ "Quote request received.", "Quote Number: " + data.quoteNumber + "", "Package: 24-Officer Patrolcams Body Camera Package", "Quote Type: " + paymentOption + "" ]; if (data.totals) { if (data.californiaTaxApplied) { successLines.push("Estimated California Tax: " + data.totals.estimatedTax + ""); } successLines.push("Total Quote: " + data.totals.total + ""); if (isTwoYear) { successLines.push("Due This Budget Year: " + data.totals.dueThisBudgetYear + ""); successLines.push("Due Next Budget Year: " + data.totals.dueNextBudgetYear + ""); } } successLines.push("A copy has been emailed to you, and Martel has received the request."); status("success", successLines.join("
")); clearForm(); }) .catch(function (error) { status("error", "Sorry, the quote request did not send.
" + error.message + "
Please try again or contact Martel Electronics Sales Inc."); }) .finally(function () { if (btn) { btn.disabled = false; btn.textContent = "Email Me My Instant Written Quote"; btn.style.opacity = "1"; btn.style.cursor = "pointer"; } }); } ready(function () { var form = byId("pc24QuoteForm"); var same = byId("pc24_billing_same"); var quantity = byId("pc24_quantity"); var state = byId("pc24_ship_state"); var twoYear = byId("pc24_quote_two_year"); var standard = byId("pc24_quote_standard"); if (form) { form.addEventListener("submit", function (e) { e.preventDefault(); sendQuote(); }); } if (same) same.addEventListener("change", toggleBilling); if (quantity) quantity.addEventListener("input", updateTotal); if (quantity) quantity.addEventListener("change", updateTotal); if (state) state.addEventListener("input", updateTotal); if (state) state.addEventListener("change", updateTotal); if (twoYear) twoYear.addEventListener("change", updateTotal); if (standard) standard.addEventListener("change", updateTotal); toggleBilling(); updateTotal(); }); }()); // ]]>



