fix estimate table and expense items
This commit is contained in:
@@ -140,12 +140,13 @@ const DISCOUNT_OPTIONS = DiscountType.map((value) => ({
|
||||
export function EstimateForm({ resourceId, initialData, onSuccess }: EstimateFormProps) {
|
||||
const api = useAuthApi()
|
||||
|
||||
const { form, isEditing } = useResourceForm<EstimateFormValues, any>({
|
||||
const { form, isEditing, invalidate } = useResourceForm<EstimateFormValues, any>({
|
||||
schema: estimateFormSchema,
|
||||
defaultValues: DEFAULT_VALUES,
|
||||
resourceId,
|
||||
initialData,
|
||||
queryKey: [ESTIMATE_ROUTES.BY_ID, resourceId],
|
||||
initialize: (id) => api.estimates.show(id),
|
||||
mapToFormValues,
|
||||
})
|
||||
|
||||
@@ -163,7 +164,7 @@ export function EstimateForm({ resourceId, initialData, onSuccess }: EstimateFor
|
||||
return promise
|
||||
},
|
||||
onSuccess: () => {
|
||||
form.reset()
|
||||
if (!isEditing) form.reset()
|
||||
onSuccess?.()
|
||||
},
|
||||
})
|
||||
|
||||
@@ -27,9 +27,9 @@ import {
|
||||
INVENTORY_CATEGORY_ROUTES,
|
||||
INVENTORY_ROUTES,
|
||||
DEPARTMENT_ROUTES,
|
||||
VENDOR_ROUTES,
|
||||
} from "@garage/api"
|
||||
import { InventoryCategoryCrudDialog } from "./inventory-category-crud-dialog"
|
||||
import { RhfVendorSelectField } from "@/modules/vendors/rhf-vendor-select-field"
|
||||
|
||||
// ── Constants ──
|
||||
|
||||
@@ -84,15 +84,26 @@ function mapToFormValues(data: unknown): ExpenseItemFormValues {
|
||||
sku: d.sku || "",
|
||||
item_code: d.item_code || "",
|
||||
description: d.description || "",
|
||||
category: toRelation(d.category_id, d.category_title ?? d.category_name),
|
||||
unit_type: toRelation(d.unit_type_id, d.unit_type_title ?? d.unit_type_name),
|
||||
department: toRelation(d.department_id, d.department_name ?? d.department_title),
|
||||
category: toRelation(
|
||||
d.category_id ?? d.category?.id,
|
||||
d.category_title ?? d.category_name ?? d.category?.title ?? d.category?.name,
|
||||
),
|
||||
unit_type: toRelation(
|
||||
d.unit_type_id ?? d.unit_type?.id,
|
||||
d.unit_type_title ?? d.unit_type_name ?? d.unit_type?.title ?? d.unit_type?.name,
|
||||
),
|
||||
department: toRelation(
|
||||
d.department_id ?? d.department?.id,
|
||||
d.department_name ?? d.department_title ?? d.department?.name ?? d.department?.title,
|
||||
),
|
||||
purchase_information: d.purchase_information ?? true,
|
||||
purchase_price: d.purchase_price ?? undefined,
|
||||
purchase_chart_of_account: d.purchase_chart_of_account || "",
|
||||
purchase_preferred_vendor: toRelation(
|
||||
d.purchase_preferred_vendor_id,
|
||||
d.purchase_preferred_vendor_name,
|
||||
d.purchase_preferred_vendor_id ?? d.purchase_preferred_vendor?.id,
|
||||
d.purchase_preferred_vendor_name
|
||||
?? d.purchase_preferred_vendor?.company_name
|
||||
?? [d.purchase_preferred_vendor?.first_name, d.purchase_preferred_vendor?.last_name].filter(Boolean).join(" "),
|
||||
),
|
||||
sales_information: d.sales_information ?? false,
|
||||
selling_price: d.selling_price ?? undefined,
|
||||
@@ -127,7 +138,7 @@ function mapFormToPayload(values: ExpenseItemFormValues) {
|
||||
export function ExpenseItemForm({ resourceId, initialData, onSuccess }: ExpenseItemFormProps) {
|
||||
const api = useAuthApi()
|
||||
|
||||
const { form, isEditing } = useResourceForm<ExpenseItemFormValues, any>({
|
||||
const { form, isEditing, invalidate } = useResourceForm<ExpenseItemFormValues, any>({
|
||||
schema: expenseItemFormSchema,
|
||||
defaultValues: DEFAULT_VALUES,
|
||||
resourceId,
|
||||
@@ -150,7 +161,7 @@ export function ExpenseItemForm({ resourceId, initialData, onSuccess }: ExpenseI
|
||||
return promise
|
||||
},
|
||||
onSuccess: () => {
|
||||
form.reset()
|
||||
if (!isEditing) form.reset()
|
||||
onSuccess?.()
|
||||
},
|
||||
})
|
||||
@@ -247,7 +258,7 @@ export function ExpenseItemForm({ resourceId, initialData, onSuccess }: ExpenseI
|
||||
</div>
|
||||
|
||||
{/* Purchase Information */}
|
||||
{/* <RhfCheckboxField
|
||||
<RhfCheckboxField
|
||||
name="purchase_information"
|
||||
label="Purchase Information"
|
||||
/>
|
||||
@@ -259,22 +270,21 @@ export function ExpenseItemForm({ resourceId, initialData, onSuccess }: ExpenseI
|
||||
placeholder="0.00"
|
||||
type="number"
|
||||
/>
|
||||
{/* TODO(phase-2): wire Purchase Chart of Account to the chart-of-accounts module (currently disabled, marked "Coming soon"). */}
|
||||
<RhfTextField
|
||||
name="purchase_chart_of_account"
|
||||
label="Purchase Chart of Account"
|
||||
placeholder="e.g. Expenses"
|
||||
description="Coming soon"
|
||||
disabled
|
||||
/>
|
||||
</div>
|
||||
|
||||
<RhfAsyncSelectField
|
||||
<RhfVendorSelectField
|
||||
name="purchase_preferred_vendor"
|
||||
label="Preferred Vendor"
|
||||
placeholder="Select vendor"
|
||||
queryKey={[VENDOR_ROUTES.INDEX]}
|
||||
listFn={() => api.vendors.list()}
|
||||
mapOption={(item: any) => ({ value: String(item.id), label: item.name ?? String(item.id) })}
|
||||
{...STORE_OBJECT}
|
||||
/> */}
|
||||
/>
|
||||
|
||||
{/* Sales Information */}
|
||||
{/* <RhfCheckboxField
|
||||
|
||||
@@ -251,12 +251,13 @@ function TransactionDiscountField() {
|
||||
export function InvoiceForm({ resourceId, initialData, onSuccess }: InvoiceFormProps) {
|
||||
const api = useAuthApi()
|
||||
|
||||
const { form, isEditing } = useResourceForm<InvoiceFormValues, any>({
|
||||
const { form, isEditing, invalidate } = useResourceForm<InvoiceFormValues, any>({
|
||||
schema: invoiceFormSchema,
|
||||
defaultValues: DEFAULT_VALUES,
|
||||
resourceId,
|
||||
initialData,
|
||||
queryKey: [INVOICE_ROUTES.BY_ID, resourceId],
|
||||
initialize: (id) => api.invoices.show(id),
|
||||
mapToFormValues,
|
||||
})
|
||||
|
||||
@@ -277,7 +278,7 @@ export function InvoiceForm({ resourceId, initialData, onSuccess }: InvoiceFormP
|
||||
return promise
|
||||
},
|
||||
onSuccess: () => {
|
||||
form.reset()
|
||||
if (!isEditing) form.reset()
|
||||
onSuccess?.()
|
||||
},
|
||||
})
|
||||
|
||||
@@ -231,12 +231,13 @@ export function JobCardForm({ resourceId, initialData, onSuccess }: JobCardFormP
|
||||
const api = useAuthApi()
|
||||
const [isCheckInDialogOpen, setIsCheckInDialogOpen] = useState(false)
|
||||
|
||||
const { form, isEditing } = useResourceForm<JobCardFormValues, any>({
|
||||
const { form, isEditing, invalidate } = useResourceForm<JobCardFormValues, any>({
|
||||
schema: jobCardFormSchema,
|
||||
defaultValues: DEFAULT_VALUES,
|
||||
resourceId,
|
||||
initialData,
|
||||
queryKey: [JOB_CARD_ROUTES.BY_ID, resourceId],
|
||||
initialize: (id) => api.jobCards.show(id),
|
||||
mapToFormValues,
|
||||
})
|
||||
|
||||
@@ -260,7 +261,7 @@ export function JobCardForm({ resourceId, initialData, onSuccess }: JobCardFormP
|
||||
},
|
||||
onSuccess: () => {
|
||||
setIsCheckInDialogOpen(false)
|
||||
form.reset()
|
||||
if (!isEditing) form.reset()
|
||||
onSuccess?.()
|
||||
},
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user