sync: auto-sync from GURU-5070 at 2026-05-25 12:58:05
Author: Mike Swanson Machine: GURU-5070 Timestamp: 2026-05-25 12:58:05
This commit is contained in:
@@ -75,7 +75,8 @@ Use a **single emergency labor product** for the full hours worked:
|
||||
| Customer type | Product | Product ID | Rate |
|
||||
|---|---|---|---|
|
||||
| Business | Labor - Emergency or After Hours Business | 26184 | $262.50/hr |
|
||||
| Residential | Labor - Emergency or After Hours Residential | 42584 | $202.50/hr |
|
||||
|
||||
Residential rates are legacy — ACG no longer bills residential. Do not use product 42584.
|
||||
|
||||
**Example:** 4 hours of emergency business work, direct billing:
|
||||
- Line 1: `Labor - Emergency or After Hours Business` (26184) — 4.0 hr
|
||||
@@ -86,15 +87,52 @@ Reference: Ticket #32188 (VWP, direct billing, 2026-04-22).
|
||||
|
||||
## Standard Labor Products (Reference)
|
||||
|
||||
Standard non-block business rate: **$175/hr**. Emergency premium is 50%, so $175 × 1.5 = $262.50 (product 26184).
|
||||
Emergency business rate is **$262.50/hr** (product 26184) — used for all emergency/afterhours business work regardless of remote vs onsite. Residential rates are legacy and not in use.
|
||||
|
||||
| Service type | Product | Product ID | Rate | Notes |
|
||||
**Always fetch `price_retail` from `GET /api/v1/products/{id}` before billing non-block customers. Never use a hardcoded rate.**
|
||||
|
||||
| Service type | Product | Product ID | Live Rate | Notes |
|
||||
|---|---|---|---|---|
|
||||
| Remote Business | Labor - Remote Business | 1190473 | $175.00/hr | Non-block cash billing |
|
||||
| Onsite Business | Labor - Onsite Business | 26118 | $175.00/hr | Same rate as remote |
|
||||
| In-Shop Business | Labor - In Shop Business | 573881 | $175.00/hr | |
|
||||
| Remote Business | Labor - Remote Business | 1190473 | $150.00/hr | Non-block cash billing |
|
||||
| Onsite Business | Labor - Onsite Business | 26118 | $175.00/hr | |
|
||||
| In-Shop Business | Labor - In Shop Business | 573881 | $150.00/hr | |
|
||||
| Block/Prepaid (any type) | Labor - Remote Business | 1190473 | $0.00 | Price = $0; draws from block in hours |
|
||||
| Remote Residential | Labor - Remote Residential | 1190471 | $100.00/hr | |
|
||||
| Emergency/Afterhours Business | Labor - Emergency or After Hours Business | 26184 | $262.50/hr | All business emergency — remote and onsite |
|
||||
|
||||
---
|
||||
|
||||
## Adding Line Items to an Existing Ticket (API)
|
||||
|
||||
**Confirmed working endpoint** (tested 2026-05-25, ticket #32320 and test #32321):
|
||||
|
||||
```
|
||||
POST https://computerguru.syncromsp.com/api/v1/tickets/{ticket_id}/add_line_item
|
||||
Authorization: <api_key from vault: msp-tools/syncro.sops.yaml → credentials.credential>
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
**Required body fields** — both `name` and `description` are required; either missing returns 422:
|
||||
|
||||
```json
|
||||
{
|
||||
"product_id": 1190473,
|
||||
"name": "Labor - Remote Business",
|
||||
"description": "Work performed description",
|
||||
"quantity": 2.0,
|
||||
"price": 0.0,
|
||||
"taxable": false
|
||||
}
|
||||
```
|
||||
|
||||
- `price`: use `0.0` for block customers; for non-block, fetch live rate first: `GET /api/v1/products/{product_id}` → `.product.price_retail`
|
||||
- `taxable`: always `false` for labor (Arizona labor is never taxable)
|
||||
- Success response: HTTP 200 with the new line item's `id`
|
||||
|
||||
**Pre-billing check** — before adding line items, verify the ticket has no existing labor to avoid duplicates:
|
||||
```
|
||||
GET https://computerguru.syncromsp.com/api/v1/tickets/{ticket_id}
|
||||
```
|
||||
Check `.ticket.line_items[]` in the response.
|
||||
|
||||
---
|
||||
|
||||
@@ -113,6 +151,8 @@ If work begins during normal hours and continues into after-hours (or vice versa
|
||||
| LLF - Remote Labor (Emergency/Afterhours) | 145022 | Legacy contract product, no longer applicable |
|
||||
| Fee - On-Site Business Emergenc | 45871 | Not in current use — do not add without explicit instruction |
|
||||
| Fee - On-Site Residential Emerg | 45870 | Not in current use — do not add without explicit instruction |
|
||||
| Labor - Emergency or After Hours Residential | 42584 | Residential rates are legacy — ACG no longer uses residential billing |
|
||||
| Labor - Remote Residential | 1190471 | Residential rates are legacy — ACG no longer uses residential billing |
|
||||
|
||||
---
|
||||
|
||||
@@ -129,5 +169,5 @@ Was emergency rate explicitly requested by customer?
|
||||
```
|
||||
Is customer a block/prepaid customer?
|
||||
YES → Two line items: actual hrs (standard product) + 0.5x hrs (same product, "Emergency/Same day rate")
|
||||
NO → One line item: emergency product (26184 business / 42584 residential) for full hours
|
||||
NO → One line item: emergency product 26184 (business) for full hours
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user