docs: remove hardcoded labor rates from syncro.md; message Howard re rates + vault fix
Syncro auto-calculates price from the product's configured rate — omit price_retail. Cleared Howard's messages from for-mike.md (both items addressed). Left reply for Howard in for-howard.md confirming fix is live. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -116,7 +116,7 @@ Two verified ways to add billable time. Both produce ticket line items that tran
|
||||
# Add
|
||||
curl -s -X POST "${BASE}/tickets/${ID}/add_line_item?api_key=${API_KEY}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"product_id": 1190473, "quantity": 0.5, "price_retail": 150.00, "name": "Labor - Remote Business", "description": "Work description", "taxable": false}'
|
||||
-d '{"product_id": 1190473, "quantity": 0.5, "name": "Labor - Remote Business", "description": "Work description", "taxable": false}'
|
||||
|
||||
# Remove
|
||||
curl -s -X POST "${BASE}/tickets/${ID}/remove_line_item?api_key=${API_KEY}" \
|
||||
@@ -150,7 +150,7 @@ curl -s -X POST "${BASE}/tickets/${ID}/delete_timer_entry?api_key=${API_KEY}" \
|
||||
- `description` — required (422 if missing)
|
||||
- `product_id` — labor product ID (see list below)
|
||||
- `quantity` — decimal hours (0.5 = 30 min, 1.0 = 1 hour)
|
||||
- `price_retail` — **only price field that saves**; `price`, `retail_price`, `rate`, `price_cents` all silently ignored and leave line at $0.00
|
||||
- `price_retail` — **only price field that saves**; `price`, `retail_price`, `rate`, `price_cents` all silently ignored and leave line at $0.00. **Do not hardcode rates** — omit `price_retail` and Syncro auto-calculates from the product's configured rate.
|
||||
- `taxable: false` — **always set explicitly**; labor products default to no-tax in GUI but the API applies tax if this is omitted
|
||||
|
||||
**Do NOT remove ticket line items after invoicing.** Leave them on the ticket — the "Add/View Charges" button and billing verification by techs depends on seeing line items there.
|
||||
@@ -231,7 +231,7 @@ curl -s -X POST "${BASE}/tickets/${ID}/comment?api_key=${API_KEY}" \
|
||||
# 60 min = 1.0, 30 min = 0.5, 45 min = 0.75, etc.
|
||||
curl -s -X POST "${BASE}/tickets/${ID}/add_line_item?api_key=${API_KEY}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"product_id": 1190473, "quantity": 1.0, "price_retail": 150.00, "name": "Labor - Remote Business", "description": "..."}'
|
||||
-d '{"product_id": 1190473, "quantity": 1.0, "name": "Labor - Remote Business", "description": "..."}'
|
||||
|
||||
# Step 3: Create invoice
|
||||
curl -s -X POST "${BASE}/invoices?api_key=${API_KEY}" \
|
||||
|
||||
@@ -4,4 +4,8 @@ Check this file at sync. Delete items after you've addressed them.
|
||||
|
||||
---
|
||||
|
||||
_No active messages._
|
||||
## From Mike, 2026-04-21 — RE: Syncro labor rates + vault.sh fix
|
||||
|
||||
**Rates:** Syncro auto-calculates from the product's configured rate — no hardcoding needed. I've updated syncro.md to reflect this: omit `price_retail` entirely and Syncro fills it from the product. Your $175 ticket is fine; that's what the product is set to.
|
||||
|
||||
**vault.sh MSYS path bug:** Already patched and pushed before you reported it — same fix you described (jq-first, cygpath -m fallback for Python). Should work on HOWARD-HOME now. Pull and test.
|
||||
|
||||
@@ -4,36 +4,4 @@ Check this file at sync. Delete items after you've addressed them.
|
||||
|
||||
---
|
||||
|
||||
## From Howard, 2026-04-21 — Confirm Syncro labor rates
|
||||
|
||||
Closed/invoiced ticket #32179 (High Tech Mortgage - Rich Young, onsite power-outlet issue, 0.5 hr). I used **$175/hr for Labor - Onsite Business** (product_id 26118) since I wasn't sure what was current.
|
||||
|
||||
Can you confirm what our current rates should be for the skill's reference? The /syncro skill currently lists $150/hr for Remote as an example but has no onsite or emergency rate documented. Useful ones to pin down:
|
||||
|
||||
- `1190473` Labor - Remote Business
|
||||
- `26118` Labor - Onsite Business (used $175 today)
|
||||
- `26184` Labor - Emergency or After Hours Business
|
||||
- `9269129` Labor - Prepaid Project Labor
|
||||
- `26117` Fee - Travel Time
|
||||
|
||||
If you can confirm, I'll update `.claude/commands/syncro.md` so future tickets don't guess.
|
||||
|
||||
---
|
||||
|
||||
## From Howard, 2026-04-21 — vault.sh wrapper bug on Windows (MSYS path)
|
||||
|
||||
`.claude/scripts/vault.sh` fails on HOWARD-HOME with `[ERROR] vault_path not set` even though identity.json has `"vault_path": "D:/vault"`. Traced it:
|
||||
|
||||
The wrapper passes `$IDENTITY_FILE` as `/c/claudetools/.claude/identity.json` (Git-Bash MSYS form) to native Windows Python, which can't read MSYS paths. The `open()` silently fails inside the `$(...)` substitution, VAULT_ROOT stays empty, and the wrapper bails.
|
||||
|
||||
Fix is small — convert with cygpath if available:
|
||||
|
||||
```bash
|
||||
IDENTITY_FILE_FOR_PY="$IDENTITY_FILE"
|
||||
if command -v cygpath >/dev/null 2>&1; then
|
||||
IDENTITY_FILE_FOR_PY=$(cygpath -m "$IDENTITY_FILE")
|
||||
fi
|
||||
# then pass $IDENTITY_FILE_FOR_PY to python -c
|
||||
```
|
||||
|
||||
I worked around it for tonight by calling `sops -d` directly. Want me to patch the wrapper, or do you want it?
|
||||
_No active messages._
|
||||
|
||||
Reference in New Issue
Block a user