diff --git a/src/containers/Accounting/MakeJournal/MakeJournalEntries.schema.tsx b/src/containers/Accounting/MakeJournal/MakeJournalEntries.schema.tsx index 6b43eb65b..9dd5de66d 100644 --- a/src/containers/Accounting/MakeJournal/MakeJournalEntries.schema.tsx +++ b/src/containers/Accounting/MakeJournal/MakeJournalEntries.schema.tsx @@ -32,6 +32,7 @@ const Schema = Yup.object().shape({ }), contact_id: Yup.number().nullable(), contact_type: Yup.string().nullable(), + project_id: Yup.number().nullable(), note: Yup.string().max(DATATYPES_LENGTH.TEXT).nullable(), }), ), diff --git a/src/containers/Accounting/MakeJournal/MakeJournalEntriesField.tsx b/src/containers/Accounting/MakeJournal/MakeJournalEntriesField.tsx index 209f37342..d67241c16 100644 --- a/src/containers/Accounting/MakeJournal/MakeJournalEntriesField.tsx +++ b/src/containers/Accounting/MakeJournal/MakeJournalEntriesField.tsx @@ -2,7 +2,11 @@ import React from 'react'; import { FastField } from 'formik'; import classNames from 'classnames'; import { CLASSES } from '@/constants/classes'; -import { entriesFieldShouldUpdate, defaultEntry, MIN_LINES_NUMBER } from './utils'; +import { + entriesFieldShouldUpdate, + defaultEntry, + MIN_LINES_NUMBER, +} from './utils'; import { useMakeJournalFormContext } from './MakeJournalProvider'; import MakeJournalEntriesTable from './MakeJournalEntriesTable'; @@ -10,7 +14,8 @@ import MakeJournalEntriesTable from './MakeJournalEntriesTable'; * Make journal entries field. */ export default function MakeJournalEntriesField() { - const { accounts, contacts ,branches } = useMakeJournalFormContext(); + const { accounts, contacts, branches, projects } = + useMakeJournalFormContext(); return (
@@ -19,6 +24,7 @@ export default function MakeJournalEntriesField() { contacts={contacts} accounts={accounts} branches={branches} + projects={projects} shouldUpdate={entriesFieldShouldUpdate} > {({ diff --git a/src/containers/Accounting/MakeJournal/MakeJournalEntriesTable.tsx b/src/containers/Accounting/MakeJournal/MakeJournalEntriesTable.tsx index 15d3a5dfb..60fff127d 100644 --- a/src/containers/Accounting/MakeJournal/MakeJournalEntriesTable.tsx +++ b/src/containers/Accounting/MakeJournal/MakeJournalEntriesTable.tsx @@ -25,7 +25,8 @@ export default function MakeJournalEntriesTable({ minLinesNumber = 1, currencyCode, }) { - const { accounts, contacts, branches } = useMakeJournalFormContext(); + const { accounts, contacts, branches, projects } = + useMakeJournalFormContext(); // Memorized data table columns. const columns = useJournalTableEntriesColumns(); @@ -69,6 +70,7 @@ export default function MakeJournalEntriesTable({ removeRow: handleRemoveRow, contacts, branches, + projects, autoFocus: ['account_id', 0], currencyCode, }} diff --git a/src/containers/Accounting/MakeJournal/MakeJournalProvider.tsx b/src/containers/Accounting/MakeJournal/MakeJournalProvider.tsx index 205dda71d..949ff5e34 100644 --- a/src/containers/Accounting/MakeJournal/MakeJournalProvider.tsx +++ b/src/containers/Accounting/MakeJournal/MakeJournalProvider.tsx @@ -12,6 +12,7 @@ import { useBranches, useSettingsManualJournals, } from '@/hooks/query'; +import { useProjects } from '@/containers/Projects/hooks'; const MakeJournalFormContext = createContext(); @@ -54,6 +55,12 @@ function MakeJournalProvider({ journalId, query, ...props }) { isSuccess: isBranchesSuccess, } = useBranches(query, { enabled: isBranchFeatureCan }); + // Fetch the projects list. + const { + data: { projects }, + isLoading: isProjectsLoading, + } = useProjects(); + // Submit form payload. const [submitPayload, setSubmitPayload] = useState({}); @@ -65,7 +72,7 @@ function MakeJournalProvider({ journalId, query, ...props }) { contacts, currencies, manualJournal, - + projects, branches, createJournalMutate, @@ -91,7 +98,8 @@ function MakeJournalProvider({ journalId, query, ...props }) { isAccountsLoading || isCurrenciesLoading || isContactsLoading || - isSettingsLoading + isSettingsLoading || + isProjectsLoading } name={'make-journal-page'} > diff --git a/src/containers/Accounting/MakeJournal/components.tsx b/src/containers/Accounting/MakeJournal/components.tsx index 231331689..53578698d 100644 --- a/src/containers/Accounting/MakeJournal/components.tsx +++ b/src/containers/Accounting/MakeJournal/components.tsx @@ -16,6 +16,7 @@ import { InputGroupCell, ContactsListFieldCell, BranchesListFieldCell, + ProjectsListFieldCell, } from '@/components/DataTableCells'; import { CellType, Features, Align } from '@/constants'; @@ -127,6 +128,21 @@ export const useJournalTableEntriesColumns = () => { disableSortBy: true, width: 120, }, + + ...(featureCan(Features.Branches) + ? [ + { + Header: intl.get('project'), + id: 'project_id', + accessor: 'project_id', + Cell: ProjectsListFieldCell, + className: 'project_id', + disableSortBy: true, + width: 120, + }, + ] + : []), + ...(featureCan(Features.Branches) ? [ { diff --git a/src/containers/Accounting/MakeJournal/utils.tsx b/src/containers/Accounting/MakeJournal/utils.tsx index 9850f36e5..4099b5c78 100644 --- a/src/containers/Accounting/MakeJournal/utils.tsx +++ b/src/containers/Accounting/MakeJournal/utils.tsx @@ -39,6 +39,7 @@ export const defaultEntry = { debit: '', contact_id: '', branch_id: '', + project_id: '', note: '', };