// Build expense + service order context const expCtx=(d.expenseClaims||[]).length?"\nEXPENSE CLAIMS ("+d.expenseClaims.length+"):\n"+(d.expenseClaims||[]).slice(0,100).map(ec=>vf(ec,"ReferenceNbr","ClaimNbr","RefNbr")+" | Emp:"+vf(ec,"Employee","EmployeeID","ClaimedBy")+" | Amt:"+vf(ec,"ClaimTotal","TotalAmount","Amount")+" | Date:"+vf(ec,"Date","ClaimDate")+" | Status:"+vf(ec,"Status")+" | "+vf(ec,"Description","Descr")).join("\n"):""; const ercCtx=(d.expenseReceipts||[]).length?"\nEXPENSE RECEIPTS ("+d.expenseReceipts.length+"):\n"+(d.expenseReceipts||[]).slice(0,200).map(er=>vf(er,"ReceiptNbr","ReferenceNbr","RefNbr")+" | Claim:"+vf(er,"ClaimNbr","ExpenseClaimNbr")+" | Emp:"+vf(er,"Employee","EmployeeID")+" | Amt:"+vf(er,"Amount","ExpenseAmount","TotalAmount")+" | Date:"+vf(er,"Date","ExpenseDate")+" | Cat:"+vf(er,"ExpenseItem","Category","Description")).join("\n"):""; const svcCtx=(d.serviceOrders||[]).length?"\nSERVICE ORDERS ("+d.serviceOrders.length+"):\n"+(d.serviceOrders||[]).slice(0,100).map(so=>vf(so,"ServiceOrderNbr","RefNbr","ServiceOrderID")+" | Cust:"+vf(so,"CustomerID","Customer")+" | "+vf(so,"Description","Descr")+" | Status:"+vf(so,"Status")+" | Priority:"+vf(so,"Priority")+" | Date:"+vf(so,"OrderDate","Date")).join("\n"):""; const apptCtx=(d.appointments||[]).length?"\nAPPOINTMENTS ("+d.appointments.length+"):\n"+(d.appointments||[]).slice(0,100).map(ap=>vf(ap,"AppointmentNbr","RefNbr")+" | SO:"+vf(ap,"ServiceOrderNbr","SORefNbr")+" | Staff:"+vf(ap,"StaffMember","Employee","AssignedTo")+" | Sched:"+vf(ap,"ScheduledDateTimeBegin","ScheduledDate")+" | Status:"+vf(ap,"Status")).join("\n"):"";