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() : ""}
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 dealCancel{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.>}
);
};
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"}
Dealer text block — prints at the bottom of the form
Footer line
set("footerLine", e.target.value)} placeholder="e.g. Store name · phone · web address" style={{ fontSize: 12.5, padding: "5px 7px" }} />
Overrides save per station and apply to every print of {scope === "__global" ? "every form" : "this form"}. “This form only” wins over the dealer default.