Parcourir la source

update invoice search money format

saturday_normal_hour
cyril.tsui il y a 6 mois
Parent
révision
9ff4921b6f
1 fichiers modifiés avec 61 ajouts et 4 suppressions
  1. +61
    -4
      src/components/InvoiceSearch/InvoiceSearch.tsx

+ 61
- 4
src/components/InvoiceSearch/InvoiceSearch.tsx Voir le fichier

@@ -13,7 +13,7 @@ import { deleteInvoice, importIssuedInovice, importReceivedInovice, updateInvoic
import { deleteDialog, errorDialogWithContent, successDialog } from "../Swal/CustomAlerts";
import { invoiceList, issuedInvoiceList, issuedInvoiceSearchForm, receivedInvoiceList, receivedInvoiceSearchForm } from "@/app/api/invoices";
import EditOutlinedIcon from '@mui/icons-material/EditOutlined';
import { GridCellParams, GridColDef, GridEventListener, GridRowId, GridRowModes, GridRowModesModel } from "@mui/x-data-grid";
import { GridCellParams, GridColDef, GridEventListener, GridRenderEditCellParams, GridRowId, GridRowModes, GridRowModesModel, GridValueFormatterParams } from "@mui/x-data-grid";
import { useGridApiRef } from "@mui/x-data-grid";
import StyledDataGrid from "../StyledDataGrid";

@@ -22,8 +22,11 @@ import CreateInvoiceModal from "./CreateInvoiceModal";
import { ProjectResult } from "@/app/api/projects";
import { IMPORT_INVOICE, IMPORT_RECEIPT } from "@/middleware";
import InvoiceSearchLoading from "./InvoiceSearchLoading";
import { NumberFormatValues, NumericFormat } from "react-number-format";


interface CustomMoneyComponentProps {
params: GridRenderEditCellParams;
}

interface Props {
invoices: invoiceList[];
@@ -287,6 +290,48 @@ const InvoiceSearch: React.FC<Props> & SubComponents = ({ invoices, projects, ab
// setSelectedRow([]);
};

// Money format : 000,000,000.00
const CustomMoneyFormat = useCallback((value: number) => {
if (value) {
return moneyFormatter.format(value);
} else {
return ""
}
}, [])

const CustomMoneyComponent: React.FC<CustomMoneyComponentProps> = ({ params }) => {
const { id, value, field } = params;
const ref = React.useRef();

const handleValueChange = (newValue: NumberFormatValues) => {
apiRef.current.setEditCellValue({ id, field, value: newValue.value });
};

return <NumericFormat
fullWidth
prefix="HK$"
onValueChange={(values) => {
console.log(values)
handleValueChange(values)
}}
customInput={TextField}
thousandSeparator
valueIsNumericString
decimalScale={2}
fixedDecimalScale
value={value}
inputRef={ref}
InputProps={{
sx: {
'& .MuiInputBase-input': {
textAlign: 'right',
mb: 2
}
}
}}
/>;
}

const combinedColumns = useMemo<Column<invoiceList>[]>(
() => [
{
@@ -329,7 +374,13 @@ const InvoiceSearch: React.FC<Props> & SubComponents = ({ invoices, projects, ab
headerName: t("Amount (HKD)"),
editable: true,
flex: 0.5,
type: 'number'
type: 'number',
renderEditCell: (params: GridRenderEditCellParams) => {
return <CustomMoneyComponent params={params} />
},
valueFormatter: (params: GridValueFormatterParams) => {
return CustomMoneyFormat(params.value as number)
}
},
{
field: "receiptDate",
@@ -351,7 +402,13 @@ const InvoiceSearch: React.FC<Props> & SubComponents = ({ invoices, projects, ab
headerName: t("Actual Received Amount (HKD)"),
editable: true,
flex: 0.5,
type: 'number'
type: 'number',
renderEditCell: (params: GridRenderEditCellParams) => {
return <CustomMoneyComponent params={params} />
},
valueFormatter: (params: GridValueFormatterParams) => {
return CustomMoneyFormat(params.value as number)
}
},
],
[t]


Chargement…
Annuler
Enregistrer