End-to-end tracking for area rugs, drapery, blinds, and upholstery — from customer pickup through plant processing to delivery.
listPlantWorkItems + getPlantQueueSummary
getPlantWorkItem
updatePlantWorkItemStatus
scheduleDelivery
requestReclean
createPlantWorkItem
getPlantWorkSettings / upsertPlantWorkSettings
app/(contractor)/(tabs)/(home)/operations/plant-work/index.tsx — Dashboard (WIP list)app/(contractor)/(tabs)/(home)/operations/plant-work/[id].tsx — Item Detailapp/(contractor)/(tabs)/(home)/operations/plant-work/intake.tsx — New Plant Itemapp/(contractor)/(tabs)/(home)/operations/plant-work/settings.tsx — Plant Settingsapi.operations.plantWork.listPlantWorkItems — Paginated WIP list with filtersapi.operations.plantWork.getPlantQueueSummary — Aggregate counts (active, near storage, in storage)api.operations.plantWork.getPlantWorkItem — Single item with full history + computed fieldsapi.operations.plantWork.getPlantWorkSettings — Contractor plant settingsapi.operations.plantWork.createPlantWorkItem — Create new item with auto-generated tag numberapi.operations.plantWork.updatePlantWorkItemStatus — Advance status + rack/bin + notes + timestampapi.operations.plantWork.scheduleDelivery — Set delivery date + notes on ready itemsapi.operations.plantWork.requestReclean — Flag item for reclean with reasonapi.operations.plantWork.upsertPlantWorkSettings — Save storage/tag/notification settingsarea_rug — Area rugs (has width/length dimensions)drapery — Drapery panels (has width/length dimensions)blinds — Window blindsupholstery — Furniture upholsteryspecialty — Special/custom itemsother — MiscellaneousdaysInPlant — Days since receivedAtPlantAt, warning color if > 30storageFeeCents — Pro-rated from storageRatePerMonthCents after grace periodsquareFeet — (widthInches × lengthInches) / 144isOverdue — deliveryDate < today && status !== "delivered"