@@ -888,7 +960,81 @@ export default function StockOrderDetailPage({
{ordered}
- {formatCurrency(Number(line.cost_price ?? 0))}
+ {costEdits[line.id] ? (
+
+
+ setCostEdits((prev) => ({
+ ...prev,
+ [line.id]: {
+ value: e.target.value.replace(
+ /[^\d.]/g,
+ "",
+ ),
+ saving: false,
+ error: null,
+ },
+ }))
+ }
+ onBlur={() => void saveCostEdit(line.id)}
+ onKeyDown={(e) => {
+ if (e.key === "Enter")
+ void saveCostEdit(line.id);
+ if (e.key === "Escape")
+ cancelCostEdit(line.id);
+ }}
+ className="h-8 w-24 px-2 py-1 text-right"
+ aria-label={`Edit cost for ${line.description}`}
+ data-testid={`stock-order-cost-input-${line.id}`}
+ aria-invalid={
+ costEdits[line.id].error ? true : undefined
+ }
+ />
+ {costEdits[line.id].error ? (
+
+ {costEdits[line.id].error}
+
+ ) : (
+
+ Enter to save, Esc to cancel
+
+ )}
+
+ ) : (
+
+
+ {formatCurrency(Number(line.cost_price ?? 0))}
+
+ {purchase.status === "sent" ? (
+
+ ) : null}
+
+ )}
{already}