mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-02 16:13:22 +00:00
fix(banking): fetch company list from DB instead of boot (#57731)
* fix(banking): fetch company list from DB instead of boot
* fix: show error banner for company list fail fetch
(cherry picked from commit abc3da6b97)
Co-authored-by: Nikhil Kothari <nik.kothari22@live.com>
This commit is contained in:
@@ -19,13 +19,22 @@ import {
|
|||||||
import { cn } from "@/lib/utils"
|
import { cn } from "@/lib/utils"
|
||||||
import _ from "@/lib/translate"
|
import _ from "@/lib/translate"
|
||||||
import { selectedBankAccountAtom } from "./bankRecAtoms"
|
import { selectedBankAccountAtom } from "./bankRecAtoms"
|
||||||
|
import { useFrappeGetDocList } from "frappe-react-sdk"
|
||||||
|
import ErrorBanner from "@/components/ui/error-banner"
|
||||||
|
|
||||||
const CompanySelector = ({ onChange }: { onChange?: (company: string) => void }) => {
|
const CompanySelector = ({ onChange }: { onChange?: (company: string) => void }) => {
|
||||||
const [open, setOpen] = useState(false)
|
const [open, setOpen] = useState(false)
|
||||||
const [searchQuery, setSearchQuery] = useState("")
|
const [searchQuery, setSearchQuery] = useState("")
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
const { data: companies, error } = useFrappeGetDocList("Company", {
|
||||||
const options = window.frappe?.boot?.docs?.filter((doc: Record<string, any>) => doc.doctype === ":Company").map((company: Record<string, any>) => company.name) || []
|
limit: 0,
|
||||||
|
fields: ["name"],
|
||||||
|
}, 'company_list', {
|
||||||
|
revalidateOnFocus: false,
|
||||||
|
revalidateOnReconnect: false,
|
||||||
|
})
|
||||||
|
|
||||||
|
const options = companies?.map((company: { name: string }) => company.name) || []
|
||||||
|
|
||||||
const setSelectedCompany = useSetAtom(selectedCompanyAtom)
|
const setSelectedCompany = useSetAtom(selectedCompanyAtom)
|
||||||
const setSelectedBankAccount = useSetAtom(selectedBankAccountAtom)
|
const setSelectedBankAccount = useSetAtom(selectedBankAccountAtom)
|
||||||
@@ -42,6 +51,10 @@ const CompanySelector = ({ onChange }: { onChange?: (company: string) => void })
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
return <ErrorBanner error={error} />
|
||||||
|
}
|
||||||
|
|
||||||
return (<Popover open={open} onOpenChange={setOpen}>
|
return (<Popover open={open} onOpenChange={setOpen}>
|
||||||
<PopoverTrigger asChild>
|
<PopoverTrigger asChild>
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
import { useAtomValue } from "jotai"
|
import { useAtomValue } from "jotai"
|
||||||
import { atomWithStorage } from "jotai/utils"
|
import { atomWithStorage } from "jotai/utils"
|
||||||
|
|
||||||
export const selectedCompanyAtom = atomWithStorage<string>('bank-rec-selected-company', window.frappe?.boot?.user?.defaults?.company || '')
|
export const selectedCompanyAtom = atomWithStorage<string>('bank-rec-selected-company', window.frappe?.boot?.user?.defaults?.company || '', undefined, {
|
||||||
|
getOnInit: true,
|
||||||
|
})
|
||||||
|
|
||||||
export const useCurrentCompany = () => {
|
export const useCurrentCompany = () => {
|
||||||
const selectedCompany = useAtomValue(selectedCompanyAtom)
|
const selectedCompany = useAtomValue(selectedCompanyAtom)
|
||||||
|
|||||||
Reference in New Issue
Block a user