/* eslint-disable */ /* © 2026 K2B NETWORK SOLUTIONS LLC. All rights reserved. Proprietary and confidential. Unauthorized copying, distribution, or use of this file, via any medium, is strictly prohibited. Original work product. */ // JBREWS DMS — Forms list (under Sales / F&I). // Library of printable dealership forms — Buyer's Order, Bill of Sale, // Odometer Disclosure, Privacy Notice, etc. Each one is fully branded // for the store you are in (K2BPrint - Owner Panel > Stores) and prints to the user's default printer. /* ── GM Financial working-copy forms — fill-before-print support ────────── These auto-populate from the currently selected deal the same way the other deal forms do (the Buyer's Order draft that Desking/F&I keep updated, plus the deal + inventory records), stay editable on screen, then print through the house pipeline as dealer WORKING COPIES — the footer on each says "execute on the official GM Financial form". */ const gmfDealSeed = (which) => { const bo = (window.loadJbForm && window.loadJbForm("buyersOrder")) || {}; let deal = null; try { const id = localStorage.getItem("jb_fw_deal"); const deals = (window.DMS && window.DMS.deals && window.DMS.deals()) || []; deal = deals.find(d => d.id === id) || deals[0] || null; } catch (e) {} const inv = (deal && window.DMS && window.DMS.inventory) ? ((window.DMS.inventory() || []).find(v => v.stock === deal.stock) || {}) : {}; const yrMkMdl = bo.yrMkMdl || (deal ? ([inv.yr, inv.mk, inv.mdl].filter(Boolean).join(" ").trim() || deal.vehicle || "") : ""); const parts = String(yrMkMdl).trim().split(/\s+/).filter(Boolean); const buyer = [bo.lastName, bo.firstName].filter(Boolean).join(", ") || (deal && deal.buyer) || ""; const MD = window.K2BPrint ? window.K2BPrint.brand() : {}; // RC35 (brd): the active store const dealer = [MD.printName || "", [MD.addr1, MD.addr2].filter(Boolean).join(", ")].filter(Boolean).join(" · "); const base = { date: new Date().toLocaleDateString(), vin: bo.vin || inv.vin || "", vehicle: yrMkMdl, buyer }; if (which === "leaseOdometer") return { ...base, accountNum: "", discloser: buyer, lesseeName: buyer, odometer: "", certActual: false, certExceeds: false, certNotActual: false, year: parts[0] || "", make: parts[1] || "", model: parts.slice(2).join(" "), bodyType: bo.body || inv.type || "", street: bo.street || "", city: bo.city || "", state: bo.state || "", zip: bo.zip || "" }; // Retail assignee entity — resolved from the Banks registry (editable there), // falling back to the dealer's GMF documents: AmeriCredit Financial // Services, Inc. d/b/a GM Financial, 4001 Embarcadero Drive, Arlington, TX 76014. const gmfRetailEntity = () => { try { const e = window.jbLenders && window.jbLenders.lienholderFor && window.jbLenders.lienholderFor(bo.lender || "GM Financial", "Retail"); if (e && e.name) return [e.name, [e.address, [e.city, e.state].filter(Boolean).join(", "), e.zip].filter(Boolean).join(", ")].filter(Boolean).join(" · "); } catch (err) {} return "AmeriCredit Financial Services, Inc. d/b/a GM Financial · 4001 Embarcadero Drive, Arlington, TX 76014"; }; if (which === "arb342") return { ...base, dealer, gmfAppNum: "", coBuyer: "", creditor: gmfRetailEntity() }; return { ...base, gmfAppNum: "", contractDate: base.date, dealer, coBuyer: "", assignee: gmfRetailEntity(), recourseNone: false, recourseWith: false, recourseRepurchase: false }; }; const GMF_FILL_SPECS = { leaseOdometer: [ { key: "accountNum", label: "GM Financial Account #" }, { key: "discloser", label: "Person making disclosure (lessee)" }, { key: "odometer", label: "Odometer reading (no tenths) — miles" }, { key: "certActual", label: "Certify: reading is the ACTUAL mileage", type: "check" }, { key: "certExceeds", label: "Certify: mileage EXCEEDS mechanical limits", type: "check" }, { key: "certNotActual", label: "Certify: NOT the actual mileage (discrepancy)", type: "check" }, { key: "vin", label: "VIN" }, { key: "year", label: "Year" }, { key: "make", label: "Make" }, { key: "model", label: "Model" }, { key: "bodyType", label: "Body type" }, { key: "lesseeName", label: "Lessee name" }, { key: "street", label: "Street address" }, { key: "city", label: "City" }, { key: "state", label: "State" }, { key: "zip", label: "ZIP" }, { key: "date", label: "Date" }, ], arb342: [ { key: "dealer", label: "Dealer" }, { key: "gmfAppNum", label: "GMF Application #" }, { key: "vehicle", label: "Vehicle description (yr/make/model)" }, { key: "vin", label: "VIN" }, { key: "buyer", label: "Buyer" }, { key: "coBuyer", label: "Co-Buyer" }, { key: "creditor", label: "Creditor / Assignee (entity)" }, { key: "date", label: "Date" }, ], assign405: [ { key: "gmfAppNum", label: "GMF Application #" }, { key: "contractDate", label: "Date of contract" }, { key: "dealer", label: "Dealer-Seller" }, { key: "assignee", label: "Assignee (entity)" }, { key: "buyer", label: "Buyer" }, { key: "coBuyer", label: "Co-Buyer" }, { key: "vehicle", label: "Vehicle description (yr/make/model)" }, { key: "vin", label: "VIN" }, { key: "recourseNone", label: "Without Recourse (standard)", type: "check" }, { key: "recourseWith", label: "With Recourse", type: "check" }, { key: "recourseRepurchase", label: "Repurchase", type: "check" }, ], }; const JB_FORMS = [ { key: "buyersOrder", category: "Sales", name: "Vehicle Buyer's Order", desc: "Itemized retail order with trade-in, taxes, fees & balance to finance.", fn: () => window.k2bPrintBuyersOrder() }, { key: "billOfSale", category: "Sales", name: "Bill of Sale", desc: "Conveyance of motor vehicle; consideration & vehicle description.", fn: () => window.k2bPrintBillOfSale() }, { key: "odometer", category: "Sales", name: "Odometer Disclosure Statement", desc: "Federal 49 CFR 580 mileage certification at transfer of ownership.", fn: () => window.k2bPrintOdometer() }, { key: "privacy", category: "F&I", name: "Customer Privacy Notice", desc: "Gramm-Leach-Bliley nonpublic personal information disclosure.", fn: () => window.k2bPrintPrivacy() }, { key: "buyerGuide", category: "F&I", name: "FTC Buyer's Guide (As-Is)", desc: "Required used-vehicle warranty disclosure window form.", fn: () => { const d = (window.loadJbForm && window.loadJbForm("buyersOrder")) || {}; const html = `${window.dealerHeadHtml ? window.dealerHeadHtml() : ""}
BUYERS GUIDE
${[d.yrMkMdl, d.vin ? "VIN " + d.vin : "", d.stockNum ? "Stock " + d.stockNum : ""].filter(Boolean).join(" · ") || "Vehicle: ____________________"}

Warranties for this vehicle

☒ AS IS — NO DEALER WARRANTY
THE DEALER DOES NOT PROVIDE A WARRANTY FOR ANY REPAIRS AFTER SALE.
☐ DEALER WARRANTY
☐ Full   ☐ Limited — ____% of labor / ____% of parts. Systems covered / duration: ____________________

Important

ASK THE DEALER IF YOUR MECHANIC CAN INSPECT THE VEHICLE ON OR OFF THE LOT. Spoken promises are difficult to enforce — ask the dealer to put all promises in writing. Keep this form. See the back of this form for important additional information, including a list of some major defects that may occur in used motor vehicles.

Buyer Signature · Date
Dealer Representative
`; window.k2bPrint(html, { title: "FTC Buyers Guide" }); } }, { key: "creditApp", category: "F&I", name: "Credit Application", desc: "Open the credit-application screen, then choose Forms → Print.", fn: (go) => go && go("creditapp") }, { key: "weOweYouOwe",category: "Sales", name: "We-Owe / You-Owe Form", desc: "Track items the dealer owes the customer (or vice versa) after delivery.", fn: () => window.k2bPrintWeOwe ? window.k2bPrintWeOwe() : window.k2bToast && window.k2bToast("We-Owe form opened.", "info") }, { key: "tradeAck", category: "Sales", name: "Trade-In Acknowledgement", desc: "Customer confirmation of trade allowance, payoff and condition.", fn: () => { const d = (window.loadJbForm && window.loadJbForm("buyersOrder")) || {}; const r = (k) => d[k] ? "$" + d[k] : "$ ____________"; const html = `${window.dealerHeadHtml ? window.dealerHeadHtml() : ""}
TRADE-IN ACKNOWLEDGEMENT
${new Date().toLocaleDateString()} · Customer: ${[d.lastName, d.firstName].filter(Boolean).join(", ") || "____________________"}

Trade Vehicle

Year / Make / Model${d.tradeYrMkMdl || "____________________"}
VIN${d.tradeVin || "____________________"}
Odometer at appraisal${d.tradeMiles ? Number(String(d.tradeMiles).replace(/[^0-9]/g, "")).toLocaleString() + " mi" : "____________ mi"}

Agreed Values

Trade Allowance${r("tradeAllow")}
Lien Payoff (estimated, verified with lienholder)${r("tradePayoff")}
NET TRADE EQUITY$ ____________

Customer certifies the trade vehicle's odometer reading is accurate, that the vehicle has not been salvaged, flooded, or had its title branded except as disclosed, and that all factory equipment remains unless noted. If the actual payoff differs from the estimate above, the difference will be settled per the Buyer's Order.

Customer Signature · Date
Appraiser / Manager
`; window.k2bPrint(html, { title: "Trade-In Acknowledgement" }); } }, { key: "rebate", category: "GM", name: "GM Incentive / Rebate Claim", desc: "Dealer Sales Allowance & Incentive submission for a delivered unit.", fn: () => window.k2bPrintRebate && window.k2bPrintRebate() }, { key: "mediation", category: "GM", name: "Request for Mediation", desc: "GM Dispute Resolution Process \u2014 mediation filing form.", fn: () => window.k2bPrintMediation && window.k2bPrintMediation() }, { key: "warrantyTag", category: "GM", name: "WPC Warranty Part Return Tag", desc: "Tag a causal part for return to the GM Warranty Parts Center.", fn: (go) => go && go("warranty") }, { key: "asIs", category: "F&I", name: "Sold \u201cAs-Is\u201d \u2014 No Warranty", desc: "Used-vehicle no-warranty disclaimer; disclaims implied warranties.", fn: () => window.k2bPrintAsIs && window.k2bPrintAsIs() }, { key: "release", category: "Title", name: "Release of Liability", desc: "Notice of transfer & release of liability for the sold or traded unit.", fn: () => window.k2bPrintRelease && window.k2bPrintRelease() }, { key: "leaseWorksheet", category: "Sales", name: "Lease Worksheet (Dealer)", desc: "Full cap-cost build-up for all 3 desked lease options — GMF program, tier & mileage shown.", fn: () => window.k2bPrintLeaseWorksheet && window.k2bPrintLeaseWorksheet() }, { key: "leaseDisclosure", category: "Sales", name: "Lease Disclosure (Customer)", desc: "Reg M-style payment boxes + “how your payment is determined” ladder for the ★ lease option.", fn: () => window.k2bPrintLeaseDisclosure && window.k2bPrintLeaseDisclosure() }, { key: "contractPrep", category: "F&I", name: "Contract Prep Sheet (553-MO)", desc: "Truth-in-Lending boxes + itemization mirroring the Missouri 553-MO retail contract. Not a contract.", fn: () => window.k2bPrintContractPrep && window.k2bPrintContractPrep() }, { key: "gmfLeaseOdometer", category: "F&I", name: "Lease Odometer Disclosure (GMF)", desc: "Leased-vehicle odometer disclosure notice & statement — fillable working copy, auto-filled from the deal.", fill: GMF_FILL_SPECS.leaseOdometer, seed: () => gmfDealSeed("leaseOdometer"), print: (v) => window.k2bPrintGmfLeaseOdometer && window.k2bPrintGmfLeaseOdometer(v), fn: () => window.k2bPrintGmfLeaseOdometer && window.k2bPrintGmfLeaseOdometer(gmfDealSeed("leaseOdometer")) }, { key: "gmfArb342", category: "F&I", name: "Arbitration Agreement — Prep (Form 342)", desc: "Deal identification prep page for the official GM Financial Form 342 — fillable working copy.", fill: GMF_FILL_SPECS.arb342, seed: () => gmfDealSeed("arb342"), print: (v) => window.k2bPrintGmfArb342 && window.k2bPrintGmfArb342(v), fn: () => window.k2bPrintGmfArb342 && window.k2bPrintGmfArb342(gmfDealSeed("arb342")) }, { key: "gmfAssign405", category: "F&I", name: "Assignment to GM Financial — Prep (Form 405)", desc: "Assignment prep with recourse election — fillable working copy; execute on official Form 405.", fill: GMF_FILL_SPECS.assign405, seed: () => gmfDealSeed("assign405"), print: (v) => window.k2bPrintGmfAssign405 && window.k2bPrintGmfAssign405(v), fn: () => window.k2bPrintGmfAssign405 && window.k2bPrintGmfAssign405(gmfDealSeed("assign405")) }, { key: "moTitle", category: "Title", name: "Missouri Title Application (interactive)", desc: "Fill the DOR-108 title & license application on screen, then print.", fn: (go) => go && go("titlemo") }, { key: "moForms", category: "Title", name: "Missouri DOR Forms Packet →", desc: "DOR-108 Title App, Bill of Sale, Odometer, Notice of Lien, POA, Sales Tax & Buyers Guide — auto-filled from a deal.", fn: (go) => go && go("moforms") }, ]; /* ── Fill-before-print modal for the GMF working-copy forms ── Fields auto-populate from the current deal (gmfDealSeed) and stay editable; Print sends the edited values through the house print pipeline. */ const GmfFillModal = ({ form, onClose }) => { const [vals, setVals] = React.useState(() => (form.seed ? form.seed() : {})); const set = (k, v) => setVals(o => ({ ...o, [k]: v })); const doPrint = () => { form.print && form.print(vals); onClose(); }; return ( setVals(form.seed ? form.seed() : {})}>↺ Re-pull from deal Cancel {form.k2bForm ? "🖨 Print" : "🖨 Print Working Copy"} }>
{form.fillNote ? form.fillNote : <>Auto-filled from the current deal — edit anything before printing. Prints as a dealer working copy; execute on the official GM Financial form.}
{(form.fill || []).map(f => f.type === "check" ? ( ) : ( ))}
); }; const FormsList = ({ onClose, go }) => { const [filter, setFilter] = React.useState("All"); const [fillFor, setFillFor] = React.useState(null); // GMF form being filled const [layoutFor, setLayoutFor] = React.useState(null); // form being layout-edited // RC35 (brd, D9): GM franchise forms (GM category + the GMF lease / 342 / 405 / 553 forms) only in a store that shows GM items const flGm = (f) => f.category === "GM" || /^gmf|^contractPrep$/.test(f.key); // RC37 (forms37): the dealership's own forms first (K2BForms.jsx.txt, in the deal packet's order - same keys where the DMS had the form), then the others const flAll = (window.K2BForms ? window.K2BForms.entries() : []).concat(JB_FORMS.filter(f => !(window.K2BForms && window.K2BForms.owns(f.key)))); const flForms = flAll.filter(f => !flGm(f) || !window.K2BStore || !window.K2BStore.known() || window.K2BStore.franchise()); const cats = ["All", ...Array.from(new Set(flForms.map(f => f.category)))]; const list = flForms.filter(f => filter === "All" || f.category === filter); return (
Forms Library
Printable dealership documents — fully branded for {window.K2BStore ? window.K2BStore.branding().dba : "this store"}. Forms pull live data from the current deal automatically.
{window.K2BForms ?
: null}
{cats.map(c => ( ))}
{list.map(f => (
{f.name}
{f.category}
{f.desc}
{f.blank ? : null} {(f.extra || []).map(x => )}
))}
Forms data is pulled from the current Buyer's Order on file. Edit on the Buyer's Order screen, then print. {list.length} form{list.length === 1 ? "" : "s"}
{fillFor && setFillFor(null)} />} {layoutFor && setLayoutFor(null)} />}
); }; /* ── Form layout editor — per-form print overrides (jb_form_overrides) ── */ const FormLayoutEditor = ({ form, onClose }) => { const KEY = "jb_form_overrides"; const loadAll = () => { try { return JSON.parse(localStorage.getItem(KEY) || "{}"); } catch (e) { return {}; } }; const [scope, setScope] = React.useState(form.key); // form.key | __global const [ov, setOv] = React.useState(() => loadAll()[form.key] || {}); const set = (k, v) => setOv(o => ({ ...o, [k]: v })); const pickScope = (s) => { setScope(s); setOv(loadAll()[s] || {}); }; const save = () => { const all = loadAll(); all[scope] = ov; try { localStorage.setItem(KEY, JSON.stringify(all)); } catch (e) {} window.k2bToast && window.k2bToast((scope === "__global" ? "All forms" : form.name) + " layout saved — applies on the next print.", "ok", 3600); onClose(); }; const reset = () => { const all = loadAll(); delete all[scope]; try { localStorage.setItem(KEY, JSON.stringify(all)); } catch (e) {} setOv({}); window.k2bToast && window.k2bToast("Layout reset to default.", "ok"); }; const row = { display: "grid", gridTemplateColumns: "170px 1fr", alignItems: "center", gap: 10, marginBottom: 10 }; const lab = { fontSize: 12, color: "var(--jb-text-dim, #555)", fontWeight: 600 }; return ( Reset Cancel Save Layout }>
{[[form.key, "This form only"], ["__global", "All forms (dealer default)"]].map(([v, l]) => ( ))}
Show dealer header
Top margin (mm) set("topMargin", e.target.value)} style={{ width: 90, fontSize: 13, padding: "5px 7px" }} />
Print size
Dealer text block — prints at the bottom of the form