| @@ -41,7 +41,7 @@ import { ProjectCombo } from "@/app/api/claims"; | |||||
| import { ClaimDetailTable, ClaimInputFormByStaff } from "@/app/api/claims/actions"; | import { ClaimDetailTable, ClaimInputFormByStaff } from "@/app/api/claims/actions"; | ||||
| import { useFieldArray, useFormContext } from "react-hook-form"; | import { useFieldArray, useFormContext } from "react-hook-form"; | ||||
| import { GridRenderEditCellParams } from "@mui/x-data-grid"; | import { GridRenderEditCellParams } from "@mui/x-data-grid"; | ||||
| import { convertDateToString } from "@/app/utils/formatUtil"; | |||||
| import { convertDateToString, moneyFormatter } from "@/app/utils/formatUtil"; | |||||
| interface BottomBarProps { | interface BottomBarProps { | ||||
| getCostTotal: () => number; | getCostTotal: () => number; | ||||
| @@ -397,11 +397,12 @@ const ClaimFormInputGrid: React.FC<ClaimFormInputGridProps> = ({ | |||||
| }, | }, | ||||
| { | { | ||||
| field: "amount", | field: "amount", | ||||
| headerName: t("Amount (HKD)"), | |||||
| headerName: t("Amount"), | |||||
| editable: true, | editable: true, | ||||
| type: "number", | type: "number", | ||||
| align: "right", | |||||
| valueFormatter: (params) => { | valueFormatter: (params) => { | ||||
| return `$ ${params.value ?? 0}`; | |||||
| return moneyFormatter.format(params.value ?? 0); | |||||
| }, | }, | ||||
| }, | }, | ||||
| { | { | ||||
| @@ -423,7 +424,7 @@ const ClaimFormInputGrid: React.FC<ClaimFormInputGridProps> = ({ | |||||
| ); | ); | ||||
| }, | }, | ||||
| renderEditCell: (params) => { | renderEditCell: (params) => { | ||||
| const currentRow = rows.find(row => row.id === params.row.id); | |||||
| // const currentRow = rows.find(row => row.id === params.row.id); | |||||
| return params.formattedValue ? ( | return params.formattedValue ? ( | ||||
| <span> | <span> | ||||
| <Link onClick={() => handleLinkClick(params)} href="#">{params.formattedValue}</Link> | <Link onClick={() => handleLinkClick(params)} href="#">{params.formattedValue}</Link> | ||||
| @@ -20,6 +20,7 @@ type SearchParamNames = keyof SearchQuery; | |||||
| const ClaimSearch: React.FC<Props> = ({ claims }) => { | const ClaimSearch: React.FC<Props> = ({ claims }) => { | ||||
| const { t } = useTranslation(); | const { t } = useTranslation(); | ||||
| console.log(claims) | |||||
| // If claim searching is done on the server-side, then no need for this. | // If claim searching is done on the server-side, then no need for this. | ||||
| const [filteredClaims, setFilteredClaims] = useState(claims); | const [filteredClaims, setFilteredClaims] = useState(claims); | ||||
| @@ -58,7 +59,7 @@ const ClaimSearch: React.FC<Props> = ({ claims }) => { | |||||
| { name: "created", label: t("Creation Date"), type: "date" }, | { name: "created", label: t("Creation Date"), type: "date" }, | ||||
| { name: "code", label: t("Claim Code") }, | { name: "code", label: t("Claim Code") }, | ||||
| // { name: "project", label: t("Related Project Name") }, | // { name: "project", label: t("Related Project Name") }, | ||||
| { name: "amount", label: t("Amount (HKD)") }, | |||||
| { name: "amount", label: t("Amount"), type: "money" }, | |||||
| { name: "type", label: t("Expense Type"), needTranslation: true }, | { name: "type", label: t("Expense Type"), needTranslation: true }, | ||||
| { name: "status", label: t("Status"), needTranslation: true }, | { name: "status", label: t("Status"), needTranslation: true }, | ||||
| { name: "remarks", label: t("Remarks") }, | { name: "remarks", label: t("Remarks") }, | ||||
| @@ -14,7 +14,7 @@ import TableRow from "@mui/material/TableRow"; | |||||
| import IconButton, { IconButtonOwnProps, IconButtonPropsColorOverrides } from "@mui/material/IconButton"; | import IconButton, { IconButtonOwnProps, IconButtonPropsColorOverrides } from "@mui/material/IconButton"; | ||||
| import { t } from "i18next"; | import { t } from "i18next"; | ||||
| import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
| import { convertDateArrayToString } from "@/app/utils/formatUtil"; | |||||
| import { convertDateArrayToString, moneyFormatter } from "@/app/utils/formatUtil"; | |||||
| export interface ResultWithId { | export interface ResultWithId { | ||||
| id: string | number; | id: string | number; | ||||
| @@ -80,7 +80,7 @@ function SearchResults<T extends ResultWithId>({ | |||||
| <TableRow> | <TableRow> | ||||
| {columns.map((column, idx) => ( | {columns.map((column, idx) => ( | ||||
| <TableCell key={`${column.name.toString()}${idx}`}> | <TableCell key={`${column.name.toString()}${idx}`}> | ||||
| {column.label} | |||||
| {column?.type === "money" ? <div style={{display: "flex", justifyContent: "flex-end"}}>{column.label}</div> : column.label} | |||||
| </TableCell> | </TableCell> | ||||
| ))} | ))} | ||||
| </TableRow> | </TableRow> | ||||
| @@ -106,6 +106,9 @@ function SearchResults<T extends ResultWithId>({ | |||||
| ) : | ) : | ||||
| column?.type === "date" ? ( | column?.type === "date" ? ( | ||||
| <>{convertDateArrayToString(item[columnName] as number[])}</> | <>{convertDateArrayToString(item[columnName] as number[])}</> | ||||
| ) : | |||||
| column?.type === "money" ? ( | |||||
| <div style={{display: "flex", justifyContent: "flex-end"}}>{moneyFormatter.format(item[columnName] as number)}</div> | |||||
| ) : | ) : | ||||
| ( | ( | ||||
| <>{column?.needTranslation ? t(item[columnName] as string) : item[columnName]}</> | <>{column?.needTranslation ? t(item[columnName] as string) : item[columnName]}</> | ||||
| @@ -8,7 +8,7 @@ | |||||
| "Related Project Name": "Related Project Name", | "Related Project Name": "Related Project Name", | ||||
| "Expense Type": "Expense Type", | "Expense Type": "Expense Type", | ||||
| "Status": "Status", | "Status": "Status", | ||||
| "Amount (HKD)": "Amount (HKD)", | |||||
| "Amount": "Amount", | |||||
| "Remarks": "Remarks", | "Remarks": "Remarks", | ||||
| "Invoice Date": "Invoice Date", | "Invoice Date": "Invoice Date", | ||||
| "Supporting Document": "Supporting Document", | "Supporting Document": "Supporting Document", | ||||
| @@ -8,7 +8,7 @@ | |||||
| "Related Project Name": "相關項目名稱", | "Related Project Name": "相關項目名稱", | ||||
| "Expense Type": "費用類別", | "Expense Type": "費用類別", | ||||
| "Status": "狀態", | "Status": "狀態", | ||||
| "Amount (HKD)": "金額 (HKD)", | |||||
| "Amount": "金額", | |||||
| "Remarks": "備註", | "Remarks": "備註", | ||||
| "Invoice Date": "收據日期", | "Invoice Date": "收據日期", | ||||
| "Supporting Document": "支援文件", | "Supporting Document": "支援文件", | ||||