diff --git a/api/externals/controller/festival_item_controller.go b/api/externals/controller/festival_item_controller.go index 5257f2bc1..b335427f5 100644 --- a/api/externals/controller/festival_item_controller.go +++ b/api/externals/controller/festival_item_controller.go @@ -14,6 +14,7 @@ type festivalItemController struct { type FestivalItemController interface { IndexFestivalItems(echo.Context) error + IndexFestivalItemsForMypage(echo.Context) error CreateFestivalItem(echo.Context) error UpdateFestivalItem(echo.Context) error DestroyFestivalItem(echo.Context) error @@ -36,6 +37,19 @@ func (f *festivalItemController) IndexFestivalItems(c echo.Context) error { return c.JSON(http.StatusOK, festivalItemDetails) } +func (f *festivalItemController) IndexFestivalItemsForMypage(c echo.Context) error { + ctx := c.Request().Context() + userId := c.Param("user_id") + year := c.QueryParam("year") + var festivalItemDetails []FestivalItemsForMyPage + + festivalItemDetails, err := f.u.GetFestvalItemsForMypage(ctx, year, userId) + if err != nil { + return err + } + return c.JSON(http.StatusOK, festivalItemDetails) +} + func (f *festivalItemController) CreateFestivalItem(c echo.Context) error { festivalItem := new(FestivalItem) if err := c.Bind(festivalItem); err != nil { @@ -76,3 +90,4 @@ func (f *festivalItemController) DestroyFestivalItem(c echo.Context) error { type FestivalItemDetails = generated.FestivalItemDetails type FestivalItem = generated.FestivalItem +type FestivalItemsForMyPage = generated.FestivalItemsForMyPage diff --git a/api/externals/repository/festival_item_repository.go b/api/externals/repository/festival_item_repository.go index cd1168891..a8ecdb00d 100644 --- a/api/externals/repository/festival_item_repository.go +++ b/api/externals/repository/festival_item_repository.go @@ -29,6 +29,7 @@ type FestivalItemRepository interface { StartTransaction(context.Context) (*sql.Tx, error) RollBack(context.Context, *sql.Tx) error Commit(context.Context, *sql.Tx) error + GetDetailByDivisionId(context.Context, string, string) (*sql.Rows, error) } func NewFestivalItemRepository(c db.Client, ac abstract.Crud) FestivalItemRepository { @@ -191,6 +192,30 @@ func (fir *festivalItemRepository) Commit(c context.Context, tx *sql.Tx) error { return fir.crud.Commit(c, tx) } +// 年度別と部門で取得 +func (fir *festivalItemRepository) GetDetailByDivisionId( + c context.Context, + year string, + userId string, +) (*sql.Rows, error) { + ds := selectFestivalItemForMypageQuery + if userId != "" { + ds = ds.Where(goqu.Ex{"users.id": userId}) + } + + if year != "" { + ds = ds.Where(goqu.Ex{"years.year": year}) + } + + query, _, err := ds.ToSQL() + + if err != nil { + return nil, err + } + + return fir.crud.Read(c, query) +} + var selectFestivalItemQuery = dialect.Select( "festival_items.id", "festival_items.name", @@ -208,3 +233,29 @@ var selectFestivalItemQuery = dialect.Select( LeftJoin(goqu.I("buy_reports"), goqu.On(goqu.I("festival_items.id").Eq(goqu.I("buy_reports.festival_item_id")))). GroupBy("festival_items.id", "item_budgets.amount"). Order(goqu.I("festival_items.id").Desc()) + +var selectFestivalItemForMypageQuery = dialect.Select( + goqu.I("users.name").As("userName"), + goqu.I("financial_records.name").As("financialRecordName"), + goqu.I("divisions.id").As("divisionId"), + goqu.I("divisions.name").As("divisionName"), + goqu.I("festival_items.id").As("festivalItemId"), + goqu.I("festival_items.name").As("festivalItemName"), + goqu.I("years.year"), + goqu.COALESCE(goqu.I("item_budgets.amount"), 0).As("budgetAmount"), + goqu.COALESCE(goqu.I("buy_reports.id"), 0).As("buyReportId"), + goqu.COALESCE(goqu.I("buy_reports.paid_by"), "").As("paidBy"), + goqu.COALESCE(goqu.I("buy_reports.amount"), 0).As("reportAmount"), + goqu.COALESCE(goqu.I("buy_reports.created_at"), "2025-01-29 20:53:44").As("reportDate"), + goqu.COALESCE(goqu.I("buy_statuses.is_packed"), 0).As("isPacked"), + goqu.COALESCE(goqu.I("buy_statuses.is_settled"), 0).As("isSettled")). + From("festival_items"). + InnerJoin(goqu.I("divisions"), goqu.On(goqu.I("festival_items.division_id").Eq(goqu.I("divisions.id")))). + InnerJoin(goqu.I("financial_records"), goqu.On(goqu.I("divisions.financial_record_id").Eq(goqu.I("financial_records.id")))). + InnerJoin(goqu.I("user_groups"), goqu.On(goqu.I("divisions.id").Eq(goqu.I("user_groups.group_id")))). + InnerJoin(goqu.I("users"), goqu.On(goqu.I("users.id").Eq(goqu.I("user_groups.user_id")))). + InnerJoin(goqu.I("years"), goqu.On(goqu.I("financial_records.year_id").Eq(goqu.I("years.id")))). + LeftJoin(goqu.I("item_budgets"), goqu.On(goqu.I("festival_items.id").Eq(goqu.I("item_budgets.festival_item_id")))). + LeftJoin(goqu.I("buy_reports"), goqu.On(goqu.I("festival_items.id").Eq(goqu.I("buy_reports.festival_item_id")))). + LeftJoin(goqu.I("buy_statuses"), goqu.On(goqu.I("buy_reports.id").Eq(goqu.I("buy_statuses.buy_report_id")))). + Order(goqu.I("festival_items.id").Desc()) diff --git a/api/generated/openapi_gen.go b/api/generated/openapi_gen.go index 533be2186..a480cdc08 100644 --- a/api/generated/openapi_gen.go +++ b/api/generated/openapi_gen.go @@ -16,7 +16,7 @@ import ( const ( Empty BuyReportInformationStatus = "確認中" N1 BuyReportInformationStatus = "封詰め" - N2 BuyReportInformationStatus = "生産完了" + N2 BuyReportInformationStatus = "清算完了" ) // Defines values for GetActivitiesFilteredDetailsParamsIsDone. @@ -381,6 +381,12 @@ type GetFestivalItemsParams struct { DivisionId *int `form:"division_id,omitempty" json:"division_id,omitempty"` } +// GetFestivalItemsDetailsUserIdParams defines parameters for GetFestivalItemsDetailsUserId. +type GetFestivalItemsDetailsUserIdParams struct { + // Year year + Year *int `form:"year,omitempty" json:"year,omitempty"` +} + // GetFinancialRecordsParams defines parameters for GetFinancialRecords. type GetFinancialRecordsParams struct { // Year year @@ -794,8 +800,8 @@ type ServerInterface interface { // (POST /festival_items) PostFestivalItems(ctx echo.Context) error - // (GET /festival_items/details/{division_id}) - GetFestivalItemsDetailsDivisionId(ctx echo.Context, divisionId int) error + // (GET /festival_items/details/{user_id}) + GetFestivalItemsDetailsUserId(ctx echo.Context, userId int, params GetFestivalItemsDetailsUserIdParams) error // (DELETE /festival_items/{id}) DeleteFestivalItemsId(ctx echo.Context, id int) error @@ -1934,19 +1940,28 @@ func (w *ServerInterfaceWrapper) PostFestivalItems(ctx echo.Context) error { return err } -// GetFestivalItemsDetailsDivisionId converts echo context to params. -func (w *ServerInterfaceWrapper) GetFestivalItemsDetailsDivisionId(ctx echo.Context) error { +// GetFestivalItemsDetailsUserId converts echo context to params. +func (w *ServerInterfaceWrapper) GetFestivalItemsDetailsUserId(ctx echo.Context) error { var err error - // ------------- Path parameter "division_id" ------------- - var divisionId int + // ------------- Path parameter "user_id" ------------- + var userId int - err = runtime.BindStyledParameterWithOptions("simple", "division_id", ctx.Param("division_id"), &divisionId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) + err = runtime.BindStyledParameterWithOptions("simple", "user_id", ctx.Param("user_id"), &userId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) if err != nil { - return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter division_id: %s", err)) + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter user_id: %s", err)) + } + + // Parameter object where we will unmarshal all parameters from the context + var params GetFestivalItemsDetailsUserIdParams + // ------------- Optional query parameter "year" ------------- + + err = runtime.BindQueryParameter("form", true, false, "year", ctx.QueryParams(), ¶ms.Year) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter year: %s", err)) } // Invoke the callback with all the unmarshaled arguments - err = w.Handler.GetFestivalItemsDetailsDivisionId(ctx, divisionId) + err = w.Handler.GetFestivalItemsDetailsUserId(ctx, userId, params) return err } @@ -3151,7 +3166,7 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL router.GET(baseURL+"/expenses/:id/details", wrapper.GetExpensesIdDetails) router.GET(baseURL+"/festival_items", wrapper.GetFestivalItems) router.POST(baseURL+"/festival_items", wrapper.PostFestivalItems) - router.GET(baseURL+"/festival_items/details/:division_id", wrapper.GetFestivalItemsDetailsDivisionId) + router.GET(baseURL+"/festival_items/details/:user_id", wrapper.GetFestivalItemsDetailsUserId) router.DELETE(baseURL+"/festival_items/:id", wrapper.DeleteFestivalItemsId) router.PUT(baseURL+"/festival_items/:id", wrapper.PutFestivalItemsId) router.GET(baseURL+"/financial_records", wrapper.GetFinancialRecords) diff --git a/api/internals/domain/festival_item.go b/api/internals/domain/festival_item.go index ea25ea61e..7b1452d07 100644 --- a/api/internals/domain/festival_item.go +++ b/api/internals/domain/festival_item.go @@ -12,3 +12,20 @@ type FestivalItem struct { CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` } + +type FestivalItemForMyPageColumn struct { + UserName string + FinancialRecordName string + DivisionId int + DivisionName string + FestivalItemId int + FestivalItemName string + Year int + BudgetAmount int + BuyReportId int + PaidBy string + ReportAmount int + ReportDate string + IsPacked bool + IsSettled bool +} diff --git a/api/internals/usecase/festival_item_usecase.go b/api/internals/usecase/festival_item_usecase.go index 6252c198f..812ec691f 100644 --- a/api/internals/usecase/festival_item_usecase.go +++ b/api/internals/usecase/festival_item_usecase.go @@ -2,9 +2,11 @@ package usecase import ( "context" + "fmt" rep "github.com/NUTFes/FinanSu/api/externals/repository" "github.com/NUTFes/FinanSu/api/generated" + "github.com/NUTFes/FinanSu/api/internals/domain" ) type festivalItemUseCase struct { @@ -13,6 +15,7 @@ type festivalItemUseCase struct { type FestivalItemUseCase interface { GetFestivalItems(context.Context, string, string) (FestivalItemDetails, error) + GetFestvalItemsForMypage(context.Context, string, string) ([]FestivalItemDetailsForMypage, error) CreateFestivalItem( context.Context, FestivalItem, @@ -203,6 +206,148 @@ func (fiu *festivalItemUseCase) DestroyFestivalItem(c context.Context, id string return nil } +func (fiu *festivalItemUseCase) GetFestvalItemsForMypage( + c context.Context, + year string, + userId string, +) ([]FestivalItemDetailsForMypage, error) { + // var festivalItemDetails FestivalItemDetailsForMypage + var festivalItemDetailsList []FestivalItemDetailsForMypage + + var festivalItemForMyPageColumns []domain.FestivalItemForMyPageColumn + + rows, err := fiu.rep.GetDetailByDivisionId(c, year, userId) + if err != nil { + return festivalItemDetailsList, err + } + + defer rows.Close() + for rows.Next() { + var festivalItemForMyPageColumn domain.FestivalItemForMyPageColumn + err := rows.Scan( + &festivalItemForMyPageColumn.UserName, + &festivalItemForMyPageColumn.FinancialRecordName, + &festivalItemForMyPageColumn.DivisionId, + &festivalItemForMyPageColumn.DivisionName, + &festivalItemForMyPageColumn.FestivalItemId, + &festivalItemForMyPageColumn.FestivalItemName, + &festivalItemForMyPageColumn.Year, + &festivalItemForMyPageColumn.BudgetAmount, + &festivalItemForMyPageColumn.BuyReportId, + &festivalItemForMyPageColumn.PaidBy, + &festivalItemForMyPageColumn.ReportAmount, + &festivalItemForMyPageColumn.ReportDate, + &festivalItemForMyPageColumn.IsPacked, + &festivalItemForMyPageColumn.IsSettled, + ) + if err != nil { + fmt.Println(err) + return festivalItemDetailsList, err + } + festivalItemForMyPageColumns = append(festivalItemForMyPageColumns, festivalItemForMyPageColumn) + } + + festivalItemDetailsList = convertColumnToGenerated(festivalItemForMyPageColumns) + + return festivalItemDetailsList, nil +} + type FestivalItemDetails = generated.FestivalItemDetails type FestivalItem = generated.FestivalItem type FestivalItemWithBalance = generated.FestivalItemWithBalance +type FestivalItemDetailsForMypage = generated.FestivalItemsForMyPage +type FestivalItemWithReport = generated.FestivalItemWithReport +type BuyReport = generated.BuyReportInformation + +func convertColumnToGenerated(festivalItemForMyPageColumns []domain.FestivalItemForMyPageColumn) []FestivalItemDetailsForMypage { + var festivalItemDetailsList []FestivalItemDetailsForMypage + + // 部門ごとにマップを作成 + var festivalItemDetailsForMypageMap = make(map[string]FestivalItemDetailsForMypage) + var festivalItemMaps = make(map[string]map[string]FestivalItemWithReport) + + for _, festivalItemForMyPageColumn := range festivalItemForMyPageColumns { + festivalItemDetailsForMypage := festivalItemDetailsForMypageMap[festivalItemForMyPageColumn.DivisionName] + // 局と部門名前定義 + festivalItemDetailsForMypage.DivisionName = &festivalItemForMyPageColumn.DivisionName + festivalItemDetailsForMypage.FinancialRecordName = &festivalItemForMyPageColumn.FinancialRecordName + + // 予算と支出データ集計 + festivalItemMap := festivalItemMaps[festivalItemForMyPageColumn.DivisionName] + if festivalItemMap == nil { + festivalItemMap = make(map[string]FestivalItemWithReport) + } + festivalItemWithReport := festivalItemMap[festivalItemForMyPageColumn.FestivalItemName] + festivalItemWithReport.FestivalItemName = &festivalItemForMyPageColumn.FestivalItemName + + // totalがなければ定義 + if festivalItemWithReport.FestivalItemTotal == nil { + expense, budget, balance := 0, 0, 0 + var total Total + total.Expense, total.Budget, total.Balance = &expense, &budget, &balance + festivalItemWithReport.FestivalItemTotal = &total + } + + *festivalItemWithReport.FestivalItemTotal.Budget += festivalItemForMyPageColumn.BudgetAmount + *festivalItemWithReport.FestivalItemTotal.Expense += festivalItemForMyPageColumn.ReportAmount + *festivalItemWithReport.FestivalItemTotal.Balance += festivalItemForMyPageColumn.BudgetAmount - festivalItemForMyPageColumn.ReportAmount + + buyReports := festivalItemWithReport.BuyReports + if buyReports == nil { + var buyReportSlice []generated.BuyReportInformation + buyReports = &buyReportSlice + } + + var buyReport BuyReport + buyReport.Id = &festivalItemForMyPageColumn.BuyReportId + buyReport.BuyReportName = &festivalItemForMyPageColumn.PaidBy + buyReport.Amount = &festivalItemForMyPageColumn.ReportAmount + buyReport.ReportDate = &festivalItemForMyPageColumn.ReportDate + + if festivalItemForMyPageColumn.IsSettled { + buyReport.Status = &isSettled + } else if festivalItemForMyPageColumn.IsPacked { + buyReport.Status = &isPacked + } else { + buyReport.Status = &empty + } + + if *buyReport.Amount > 0 { + *buyReports = append(*buyReports, buyReport) + } + + festivalItemWithReport.BuyReports = buyReports + + festivalItemMap[festivalItemForMyPageColumn.FestivalItemName] = festivalItemWithReport + festivalItemMaps[festivalItemForMyPageColumn.DivisionName] = festivalItemMap + + // divisionのtotalがなければ定義 + if festivalItemDetailsForMypage.DivisionTotal == nil { + expense, budget, balance := 0, 0, 0 + var total Total + total.Expense, total.Budget, total.Balance = &expense, &budget, &balance + festivalItemDetailsForMypage.DivisionTotal = &total + } + + festivalItemDetailsForMypageMap[festivalItemForMyPageColumn.DivisionName] = festivalItemDetailsForMypage + } + + for _, festivalItemDetails := range festivalItemDetailsForMypageMap { + newFestivalItemDetails := festivalItemDetails + festivalItems := festivalItemMaps[*festivalItemDetails.DivisionName] + var festivalItemWithReports []FestivalItemWithReport + for _, festivalItem := range festivalItems { + festivalItemWithReports = append(festivalItemWithReports, festivalItem) + *festivalItemDetails.DivisionTotal.Budget += *festivalItem.FestivalItemTotal.Budget + *festivalItemDetails.DivisionTotal.Expense += *festivalItem.FestivalItemTotal.Expense + *festivalItemDetails.DivisionTotal.Balance += *festivalItem.FestivalItemTotal.Balance + } + newFestivalItemDetails.FestivalItems = &festivalItemWithReports + festivalItemDetailsList = append(festivalItemDetailsList, newFestivalItemDetails) + } + return festivalItemDetailsList +} + +var empty = generated.Empty +var isPacked = generated.N1 +var isSettled = generated.N2 diff --git a/api/router/router.go b/api/router/router.go index d8cf0cf65..3f041515f 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -175,6 +175,7 @@ func (r router) ProvideRouter(e *echo.Echo) { // festival items e.GET("/festival_items", r.festivalItemController.IndexFestivalItems) + e.GET("/festival_items/details/:user_id", r.festivalItemController.IndexFestivalItemsForMypage) e.POST("/festival_items", r.festivalItemController.CreateFestivalItem) e.PUT("/festival_items/:id", r.festivalItemController.UpdateFestivalItem) e.DELETE("/festival_items/:id", r.festivalItemController.DestroyFestivalItem) diff --git a/openapi/openapi.yaml b/openapi/openapi.yaml index 596b35b53..a01939b1b 100644 --- a/openapi/openapi.yaml +++ b/openapi/openapi.yaml @@ -1230,25 +1230,32 @@ paths: application/json: schema: type: object - /festival_items/details/{division_id}: + /festival_items/details/{user_id}: get: tags: - festival_item - description: divisionの予算一覧の取得 + description: ユーザーのマイページの予算一覧の取得 parameters: - - name: division_id + - name: user_id in: path - description: division_id + description: user_id required: true schema: type: integer + - name: year + in: query + description: year + schema: + type: integer responses: "200": description: divisionの一覧を取得 content: application/json: schema: - $ref: "#/components/schemas/festivalItemsForMyPage" + type: array + items: + $ref: "#/components/schemas/festivalItemsForMyPage" /financial_records: get: tags: @@ -2655,7 +2662,7 @@ components: enum: - 確認中 - 封詰め - - 生産完了 + - 清算完了 buyReportDetail: description: 購入報告ページで表示する詳細情報 type: object diff --git a/view/next-project/src/generated/hooks.ts b/view/next-project/src/generated/hooks.ts index 13dcbab00..01c4469cf 100644 --- a/view/next-project/src/generated/hooks.ts +++ b/view/next-project/src/generated/hooks.ts @@ -84,6 +84,7 @@ import type { GetExpensesFiscalyearYear200, GetExpensesId200, GetExpensesIdDetails200, + GetFestivalItemsDetailsUserIdParams, GetFestivalItemsParams, GetFinancialRecordsParams, GetFundInformations200, @@ -3486,23 +3487,32 @@ export const useDeleteFestivalItemsId = ( } /** - * divisionの予算一覧の取得 + * ユーザーのマイページの予算一覧の取得 */ -export type getFestivalItemsDetailsDivisionIdResponse = { - data: FestivalItemsForMyPage; +export type getFestivalItemsDetailsUserIdResponse = { + data: FestivalItemsForMyPage[]; status: number; headers: Headers; } -export const getGetFestivalItemsDetailsDivisionIdUrl = (divisionId: number,) => { +export const getGetFestivalItemsDetailsUserIdUrl = (userId: number, + params?: GetFestivalItemsDetailsUserIdParams,) => { + const normalizedParams = new URLSearchParams(); + Object.entries(params || {}).forEach(([key, value]) => { + + if (value !== undefined) { + normalizedParams.append(key, value === null ? 'null' : value.toString()) + } + }); - return `/festival_items/details/${divisionId}` + return normalizedParams.size ? `/festival_items/details/${userId}?${normalizedParams.toString()}` : `/festival_items/details/${userId}` } -export const getFestivalItemsDetailsDivisionId = async (divisionId: number, options?: RequestInit): Promise => { +export const getFestivalItemsDetailsUserId = async (userId: number, + params?: GetFestivalItemsDetailsUserIdParams, options?: RequestInit): Promise => { - return customFetch>(getGetFestivalItemsDetailsDivisionIdUrl(divisionId), + return customFetch>(getGetFestivalItemsDetailsUserIdUrl(userId,params), { ...options, method: 'GET' @@ -3514,19 +3524,21 @@ export const getFestivalItemsDetailsDivisionId = async (divisionId: number, opti -export const getGetFestivalItemsDetailsDivisionIdKey = (divisionId: number,) => [`/festival_items/details/${divisionId}`] as const; +export const getGetFestivalItemsDetailsUserIdKey = (userId: number, + params?: GetFestivalItemsDetailsUserIdParams,) => [`/festival_items/details/${userId}`, ...(params ? [params]: [])] as const; -export type GetFestivalItemsDetailsDivisionIdQueryResult = NonNullable>> -export type GetFestivalItemsDetailsDivisionIdQueryError = unknown +export type GetFestivalItemsDetailsUserIdQueryResult = NonNullable>> +export type GetFestivalItemsDetailsUserIdQueryError = unknown -export const useGetFestivalItemsDetailsDivisionId = ( - divisionId: number, options?: { swr?:SWRConfiguration>, TError> & { swrKey?: Key, enabled?: boolean }, request?: SecondParameter } +export const useGetFestivalItemsDetailsUserId = ( + userId: number, + params?: GetFestivalItemsDetailsUserIdParams, options?: { swr?:SWRConfiguration>, TError> & { swrKey?: Key, enabled?: boolean }, request?: SecondParameter } ) => { const {swr: swrOptions, request: requestOptions} = options ?? {} - const isEnabled = swrOptions?.enabled !== false && !!(divisionId) - const swrKey = swrOptions?.swrKey ?? (() => isEnabled ? getGetFestivalItemsDetailsDivisionIdKey(divisionId) : null); - const swrFn = () => getFestivalItemsDetailsDivisionId(divisionId, requestOptions) + const isEnabled = swrOptions?.enabled !== false && !!(userId) + const swrKey = swrOptions?.swrKey ?? (() => isEnabled ? getGetFestivalItemsDetailsUserIdKey(userId,params) : null); + const swrFn = () => getFestivalItemsDetailsUserId(userId,params, requestOptions) const query = useSwr>, TError>(swrKey, swrFn, swrOptions) diff --git a/view/next-project/src/generated/model/index.ts b/view/next-project/src/generated/model/index.ts index 5980c86bb..992020119 100644 --- a/view/next-project/src/generated/model/index.ts +++ b/view/next-project/src/generated/model/index.ts @@ -81,6 +81,7 @@ export * from './getExpensesDetailsYear200'; export * from './getExpensesFiscalyearYear200'; export * from './getExpensesId200'; export * from './getExpensesIdDetails200'; +export * from './getFestivalItemsDetailsUserIdParams'; export * from './getFestivalItemsParams'; export * from './getFinancialRecordsParams'; export * from './getFundInformations200';