fix(webapp): branch and warehouse select not showing saved values in edit mode

Fixed an issue where branch and warehouse select fields were not displaying
saved values when editing existing transactions. The useSetPrimaryBranchToForm
and useSetPrimaryWarehouseToForm hooks were overwriting saved values with
primary defaults on every form load.

Changes:
- Added isNewMode check to useSetPrimaryBranchToForm hook
- Added isNewMode check to useSetPrimaryWarehouseToForm hook
- Updated InvoiceFormProvider to expose isNewMode in context

Affected forms:
- Sales: Invoice, Estimate, Receipt, CreditNote, PaymentReceived
- Purchases: Bill, VendorCredit, PaymentMade
- Expense
- MakeJournal (Manual Journal)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Ahmed Bouhuolia
2026-02-27 04:39:24 +02:00
parent 3575d54efa
commit 7051256e60
11 changed files with 49 additions and 48 deletions

View File

@@ -213,17 +213,17 @@ export const currenciesFieldShouldUpdate = (newProps, oldProps) => {
export const useSetPrimaryBranchToForm = () => {
const { setFieldValue } = useFormikContext();
const { branches, isBranchesSuccess } = useMakeJournalFormContext();
const { branches, isBranchesSuccess, isNewMode } = useMakeJournalFormContext();
React.useEffect(() => {
if (isBranchesSuccess) {
if (isBranchesSuccess && isNewMode) {
const primaryBranch = branches.find((b) => b.primary) || first(branches);
if (primaryBranch) {
setFieldValue('branch_id', primaryBranch.id);
}
}
}, [isBranchesSuccess, setFieldValue, branches]);
}, [isBranchesSuccess, setFieldValue, branches, isNewMode]);
};
export const useManualJournalCreditTotal = () => {

View File

@@ -152,17 +152,17 @@ export const transformFormValuesToRequest = (values) => {
export const useSetPrimaryBranchToForm = () => {
const { setFieldValue } = useFormikContext();
const { branches, isBranchesSuccess } = useExpenseFormContext();
const { branches, isBranchesSuccess, isNewMode } = useExpenseFormContext();
React.useEffect(() => {
if (isBranchesSuccess) {
if (isBranchesSuccess && isNewMode) {
const primaryBranch = branches.find((b) => b.primary) || first(branches);
if (primaryBranch) {
setFieldValue('branch_id', primaryBranch.id);
}
}
}, [isBranchesSuccess, setFieldValue, branches]);
}, [isBranchesSuccess, setFieldValue, branches, isNewMode]);
};
/**

View File

@@ -231,25 +231,25 @@ export const handleErrors = (errors, { setErrors }) => {
export const useSetPrimaryBranchToForm = () => {
const { setFieldValue } = useFormikContext();
const { branches, isBranchesSuccess } = useBillFormContext();
const { branches, isBranchesSuccess, isNewMode } = useBillFormContext();
React.useEffect(() => {
if (isBranchesSuccess) {
if (isBranchesSuccess && isNewMode) {
const primaryBranch = branches.find((b) => b.primary) || first(branches);
if (primaryBranch) {
setFieldValue('branch_id', primaryBranch.id);
}
}
}, [isBranchesSuccess, setFieldValue, branches]);
}, [isBranchesSuccess, setFieldValue, branches, isNewMode]);
};
export const useSetPrimaryWarehouseToForm = () => {
const { setFieldValue } = useFormikContext();
const { warehouses, isWarehousesSuccess } = useBillFormContext();
const { warehouses, isWarehousesSuccess, isNewMode } = useBillFormContext();
React.useEffect(() => {
if (isWarehousesSuccess) {
if (isWarehousesSuccess && isNewMode) {
const primaryWarehouse =
warehouses.find((b) => b.primary) || first(warehouses);
@@ -257,7 +257,7 @@ export const useSetPrimaryWarehouseToForm = () => {
setFieldValue('warehouse_id', primaryWarehouse.id);
}
}
}, [isWarehousesSuccess, setFieldValue, warehouses]);
}, [isWarehousesSuccess, setFieldValue, warehouses, isNewMode]);
};
/**

View File

@@ -156,25 +156,25 @@ export const useObserveVendorCreditNoSettings = (prefix, nextNumber) => {
export const useSetPrimaryBranchToForm = () => {
const { setFieldValue } = useFormikContext();
const { branches, isBranchesSuccess } = useVendorCreditNoteFormContext();
const { branches, isBranchesSuccess, isNewMode } = useVendorCreditNoteFormContext();
React.useEffect(() => {
if (isBranchesSuccess) {
if (isBranchesSuccess && isNewMode) {
const primaryBranch = branches.find((b) => b.primary) || first(branches);
if (primaryBranch) {
setFieldValue('branch_id', primaryBranch.id);
}
}
}, [isBranchesSuccess, setFieldValue, branches]);
}, [isBranchesSuccess, setFieldValue, branches, isNewMode]);
};
export const useSetPrimaryWarehouseToForm = () => {
const { setFieldValue } = useFormikContext();
const { warehouses, isWarehousesSuccess } = useVendorCreditNoteFormContext();
const { warehouses, isWarehousesSuccess, isNewMode } = useVendorCreditNoteFormContext();
React.useEffect(() => {
if (isWarehousesSuccess) {
if (isWarehousesSuccess && isNewMode) {
const primaryWarehouse =
warehouses.find((b) => b.primary) || first(warehouses);
@@ -182,7 +182,7 @@ export const useSetPrimaryWarehouseToForm = () => {
setFieldValue('warehouse_id', primaryWarehouse.id);
}
}
}, [isWarehousesSuccess, setFieldValue, warehouses]);
}, [isWarehousesSuccess, setFieldValue, warehouses, isNewMode]);
};
/**

View File

@@ -115,17 +115,17 @@ export const transformFormToRequest = (form) => {
export const useSetPrimaryBranchToForm = () => {
const { setFieldValue } = useFormikContext();
const { branches, isBranchesSuccess } = usePaymentMadeFormContext();
const { branches, isBranchesSuccess, isNewMode } = usePaymentMadeFormContext();
React.useEffect(() => {
if (isBranchesSuccess) {
if (isBranchesSuccess && isNewMode) {
const primaryBranch = branches.find((b) => b.primary) || first(branches);
if (primaryBranch) {
setFieldValue('branch_id', primaryBranch.id);
}
}
}, [isBranchesSuccess, setFieldValue, branches]);
}, [isBranchesSuccess, setFieldValue, branches, isNewMode]);
};
/**

View File

@@ -148,25 +148,25 @@ export const entriesFieldShouldUpdate = (newProps, oldProps) => {
export const useSetPrimaryBranchToForm = () => {
const { setFieldValue } = useFormikContext();
const { branches, isBranchesSuccess } = useCreditNoteFormContext();
const { branches, isBranchesSuccess, isNewMode } = useCreditNoteFormContext();
React.useEffect(() => {
if (isBranchesSuccess) {
if (isBranchesSuccess && isNewMode) {
const primaryBranch = branches.find((b) => b.primary) || first(branches);
if (primaryBranch) {
setFieldValue('branch_id', primaryBranch.id);
}
}
}, [isBranchesSuccess, setFieldValue, branches]);
}, [isBranchesSuccess, setFieldValue, branches, isNewMode]);
};
export const useSetPrimaryWarehouseToForm = () => {
const { setFieldValue } = useFormikContext();
const { warehouses, isWarehousesSuccess } = useCreditNoteFormContext();
const { warehouses, isWarehousesSuccess, isNewMode } = useCreditNoteFormContext();
React.useEffect(() => {
if (isWarehousesSuccess) {
if (isWarehousesSuccess && isNewMode) {
const primaryWarehouse =
warehouses.find((b) => b.primary) || first(warehouses);
@@ -174,7 +174,7 @@ export const useSetPrimaryWarehouseToForm = () => {
setFieldValue('warehouse_id', primaryWarehouse.id);
}
}
}, [isWarehousesSuccess, setFieldValue, warehouses]);
}, [isWarehousesSuccess, setFieldValue, warehouses, isNewMode]);
};
/**

View File

@@ -182,10 +182,10 @@ export const transfromsFormValuesToRequest = (values) => {
export const useSetPrimaryWarehouseToForm = () => {
const { setFieldValue } = useFormikContext();
const { warehouses, isWarehousesSuccess } = useEstimateFormContext();
const { warehouses, isWarehousesSuccess, isNewMode } = useEstimateFormContext();
React.useEffect(() => {
if (isWarehousesSuccess) {
if (isWarehousesSuccess && isNewMode) {
const primaryWarehouse =
warehouses.find((b) => b.primary) || first(warehouses);
@@ -193,22 +193,22 @@ export const useSetPrimaryWarehouseToForm = () => {
setFieldValue('warehouse_id', primaryWarehouse.id);
}
}
}, [isWarehousesSuccess, setFieldValue, warehouses]);
}, [isWarehousesSuccess, setFieldValue, warehouses, isNewMode]);
};
export const useSetPrimaryBranchToForm = () => {
const { setFieldValue } = useFormikContext();
const { branches, isBranchesSuccess } = useEstimateFormContext();
const { branches, isBranchesSuccess, isNewMode } = useEstimateFormContext();
React.useEffect(() => {
if (isBranchesSuccess) {
if (isBranchesSuccess && isNewMode) {
const primaryBranch = branches.find((b) => b.primary) || first(branches);
if (primaryBranch) {
setFieldValue('branch_id', primaryBranch.id);
}
}
}, [isBranchesSuccess, setFieldValue, branches]);
}, [isBranchesSuccess, setFieldValue, branches, isNewMode]);
};
/**

View File

@@ -180,6 +180,7 @@ function InvoiceFormProvider({ invoiceId, baseCurrency, ...props }) {
isInvoiceStateLoading,
isBootLoading,
isNewMode,
};
return <InvoiceFormContext.Provider value={provider} {...props} />;

View File

@@ -264,10 +264,10 @@ const transformPaymentMethodsToForm = (
export const useSetPrimaryWarehouseToForm = () => {
const { setFieldValue } = useFormikContext();
const { warehouses, isWarehousesSuccess } = useInvoiceFormContext();
const { warehouses, isWarehousesSuccess, isNewMode } = useInvoiceFormContext();
React.useEffect(() => {
if (isWarehousesSuccess) {
if (isWarehousesSuccess && isNewMode) {
const primaryWarehouse =
warehouses.find((b) => b.primary) || first(warehouses);
@@ -275,22 +275,22 @@ export const useSetPrimaryWarehouseToForm = () => {
setFieldValue('warehouse_id', primaryWarehouse.id);
}
}
}, [isWarehousesSuccess, setFieldValue, warehouses]);
}, [isWarehousesSuccess, setFieldValue, warehouses, isNewMode]);
};
export const useSetPrimaryBranchToForm = () => {
const { setFieldValue } = useFormikContext();
const { branches, isBranchesSuccess } = useInvoiceFormContext();
const { branches, isBranchesSuccess, isNewMode } = useInvoiceFormContext();
React.useEffect(() => {
if (isBranchesSuccess) {
if (isBranchesSuccess && isNewMode) {
const primaryBranch = branches.find((b) => b.primary) || first(branches);
if (primaryBranch) {
setFieldValue('branch_id', primaryBranch.id);
}
}
}, [isBranchesSuccess, setFieldValue, branches]);
}, [isBranchesSuccess, setFieldValue, branches, isNewMode]);
};
/**

View File

@@ -177,17 +177,17 @@ export const transformFormToRequest = (form) => {
export const useSetPrimaryBranchToForm = () => {
const { setFieldValue } = useFormikContext();
const { branches, isBranchesSuccess } = usePaymentReceiveFormContext();
const { branches, isBranchesSuccess, isNewMode } = usePaymentReceiveFormContext();
React.useEffect(() => {
if (isBranchesSuccess) {
if (isBranchesSuccess && isNewMode) {
const primaryBranch = branches.find((b) => b.primary) || first(branches);
if (primaryBranch) {
setFieldValue('branch_id', primaryBranch.id);
}
}
}, [isBranchesSuccess, setFieldValue, branches]);
}, [isBranchesSuccess, setFieldValue, branches, isNewMode]);
};
/**

View File

@@ -173,10 +173,10 @@ export const transformFormValuesToRequest = (values) => {
export const useSetPrimaryWarehouseToForm = () => {
const { setFieldValue } = useFormikContext();
const { warehouses, isWarehousesSuccess } = useReceiptFormContext();
const { warehouses, isWarehousesSuccess, isNewMode } = useReceiptFormContext();
React.useEffect(() => {
if (isWarehousesSuccess) {
if (isWarehousesSuccess && isNewMode) {
const primaryWarehouse =
warehouses.find((b) => b.primary) || first(warehouses);
@@ -184,22 +184,22 @@ export const useSetPrimaryWarehouseToForm = () => {
setFieldValue('warehouse_id', primaryWarehouse.id);
}
}
}, [isWarehousesSuccess, setFieldValue, warehouses]);
}, [isWarehousesSuccess, setFieldValue, warehouses, isNewMode]);
};
export const useSetPrimaryBranchToForm = () => {
const { setFieldValue } = useFormikContext();
const { branches, isBranchesSuccess } = useReceiptFormContext();
const { branches, isBranchesSuccess, isNewMode } = useReceiptFormContext();
React.useEffect(() => {
if (isBranchesSuccess) {
if (isBranchesSuccess && isNewMode) {
const primaryBranch = branches.find((b) => b.primary) || first(branches);
if (primaryBranch) {
setFieldValue('branch_id', primaryBranch.id);
}
}
}, [isBranchesSuccess, setFieldValue, branches]);
}, [isBranchesSuccess, setFieldValue, branches, isNewMode]);
};
/**