diff --git a/clients/cascades-tucson/docs/billing-log.md b/clients/cascades-tucson/docs/billing-log.md index 177053aa..3ff46b9a 100644 --- a/clients/cascades-tucson/docs/billing-log.md +++ b/clients/cascades-tucson/docs/billing-log.md @@ -486,3 +486,22 @@ icacls D:\Homes /grant "CASCADES\Domain Users:(CI)(AD)(RD)" - **Business Premium proposal:** cascades/proposals/m365-premium-upgrade.md — net -$56.50/mo. - **Len's:** RDP to Server 2008 still failing (CredSSP). - **Server storage:** Likely spinning SAS in Dell R610 — evaluate SSD upgrade. + +--- + +## Billing entry — 2026-07-13 (covers work 6/29 – 7/10) + +**Syncro ticket #32538** (id 113774801) — "Caregiver phone rollout + user admin (6/29 - 7/10)" — invoice **#68035 $0.00** (prepaid block), 16.0h applied, **block 37.5 → 21.5**. Entered by Howard (Claude session, Howard-Home). + +| Date | Line | Type | Hrs | +|------|------|------|-----| +| 6/30 | Caregiver phone SSO onboarding (40 licensed, temp creds, SG finalized; incl. 6/29 ALIS crosscheck) | Remote | 2.0 | +| 6/30 | Tamra Matthews offboarding | Remote | 0.5 | +| 6/30 | VLAN20 printer migration (pfSense route, drivers, direct-IP, P&P GPO pilot) | Remote | 2.5 | +| 7/1 | Caretaker roster reconcile (8 out, 4 new) + CA phone-login cutover | Remote | 2.0 | +| 7/2 | Phone-login fix (must-change sweep 35) + PSO-Caregivers + 7 leaver deletions | Remote | 1.5 | +| 7/2 | Shelby Trozzi web-docs share + mapped drive | Remote | 0.5 | +| 7/9 | Onsite: phone logins; Menle rename, Intune enrollment/token fix, accounting@ delegation | Onsite | 4.0 | +| 7/10 | Onsite: caregiver phone login assistance | Onsite | 3.0 | + +**Deliberately NOT billed here:** Juan Andrade offboarding (held — Howard verifying whether done on 7/11); Chris Knight/Menle work folded into the 7/9 onsite line (not separate). diff --git a/session-logs/2026-07/2026-07-13-howard-billing-reconcile-june26-july10.md b/session-logs/2026-07/2026-07-13-howard-billing-reconcile-june26-july10.md new file mode 100644 index 00000000..a0ca5081 --- /dev/null +++ b/session-logs/2026-07/2026-07-13-howard-billing-reconcile-june26-july10.md @@ -0,0 +1,77 @@ +# 2026-07-13 — Billing reconciliation for Howard's work 6/26 – 7/10 + +## User +- **User:** Howard Enos (howard) +- **Machine:** Howard-Home +- **Role:** tech + +## Session Summary + +Reconciled and entered Syncro billing for all of Howard's client work between 2026-06-26 and 2026-07-10. Started by enumerating every session log in the window (~35 sessions), fanned out three Explore agents to extract per-session billing data (client, work, hours hints, ticket refs, already-billed status), and split the result into already-billed / needs-billing / internal-non-billable. The 6/26 June reconciliation had already swept everything through 6/26 (tickets #32474–#32480, #32439/#32443, #32343), so the working set was 6/29 onward. + +Cascades was the largest pile: eight unbilled sessions wrapped into one new ticket #32538 "Caregiver phone rollout + user admin (6/29 - 7/10)" with 8 line items totaling 16.0h (9.0h remote @ $150 + 7.0h onsite @ $175), invoiced $0.00 against the prepaid block (verified 37.5 → 21.5). Onsite dates confirmed with Howard: 4.0h Thu 7/9 + 3.0h Fri 7/10 (his "7-16" was a typo). The 7/9 remote work (Charity Menle rename, Chris Knight accounting@ delegation) was folded into the 7/9 onsite line. Billing-log entry appended to `clients/cascades-tucson/docs/billing-log.md`. + +Then worked the remaining queue item-by-item with live Syncro verification before each entry. Live checks caught three would-be errors: Scileppi's 7/1 0.5h line was ALREADY invoiced (#67979, 7/1, $75 — the session log's "left un-invoiced" note was stale); Sif-Oidak already had ticket #32526 for the printer-740 issue (billed there instead of creating a duplicate); and Goldstein's $99 MAK was already on invoice #67992 ($257.61 total = $150 labor + $99 license + tax — an agent's earlier "$150 flat" read was wrong, invoice number is 67992 not 1650967814-as-number). + +New billing entered this session: Sif-Oidak #32526 1.0h remote $150 (invoice #68037) covering the dortega AD account + printer error 740; Valley Wide new ticket #32543 1.0h block $0 (invoice #68038, block 17.75 → 16.75) for the VWP-SERVER year-2051 clock skew + MSP360 error-2525 backup rebuild (Howard verified old plan gone, new plan scheduled and working); Prairie Schooner new ticket #32544 3.0h remote $450 (invoice #68039) for migration phase 1 — ticket deliberately left In Progress since Howard goes onsite 7/13 to swap the SonicWall for UniFi. + +Everything else was explicitly decided no-bill by Howard: Scileppi 7/2 Cox WAN RCA and 7/6 SL-SERVER recovery (left for Mike, no notes added), Dataforth MYDATA (covered on Mike's ticket #32501, 2.0h onsite line, Resolved un-invoiced — Mike's to invoice), Goldstein 7/10 OpenVPN (billing fine as-is), Four Paws post-shortcut work (no charge — cleanup on our end), IMC 6/28 + 7/8 (dropped, covered by $1,590/mo recurring), Grabb & Durando 7/4 backup schedule fix (dropped, GPS maintenance). Gary Hartman #32502 deferred — Howard does the disk work this week and will bill diagnostic + replacement together. + +## Key Decisions + +- One Cascades ticket with 8 dated line items instead of 8 tickets — Howard's call, keeps the block deduction and the narrative in one place. +- Onsite dates pinned via AskUserQuestion (7/9 + 7/10) because "7-16" was in the future; day-name verification matters on billing dates. +- 7/9 remote work (Menle rename, accounting@ delegation) folded into the 7/9 4.0h onsite line rather than itemized separately — same day, avoids double-count. +- Billed Sif-Oidak on the EXISTING #32526 rather than creating a new ticket — live ticket search before create is the duplicate-prevention gate. +- Prairie Schooner billed incrementally (option a): phase 1 invoiced now, ticket stays In Progress for phase-2 lines — real-dollar customer, mid-flight project. +- VWP ticket marked Invoiced (work complete + backups verified); Prairie Schooner NOT marked Invoiced (work continues) — status follows work state, not invoice state. +- Every billing preview was gated on a live full `GET /customers/{id}` prepay read (never search results) and live product rate fetches, per the /syncro hard rules. +- Juan Andrade (Cascades) offboarding deliberately NOT billed/executed — held until Howard verifies whether it happened 7/11. + +## Problems Encountered + +- Session logs almost never record durations — hours came from Howard per item; log density used only as a suggestion baseline. +- Customer search returned wrong-first-match twice (query=Dataforth → "Haubner, Georg"; query=Valley Wide → "Teresa Carpio"): list all matches and pick the business record, never trust `.customers[0]`. +- A two-statement jq program with `2>/dev/null` swallowed all output on the VWP invoiced-ticket check — split into two jq calls. +- Stale session-log billing claims: Scileppi "un-invoiced" was in fact invoiced same-day. Rule reinforced: always verify against live Syncro before entering anything. + +## Configuration Changes + +- Created `session-logs/2026-07/` month folder (this log). +- Appended billing entry to `clients/cascades-tucson/docs/billing-log.md` (ticket #32538 / invoice #68035 table, 16.0h, block 37.5 → 21.5). +- No infrastructure or code changes — billing/admin session only. + +## Credentials & Secrets + +- None created or discovered. All Syncro calls used Howard's vaulted per-user API key via `syncro-env.sh` (attribution user_id 1750). + +## Infrastructure & Servers + +- Syncro tenant: computerguru.syncromsp.com. Customers touched: Cascades of Tucson 20149445 (block 21.5h remaining), Sif-oidak District 7694718 (no block), Valley Wide Plastering 31694734 (block 16.75h), The Prairie Schooner 3664974 (no block), Dataforth Corp 578095 (block 25.75h, untouched), Scileppi Law 9601863 (no block, untouched), Gary A Hartman LLC 29038261 (no block, untouched). + +## Commands & Outputs + +- Billing flow per /syncro skill: `POST /tickets` → `POST /tickets/{id}/comment` → `POST /tickets/{id}/add_line_item` (name + price_retail explicit, taxable:false) → `POST /invoices` → verify lines + prepay decrement → `PUT /invoices/{id}` note → `PUT /tickets/{id}` status → post-bot-alert. +- Block decrements verified by re-fetch: Cascades 37.5→21.5 (exactly 16.0), VWP 17.75→16.75 (exactly 1.0). +- Invoice-note policy applied: block customers got "Block hours remaining: N."; non-block (Sif-Oidak, Prairie Schooner) got the block-rate upsell line. +- Bot alerts posted to #bot-alerts for all four billing runs (message ids 1526259374249607259, 1526267219623809217, 1526273847102279841, 1526274760323895319). + +## Pending / Incomplete Tasks + +- **Gary Hartman #32502** (id 113490650): disk replacement this week (Howard) — bill 7/4 diagnostic + replacement together then. No block; real dollars. +- **Prairie Schooner #32544** (id 113778439): Howard onsite 7/13 for SonicWall→UniFi swap; add onsite line + remaining cutover work when done. Ticket In Progress. +- **Cascades — Juan Andrade (`j.andrade`) offboarding**: last day was 7/11; held pending Howard's verification (coord todo 14881da2-8acd-4825-a964-bf9cdd2df876). When confirmed: disable AD + remove from SG-Caregivers + reclaim Business Premium. +- VWP auto-alert tickets #32536/#32537 (Backup Overdue VWP-SERVER/VWP-FILES) are stale per Howard's verification — can be closed/cleared whenever. +- Scileppi SL-SERVER dead-NAS recovery remains with Mike (escalated 7/6). + +## Reference Information + +- **Tickets/invoices created or billed this session:** + - Cascades #32538 (id 113774801) → invoice #68035 (id 1651028969) $0.00, 16.0h block + - Sif-Oidak #32526 (id 113677735) → invoice #68037 (id 1651029466) $150.00, 1.0h + - VWP #32543 (id 113778113) → invoice #68038 (id 1651029853) $0.00, 1.0h block + - Prairie Schooner #32544 (id 113778439) → invoice #68039 (id 1651029914) $450.00, 3.0h, ticket open +- **Verified already-billed (no action):** Rednour #32368/inv #67912 $669.55; Michael Johnson #32477 $87.50; Goldstein #32490/inv #67992 $257.61 (MAK included); Desert RV #32514 $0 warranty; Four Paws #32508/inv #67993 $75; Bardach #32528 $0 block; Scileppi #32493/inv #67979 $75. +- **Explicit no-bill decisions (Howard, 7/13):** Scileppi 7/2 + 7/6; Dataforth MYDATA (Mike's #32501); Goldstein OpenVPN; Four Paws cleanup; IMC 6/28 + 7/8; Grabb & Durando 7/4 schedule fix. +- Prior reconciliation reference: `session-logs/2026-06/2026-06-26-howard-june-billing-reconciliation.md` (covered 6/13–6/26). +- Cascades line-item detail: `clients/cascades-tucson/docs/billing-log.md` (2026-07-13 entry).