|
@@ -20,7 +20,7 @@ import { |
|
|
Stack, |
|
|
Stack, |
|
|
Typography, |
|
|
Typography, |
|
|
} from "@mui/material"; |
|
|
} from "@mui/material"; |
|
|
import { moneyFormatter } from "@/app/utils/formatUtil"; |
|
|
|
|
|
|
|
|
import { INPUT_DATE_FORMAT, moneyFormatter } from "@/app/utils/formatUtil"; |
|
|
import { EditNote } from "@mui/icons-material"; |
|
|
import { EditNote } from "@mui/icons-material"; |
|
|
import AddIcon from '@mui/icons-material/Add'; |
|
|
import AddIcon from '@mui/icons-material/Add'; |
|
|
import { uniq } from "lodash"; |
|
|
import { uniq } from "lodash"; |
|
@@ -32,6 +32,7 @@ import { useGridApiRef } from "@mui/x-data-grid"; |
|
|
import { GridEventListener } from "@mui/x-data-grid"; |
|
|
import { GridEventListener } from "@mui/x-data-grid"; |
|
|
import { deleteDialog, successDialog } from "../Swal/CustomAlerts"; |
|
|
import { deleteDialog, successDialog } from "../Swal/CustomAlerts"; |
|
|
import { deleteProjectExpense, updateProjectExpense } from "@/app/api/projectExpenses/actions"; |
|
|
import { deleteProjectExpense, updateProjectExpense } from "@/app/api/projectExpenses/actions"; |
|
|
|
|
|
import dayjs from "dayjs"; |
|
|
|
|
|
|
|
|
interface Props { |
|
|
interface Props { |
|
|
expenses: ProjectExpensesResultFormatted[] |
|
|
expenses: ProjectExpensesResultFormatted[] |
|
@@ -51,6 +52,7 @@ const initState: Modals = { |
|
|
type expenseRow = Partial< |
|
|
type expenseRow = Partial< |
|
|
ProjectExpensesResultFormatted & { |
|
|
ProjectExpensesResultFormatted & { |
|
|
_error: ExpenseRowError; |
|
|
_error: ExpenseRowError; |
|
|
|
|
|
issuedDate: Date |
|
|
} |
|
|
} |
|
|
> |
|
|
> |
|
|
|
|
|
|
|
@@ -97,9 +99,9 @@ const ExpenseSearch: React.FC<Props> = ({ expenses, projects }) => { |
|
|
}, |
|
|
}, |
|
|
{ name: "projectCode", label: t("Project Code") }, |
|
|
{ name: "projectCode", label: t("Project Code") }, |
|
|
{ name: "projectName", label: t("Project Name") }, |
|
|
{ name: "projectName", label: t("Project Name") }, |
|
|
{ name: "amount", label: t("Amount") }, |
|
|
|
|
|
|
|
|
{ name: "amount", label: t("Amount (HKD)"), type: 'money', needTranslation: true}, |
|
|
{ name: "teamCode", label: t("Team") }, |
|
|
{ name: "teamCode", label: t("Team") }, |
|
|
// { name: "issueDate", label: t("Issue Date") }, |
|
|
|
|
|
|
|
|
{ name: "issueDate", label: t("Issue Date") }, |
|
|
{ name: "remarks", label: t("Remarks")} |
|
|
{ name: "remarks", label: t("Remarks")} |
|
|
], |
|
|
], |
|
|
[t] |
|
|
[t] |
|
@@ -144,7 +146,9 @@ const ExpenseSearch: React.FC<Props> = ({ expenses, projects }) => { |
|
|
|
|
|
|
|
|
const handleSaveDialog = async () => { |
|
|
const handleSaveDialog = async () => { |
|
|
// setDialogOpen(false); |
|
|
// setDialogOpen(false); |
|
|
console.log(selectedRow[0]) |
|
|
|
|
|
|
|
|
// console.log(selectedRow[0]) |
|
|
|
|
|
selectedRow[0].issueDate = dayjs(selectedRow[0].issuedDate).format(INPUT_DATE_FORMAT) |
|
|
|
|
|
console.log(selectedRow[0]) |
|
|
await updateProjectExpense(selectedRow[0]) |
|
|
await updateProjectExpense(selectedRow[0]) |
|
|
setDialogOpen(false); |
|
|
setDialogOpen(false); |
|
|
successDialog(t("Update Success"), t).then(() => { |
|
|
successDialog(t("Update Success"), t).then(() => { |
|
@@ -231,6 +235,16 @@ const ExpenseSearch: React.FC<Props> = ({ expenses, projects }) => { |
|
|
flex: 0.5, |
|
|
flex: 0.5, |
|
|
type: 'number' |
|
|
type: 'number' |
|
|
}, |
|
|
}, |
|
|
|
|
|
{ field: "issuedDate", |
|
|
|
|
|
headerName: t("Issue Date"), |
|
|
|
|
|
editable: true, |
|
|
|
|
|
flex: 0.4, |
|
|
|
|
|
type: 'date', |
|
|
|
|
|
valueGetter: (params) => { |
|
|
|
|
|
// console.log(params.row.issuedDate) |
|
|
|
|
|
return new Date(params.row.issuedDate) |
|
|
|
|
|
}, |
|
|
|
|
|
}, |
|
|
{ |
|
|
{ |
|
|
field: "remarks", |
|
|
field: "remarks", |
|
|
headerName: t("Remarks"), |
|
|
headerName: t("Remarks"), |
|
|