22 * This file is part of NER's FinishLine and licensed under GNU AGPLv3.
33 * See the LICENSE file in the repository root folder for details.
44 */
5- import { useHistory } from 'react-router-dom' ;
5+ import { useHistory , useLocation } from 'react-router-dom' ;
6+ import { WbsNumber , CreateRefundSourceArgs , ReimbursementReceiptUploadArgs } from 'shared' ;
7+ import { ReimbursementRequestFormInput } from './ReimbursementRequestForm/ReimbursementRequestForm' ;
68import PageLayout from '../../components/PageLayout' ;
79import { useCreateReimbursementRequest , useUploadManyReceipts } from '../../hooks/finance.hooks' ;
810import { routes } from '../../utils/routes' ;
911import ReimbursementRequestForm , {
1012 ReimbursementRequestDataSubmission
1113} from './ReimbursementRequestForm/ReimbursementRequestForm' ;
1214
15+ type CreateRRPrefillState = {
16+ projectWbsNum : WbsNumber ;
17+ materialId : string ;
18+ materialName : string ;
19+ prefillCost ?: number ;
20+ } ;
21+
1322const CreateReimbursementRequestPage : React . FC = ( ) => {
1423 const { isLoading : createReimbursementRequestIsLoading , mutateAsync : createReimbursementRequest } =
1524 useCreateReimbursementRequest ( ) ;
@@ -31,6 +40,31 @@ const CreateReimbursementRequestPage: React.FC = () => {
3140
3241 const isSubmitting = createReimbursementRequestIsLoading || receiptsIsLoading ;
3342
43+ // for pre-filling the form when user clicks "Create Reimbursement Request" from a material in the BOM table
44+ const location = useLocation < CreateRRPrefillState | undefined > ( ) ;
45+ const prefill = location . state ;
46+
47+ const defaultValues : ReimbursementRequestFormInput | undefined =
48+ prefill ?. projectWbsNum && prefill ?. materialId
49+ ? {
50+ vendorId : '' ,
51+ dateOfExpense : undefined ,
52+ accountCodeId : '' ,
53+ indexCodeId : '' ,
54+ secondaryAccount : undefined ,
55+ receiptFiles : [ ] as ReimbursementReceiptUploadArgs [ ] ,
56+ reimbursementProducts : [
57+ {
58+ name : prefill . materialName ,
59+ materialId : prefill . materialId ,
60+ reason : prefill . projectWbsNum ,
61+ cost : prefill . prefillCost ?? 0 ,
62+ refundSources : [ ] as CreateRefundSourceArgs [ ]
63+ }
64+ ]
65+ }
66+ : undefined ;
67+
3468 return (
3569 < PageLayout
3670 title = "Create Reimbursement Request"
@@ -41,9 +75,10 @@ const CreateReimbursementRequestPage: React.FC = () => {
4175 submitText = "Submit"
4276 submitData = { onSubmit }
4377 isSubmitting = { isSubmitting }
78+ defaultValues = { defaultValues }
4479 />
4580 </ PageLayout >
4681 ) ;
4782} ;
4883
49- export default CreateReimbursementRequestPage ;
84+ export default CreateReimbursementRequestPage ;
0 commit comments