cost and price

This commit is contained in:
2026-03-14 23:23:43 -05:00
parent 9d233a0c3d
commit c21f7c2cee
10 changed files with 33 additions and 0 deletions

View File

@@ -156,6 +156,10 @@ export function InventoryDetailPage() {
<dt className="text-xs font-semibold uppercase tracking-[0.18em] text-muted">Default cost</dt>
<dd className="mt-2 text-sm text-text">{item.defaultCost == null ? "Not set" : `$${item.defaultCost.toFixed(2)}`}</dd>
</div>
<div>
<dt className="text-xs font-semibold uppercase tracking-[0.18em] text-muted">Default price</dt>
<dd className="mt-2 text-sm text-text">{item.defaultPrice == null ? "Not set" : `$${item.defaultPrice.toFixed(2)}`}</dd>
</div>
<div>
<dt className="text-xs font-semibold uppercase tracking-[0.18em] text-muted">Flags</dt>
<dd className="mt-2 text-sm text-text">

View File

@@ -71,6 +71,7 @@ export function InventoryFormPage({ mode }: InventoryFormPageProps) {
isSellable: item.isSellable,
isPurchasable: item.isPurchasable,
defaultCost: item.defaultCost,
defaultPrice: item.defaultPrice,
notes: item.notes,
bomLines: item.bomLines.map((line) => ({
componentItemId: line.componentItemId,
@@ -199,6 +200,17 @@ export function InventoryFormPage({ mode }: InventoryFormPageProps) {
className="w-full rounded-2xl border border-line/70 bg-page px-2 py-2 text-text outline-none transition focus:border-brand"
/>
</label>
<label className="block">
<span className="mb-2 block text-sm font-semibold text-text">Default price</span>
<input
type="number"
min={0}
step={0.01}
value={form.defaultPrice ?? ""}
onChange={(event) => updateField("defaultPrice", event.target.value === "" ? null : Number(event.target.value))}
className="w-full rounded-2xl border border-line/70 bg-page px-2 py-2 text-text outline-none transition focus:border-brand"
/>
</label>
</div>
<div className="grid gap-3 xl:grid-cols-4">
<label className="block">

View File

@@ -32,6 +32,7 @@ export const emptyInventoryItemInput: InventoryItemInput = {
isSellable: true,
isPurchasable: true,
defaultCost: null,
defaultPrice: null,
notes: "",
bomLines: [],
};

View File

@@ -321,6 +321,7 @@ export function SalesFormPage({ entity, mode }: { entity: SalesDocumentEntity; m
...line,
itemId: option.id,
description: line.description || option.name,
unitPrice: line.unitPrice > 0 ? line.unitPrice : (option.defaultPrice ?? 0),
});
updateLineSearchTerm(index, option.sku);
setActiveLinePicker(null);