@@ -127,6 +127,7 @@ export function FiDataGrid({ rows, columns, sx, autoHeight, | |||||
<DataGrid | <DataGrid | ||||
{...props} | {...props} | ||||
rows={_rows} | rows={_rows} | ||||
rowCount={rowCount?rowCount:0} | |||||
columns={_columns} | columns={_columns} | ||||
paginationMode="server" | paginationMode="server" | ||||
disableColumnMenu | disableColumnMenu | ||||
@@ -19,7 +19,8 @@ import { | |||||
DEMAND_NOTE_SEND, | DEMAND_NOTE_SEND, | ||||
DEMAND_NOTE_ATTACH, | DEMAND_NOTE_ATTACH, | ||||
DEMAND_NOTE_MARK_PAID, | DEMAND_NOTE_MARK_PAID, | ||||
DEMAND_NOTE_LIST_ALL | |||||
DEMAND_NOTE_LIST_ALL, | |||||
DEMAND_NOTE_REVOKE_PAID | |||||
} from "utils/ApiPathConst"; | } from "utils/ApiPathConst"; | ||||
import * as HttpUtils from "utils/HttpUtils"; | import * as HttpUtils from "utils/HttpUtils"; | ||||
import { PNSPS_BUTTON_THEME } from "themes/buttonConst"; | import { PNSPS_BUTTON_THEME } from "themes/buttonConst"; | ||||
@@ -27,16 +28,17 @@ import { ThemeProvider } from "@emotion/react"; | |||||
import { isGrantedAny } from "auth/utils"; | import { isGrantedAny } from "auth/utils"; | ||||
// ==============================|| EVENT TABLE ||============================== // | // ==============================|| EVENT TABLE ||============================== // | ||||
export default function SearchDemandNote({ searchCriteria, applySearch }) { | |||||
export default function SearchDemandNote({ applySearch, searchCriteria }) { | |||||
const [isConfirmPopUp, setConfirmPopUp] = useState(false); | const [isConfirmPopUp, setConfirmPopUp] = useState(false); | ||||
const [isRevokePopUp, setRevokePopUp] = useState(false); | |||||
const [isSendPopUp, setSendPopUp] = useState(false); | const [isSendPopUp, setSendPopUp] = useState(false); | ||||
const [isErrorPopUp, setIsErrorPopUp] = useState(false); | const [isErrorPopUp, setIsErrorPopUp] = useState(false); | ||||
const [selectonWarning, setSelectonWarning] = useState(false); | const [selectonWarning, setSelectonWarning] = useState(false); | ||||
const [wait, setWait] = useState(false); | const [wait, setWait] = useState(false); | ||||
const [reload, setReload] = useState(new Date()); | |||||
const [rows, setRows] = useState([]); | const [rows, setRows] = useState([]); | ||||
const [_searchCriteria, set_searchCriteria] = useState(searchCriteria); | |||||
const [_searchCriteria, set_searchCriteria] = useState({}); | |||||
const [selectedRowItems, setSelectedRowItems] = useState([]); | const [selectedRowItems, setSelectedRowItems] = useState([]); | ||||
const navigate = useNavigate() | const navigate = useNavigate() | ||||
@@ -44,6 +46,7 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { | |||||
set_searchCriteria(searchCriteria); | set_searchCriteria(searchCriteria); | ||||
}, [searchCriteria]); | }, [searchCriteria]); | ||||
const handleDnClick = (params) => () => { | const handleDnClick = (params) => () => { | ||||
navigate('/paymentPage/demandNote/details/' + params.id); | navigate('/paymentPage/demandNote/details/' + params.id); | ||||
}; | }; | ||||
@@ -109,7 +112,7 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { | |||||
dnIdList: idList | dnIdList: idList | ||||
}, | }, | ||||
onSuccess: () => { | onSuccess: () => { | ||||
if (reloadFun) reloadFun(); | |||||
setReload(new Date()); | |||||
} | } | ||||
}); | }); | ||||
@@ -133,13 +136,36 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { | |||||
}, | }, | ||||
files: [file], | files: [file], | ||||
onSuccess() { | onSuccess() { | ||||
setWait(false); | |||||
if (reloadFun) reloadFun(); | |||||
setReload(new Date()); | |||||
}, | }, | ||||
}); | }); | ||||
document.getElementById("uploadFileBtn").value = ""; | document.getElementById("uploadFileBtn").value = ""; | ||||
} | } | ||||
const revokePaid = () => { | |||||
setRevokePopUp(false); | |||||
let idList = []; | |||||
const datas = rows?.filter((row) => | |||||
selectedRowItems.includes(row.id) | |||||
); | |||||
if (datas?.length < 1) { | |||||
setSelectonWarning(true); | |||||
return; | |||||
} | |||||
for (var i = 0; i < datas?.length; i++) { | |||||
idList.push(datas[i].id); | |||||
} | |||||
HttpUtils.post({ | |||||
url: DEMAND_NOTE_REVOKE_PAID, | |||||
params: { | |||||
dnIdList: idList | |||||
}, | |||||
onSuccess: () => { | |||||
setReload(new Date()); | |||||
} | |||||
}); | |||||
} | |||||
const markPaid = () => { | const markPaid = () => { | ||||
setConfirmPopUp(false); | setConfirmPopUp(false); | ||||
let idList = []; | let idList = []; | ||||
@@ -159,7 +185,7 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { | |||||
dnIdList: idList | dnIdList: idList | ||||
}, | }, | ||||
onSuccess: () => { | onSuccess: () => { | ||||
if (reloadFun) reloadFun(); | |||||
setReload(new Date()); | |||||
} | } | ||||
}); | }); | ||||
} | } | ||||
@@ -240,9 +266,11 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { | |||||
width: 300, | width: 300, | ||||
renderCell: (params) => { | renderCell: (params) => { | ||||
return (<table> | return (<table> | ||||
<tr><td>Issue:</td><td>{DateUtils.dateStr(params?.row.issueDate)}</td></tr> | |||||
<tr><td>Due:</td><td>{params?.value ? DateUtils.dateStr(params?.value) : "--"}</td></tr> | |||||
<tr><td>Sent:</td><td>{params.row.sentDate ? <> {DateUtils.datetimeStr(params.row.sentDate)} - {params.row.sentBy} </> : <> To be sent</>}</td></tr> | |||||
<tbody> | |||||
<tr><td>Issue:</td><td>{DateUtils.dateStr(params?.row.issueDate)}</td></tr> | |||||
<tr><td>Due:</td><td>{params?.value ? DateUtils.dateStr(params?.value) : "--"}</td></tr> | |||||
<tr><td>Sent:</td><td>{params.row.sentDate ? DateUtils.datetimeStr(params.row.sentDate) - params.row.sentBy : "To be sent"}</td></tr> | |||||
</tbody> | |||||
</table>); | </table>); | ||||
} | } | ||||
}, | }, | ||||
@@ -262,7 +290,7 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { | |||||
headerName: 'Status', | headerName: 'Status', | ||||
width: 175, | width: 175, | ||||
renderCell: (params) => { | renderCell: (params) => { | ||||
return [StatusUtils.getStatus_Eng(params)] | |||||
return StatusUtils.getStatus_Eng(params) | |||||
}, | }, | ||||
}, | }, | ||||
]; | ]; | ||||
@@ -300,6 +328,7 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { | |||||
</Button> | </Button> | ||||
</label> | </label> | ||||
</Grid> | </Grid> | ||||
<Grid item sx={{ ml: 3, mr: 3, mb: 3, mt: 3 }}> | <Grid item sx={{ ml: 3, mr: 3, mb: 3, mt: 3 }}> | ||||
<Button | <Button | ||||
variant="contained" | variant="contained" | ||||
@@ -334,13 +363,23 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { | |||||
Mark as Paid | Mark as Paid | ||||
</Button> | </Button> | ||||
</Grid> | </Grid> | ||||
<Grid item sx={{ ml: 3, mr: 3, mb: 3, mt: 3 }}> | |||||
<Button | |||||
variant="contained" | |||||
onClick={() => setRevokePopUp(true)} | |||||
> | |||||
Revoke as To be Paid | |||||
</Button> | |||||
</Grid> | |||||
</ThemeProvider> | </ThemeProvider> | ||||
</Grid> | </Grid> | ||||
: <></> | : <></> | ||||
} | } | ||||
<Box sx={{ backgroundColor: "#fff", ml: 2 }} width="98%"> | <Box sx={{ backgroundColor: "#fff", ml: 2 }} width="98%"> | ||||
<FiDataGrid | <FiDataGrid | ||||
checkboxSelection = {isGrantedAny(["MAINTAIN_DEMANDNOTE"])} | |||||
checkboxSelection={isGrantedAny(["MAINTAIN_DEMANDNOTE"])} | |||||
disableRowSelectionOnClick | disableRowSelectionOnClick | ||||
onRowSelectionModelChange={(newSelection) => { | onRowSelectionModelChange={(newSelection) => { | ||||
setSelectedRowItems(newSelection); | setSelectedRowItems(newSelection); | ||||
@@ -355,7 +394,7 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { | |||||
callback: function (responseData) { | callback: function (responseData) { | ||||
setRows(responseData?.records); | setRows(responseData?.records); | ||||
} | } | ||||
}), [_searchCriteria])} | |||||
}), [_searchCriteria, reload])} | |||||
/> | /> | ||||
</Box> | </Box> | ||||
<div> | <div> | ||||
@@ -422,6 +461,28 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { | |||||
</DialogActions> | </DialogActions> | ||||
</Dialog> | </Dialog> | ||||
</div> | </div> | ||||
<div> | |||||
<Dialog | |||||
open={isRevokePopUp} | |||||
onClose={() => setRevokePopUp(false)} | |||||
PaperProps={{ | |||||
sx: { | |||||
minWidth: '40vw', | |||||
maxWidth: { xs: '90vw', s: '90vw', m: '70vw', lg: '70vw' }, | |||||
maxHeight: { xs: '90vh', s: '70vh', m: '70vh', lg: '60vh' } | |||||
} | |||||
}} | |||||
> | |||||
<DialogTitle><Typography variant="h3">Confirm</Typography></DialogTitle> | |||||
<DialogContent style={{ display: 'flex', }}> | |||||
<Typography variant="h4" style={{ padding: '16px' }}>Are you sure to revoke DN as To Be Paid?</Typography> | |||||
</DialogContent> | |||||
<DialogActions> | |||||
<Button onClick={() => setRevokePopUp(false)}><Typography variant="h5">Cancel</Typography></Button> | |||||
<Button onClick={() => revokePaid()}><Typography variant="h5">Confirm</Typography></Button> | |||||
</DialogActions> | |||||
</Dialog> | |||||
</div> | |||||
<div> | <div> | ||||
<Dialog | <Dialog | ||||
open={isSendPopUp} | open={isSendPopUp} | ||||
@@ -72,7 +72,6 @@ const UserSearchPage_Individual = () => { | |||||
}); | }); | ||||
} | } | ||||
function applySearch(input) { | function applySearch(input) { | ||||
setSearchCriteria(input); | setSearchCriteria(input); | ||||
} | } | ||||
@@ -68,11 +68,27 @@ const Index = ({ record }) => { | |||||
}, | }, | ||||
) | ) | ||||
}} /> | }} /> | ||||
<br /> | |||||
<br /> | |||||
<div dangerouslySetInnerHTML={{ | <div dangerouslySetInnerHTML={{ | ||||
__html: intl.formatMessage( | __html: intl.formatMessage( | ||||
{ | { | ||||
id: 'proofPaymentBody_office3' | id: 'proofPaymentBody_office3' | ||||
} | |||||
) | |||||
}} /> | |||||
<br /> | |||||
<div dangerouslySetInnerHTML={{ | |||||
__html: intl.formatMessage( | |||||
{ | |||||
id: 'proofPaymentBody_office4' | |||||
} | |||||
) | |||||
}} /> | |||||
<br /> | |||||
<div dangerouslySetInnerHTML={{ | |||||
__html: intl.formatMessage( | |||||
{ | |||||
id: 'proofPaymentBody_office5' | |||||
}, | }, | ||||
{ | { | ||||
paymentDeadline: DateUtils.dateStr(record?.closingDate), | paymentDeadline: DateUtils.dateStr(record?.closingDate), | ||||
@@ -83,7 +99,7 @@ const Index = ({ record }) => { | |||||
<div dangerouslySetInnerHTML={{ | <div dangerouslySetInnerHTML={{ | ||||
__html: intl.formatMessage( | __html: intl.formatMessage( | ||||
{ | { | ||||
id: 'proofPaymentBody_office4' | |||||
id: 'proofPaymentBody_office6' | |||||
} | } | ||||
) | ) | ||||
}} /> | }} /> | ||||
@@ -319,86 +319,7 @@ const FormPanel = ({ formData }) => { | |||||
isDummyLoggedIn() ? | isDummyLoggedIn() ? | ||||
<Grid item xs={12} sx={{ mb: 1, }}> | <Grid item xs={12} sx={{ mb: 1, }}> | ||||
<table style={tabelStyle}> | <table style={tabelStyle}> | ||||
<tr style={tabelStyle}> | |||||
<th style={tabelStyle} width="50" align="left"></th> | |||||
<th style={tabelStyle} width="300" align="left"><FormattedMessage id="paymentMeans" /></th> | |||||
<th style={tabelStyle} width="300" align="left"><FormattedMessage id="confirmingDealine" /></th> | |||||
<th style={tabelStyle} width="400" align="left"><FormattedMessage id="PaymentCoonpletDealine" /></th> | |||||
</tr> | |||||
<tr> | |||||
<td style={tabelStyle}> | |||||
<Checkbox | |||||
checked={paymentMethod == "demandNote"} | |||||
onChange={() => { | |||||
set_paymentMethod("demandNote") | |||||
}} | |||||
/> | |||||
</td> | |||||
<td style={tabelStyle}> | |||||
<FormattedMessage id="payDn" /> | |||||
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | |||||
setWarningTitle(intl.formatMessage({ id: "payDn" })) | |||||
setWarningText( | |||||
<><FormattedMessage id="paymentMethodMeans" /> | |||||
<ul> | |||||
<li><FormattedMessage id="atm" /></li> | |||||
<li><FormattedMessage id="pps" /></li> | |||||
<li><FormattedMessage id="eBank" /></li> | |||||
<li><FormattedMessage id="phoneBank" /></li> | |||||
<li><FormattedMessage id="eCheque" /></li> | |||||
<li><FormattedMessage id="fps" /></li> | |||||
<li><FormattedMessage id="hkpo" /></li> | |||||
<li><FormattedMessage id="store" /></li> | |||||
<li><FormattedMessage id="post" /></li> | |||||
</ul> | |||||
</> | |||||
); | |||||
setIsWarningPopUp(true); | |||||
}}><FormattedMessage id="viewDetail" /></a> | |||||
</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(formData.closingDateOff, intl.formatMessage({ id: "dateStrFormat" }))} 5:00 p.m.</td> | |||||
<td style={tabelStyle}> | |||||
<FormattedMessage id="payDnRemark" values={{ | |||||
date: DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" })) + " 12:00 p.m." | |||||
}} /> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style={tabelStyle}> | |||||
<Checkbox | |||||
checked={paymentMethod == "office"} | |||||
onChange={() => { | |||||
set_paymentMethod("office") | |||||
}} | |||||
/> | |||||
</td> | |||||
<td style={tabelStyle}> | |||||
<FormattedMessage id="payNPGO" /> | |||||
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | |||||
setWarningTitle(intl.formatMessage({ id: "payNPGO" })) | |||||
setWarningText( | |||||
<><FormattedMessage id="paymentMethodMeans" /> | |||||
<ul> | |||||
<li><FormattedMessage id="cheque" /></li> | |||||
<li><FormattedMessage id="cash" /></li> | |||||
</ul> | |||||
</> | |||||
); | |||||
setIsWarningPopUp(true); | |||||
}}><FormattedMessage id="viewDetail" /></a> | |||||
</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" }))} 12:00 p.m.</td> | |||||
<td style={tabelStyle}> | |||||
<FormattedMessage id="payNPGORemark" values={{ | |||||
date: DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" })) + " 12:30 p.m." | |||||
}} /> | |||||
</td> | |||||
</tr> | |||||
</table> | |||||
</Grid> : | |||||
<> | |||||
<Grid item xs={12} sx={{ mb: 1, }}> | |||||
<table style={tabelStyle}> | |||||
<tbody> | |||||
<tr style={tabelStyle}> | <tr style={tabelStyle}> | ||||
<th style={tabelStyle} width="50" align="left"></th> | <th style={tabelStyle} width="50" align="left"></th> | ||||
<th style={tabelStyle} width="300" align="left"><FormattedMessage id="paymentMeans" /></th> | <th style={tabelStyle} width="300" align="left"><FormattedMessage id="paymentMeans" /></th> | ||||
@@ -408,43 +329,12 @@ const FormPanel = ({ formData }) => { | |||||
<tr> | <tr> | ||||
<td style={tabelStyle}> | <td style={tabelStyle}> | ||||
<Checkbox | <Checkbox | ||||
checked={paymentMethod == "online"} | |||||
checked={paymentMethod == "demandNote"} | |||||
onChange={() => { | onChange={() => { | ||||
set_paymentMethod("online") | |||||
set_paymentMethod("demandNote") | |||||
}} | }} | ||||
/> | /> | ||||
</td> | </td> | ||||
<td style={tabelStyle}> | |||||
<FormattedMessage id="payOnline" /> | |||||
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | |||||
setWarningTitle(intl.formatMessage({ id: "payOnline" })) | |||||
setWarningText( | |||||
<><FormattedMessage id="paymentMethodMeans" /> | |||||
<ul> | |||||
<li><FormattedMessage id="fps" /></li> | |||||
<li><FormattedMessage id="card" /></li> | |||||
<li><FormattedMessage id="pps" /></li> | |||||
</ul> | |||||
</> | |||||
); | |||||
setIsWarningPopUp(true); | |||||
}}><FormattedMessage id="viewDetail" /></a> | |||||
</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(formData.proofPaymentDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")}</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(formData.expiryDate, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")}</td> | |||||
</tr> | |||||
<tr> | |||||
<td style={tabelStyle}> | |||||
{isOverDnReviseDeadline() ? | |||||
<></> : | |||||
<Checkbox | |||||
checked={paymentMethod == "demandNote"} | |||||
onChange={() => { | |||||
set_paymentMethod("demandNote") | |||||
}} | |||||
/> | |||||
} | |||||
</td> | |||||
<td style={tabelStyle}> | <td style={tabelStyle}> | ||||
<FormattedMessage id="payDn" /> | <FormattedMessage id="payDn" /> | ||||
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | <br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | ||||
@@ -467,7 +357,6 @@ const FormPanel = ({ formData }) => { | |||||
setIsWarningPopUp(true); | setIsWarningPopUp(true); | ||||
}}><FormattedMessage id="viewDetail" /></a> | }}><FormattedMessage id="viewDetail" /></a> | ||||
</td> | </td> | ||||
<td style={tabelStyle}>{DateUtils.dateFormat(formData.closingDateOff, intl.formatMessage({ id: "dateStrFormat" }))} 5:00 p.m.</td> | <td style={tabelStyle}>{DateUtils.dateFormat(formData.closingDateOff, intl.formatMessage({ id: "dateStrFormat" }))} 5:00 p.m.</td> | ||||
<td style={tabelStyle}> | <td style={tabelStyle}> | ||||
<FormattedMessage id="payDnRemark" values={{ | <FormattedMessage id="payDnRemark" values={{ | ||||
@@ -475,19 +364,14 @@ const FormPanel = ({ formData }) => { | |||||
}} /> | }} /> | ||||
</td> | </td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td style={tabelStyle}> | <td style={tabelStyle}> | ||||
{ | |||||
isOverNpgoReviseDeadline() ? | |||||
<></> : | |||||
<Checkbox | |||||
checked={paymentMethod == "office"} | |||||
onChange={() => { | |||||
set_paymentMethod("office") | |||||
}} | |||||
/> | |||||
} | |||||
<Checkbox | |||||
checked={paymentMethod == "office"} | |||||
onChange={() => { | |||||
set_paymentMethod("office") | |||||
}} | |||||
/> | |||||
</td> | </td> | ||||
<td style={tabelStyle}> | <td style={tabelStyle}> | ||||
<FormattedMessage id="payNPGO" /> | <FormattedMessage id="payNPGO" /> | ||||
@@ -511,7 +395,126 @@ const FormPanel = ({ formData }) => { | |||||
}} /> | }} /> | ||||
</td> | </td> | ||||
</tr> | </tr> | ||||
</tbody> | |||||
</table> | |||||
</Grid> : | |||||
<> | |||||
<Grid item xs={12} sx={{ mb: 1, }}> | |||||
<table style={tabelStyle}> | |||||
<tbody> | |||||
<tr style={tabelStyle}> | |||||
<th style={tabelStyle} width="50" align="left"></th> | |||||
<th style={tabelStyle} width="300" align="left"><FormattedMessage id="paymentMeans" /></th> | |||||
<th style={tabelStyle} width="300" align="left"><FormattedMessage id="confirmingDealine" /></th> | |||||
<th style={tabelStyle} width="400" align="left"><FormattedMessage id="PaymentCoonpletDealine" /></th> | |||||
</tr> | |||||
<tr> | |||||
<td style={tabelStyle}> | |||||
<Checkbox | |||||
checked={paymentMethod == "online"} | |||||
onChange={() => { | |||||
set_paymentMethod("online") | |||||
}} | |||||
/> | |||||
</td> | |||||
<td style={tabelStyle}> | |||||
<FormattedMessage id="payOnline" /> | |||||
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | |||||
setWarningTitle(intl.formatMessage({ id: "payOnline" })) | |||||
setWarningText( | |||||
<><FormattedMessage id="paymentMethodMeans" /> | |||||
<ul> | |||||
<li><FormattedMessage id="fps" /></li> | |||||
<li><FormattedMessage id="card" /></li> | |||||
<li><FormattedMessage id="pps" /></li> | |||||
</ul> | |||||
</> | |||||
); | |||||
setIsWarningPopUp(true); | |||||
}}><FormattedMessage id="viewDetail" /></a> | |||||
</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(formData.proofPaymentDeadline, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")}</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(formData.expiryDate, intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }))?.replace("am", "a.m.")?.replace("pm", "p.m.")}</td> | |||||
</tr> | |||||
<tr> | |||||
<td style={tabelStyle}> | |||||
{isOverDnReviseDeadline() ? | |||||
<></> : | |||||
<Checkbox | |||||
checked={paymentMethod == "demandNote"} | |||||
onChange={() => { | |||||
set_paymentMethod("demandNote") | |||||
}} | |||||
/> | |||||
} | |||||
</td> | |||||
<td style={tabelStyle}> | |||||
<FormattedMessage id="payDn" /> | |||||
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | |||||
setWarningTitle(intl.formatMessage({ id: "payDn" })) | |||||
setWarningText( | |||||
<><FormattedMessage id="paymentMethodMeans" /> | |||||
<ul> | |||||
<li><FormattedMessage id="atm" /></li> | |||||
<li><FormattedMessage id="pps" /></li> | |||||
<li><FormattedMessage id="eBank" /></li> | |||||
<li><FormattedMessage id="phoneBank" /></li> | |||||
<li><FormattedMessage id="eCheque" /></li> | |||||
<li><FormattedMessage id="fps" /></li> | |||||
<li><FormattedMessage id="hkpo" /></li> | |||||
<li><FormattedMessage id="store" /></li> | |||||
<li><FormattedMessage id="post" /></li> | |||||
</ul> | |||||
</> | |||||
); | |||||
setIsWarningPopUp(true); | |||||
}}><FormattedMessage id="viewDetail" /></a> | |||||
</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(formData.closingDateOff, intl.formatMessage({ id: "dateStrFormat" }))} 5:00 p.m.</td> | |||||
<td style={tabelStyle}> | |||||
<FormattedMessage id="payDnRemark" values={{ | |||||
date: DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" })) + " 12:00 p.m." | |||||
}} /> | |||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td style={tabelStyle}> | |||||
{ | |||||
isOverNpgoReviseDeadline() ? | |||||
<></> : | |||||
<Checkbox | |||||
checked={paymentMethod == "office"} | |||||
onChange={() => { | |||||
set_paymentMethod("office") | |||||
}} | |||||
/> | |||||
} | |||||
</td> | |||||
<td style={tabelStyle}> | |||||
<FormattedMessage id="payNPGO" /> | |||||
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | |||||
setWarningTitle(intl.formatMessage({ id: "payNPGO" })) | |||||
setWarningText( | |||||
<><FormattedMessage id="paymentMethodMeans" /> | |||||
<ul> | |||||
<li><FormattedMessage id="cheque" /></li> | |||||
<li><FormattedMessage id="cash" /></li> | |||||
</ul> | |||||
</> | |||||
); | |||||
setIsWarningPopUp(true); | |||||
}}><FormattedMessage id="viewDetail" /></a> | |||||
</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" }))} 12:00 p.m.</td> | |||||
<td style={tabelStyle}> | |||||
<FormattedMessage id="payNPGORemark" values={{ | |||||
date: DateUtils.dateFormat(formData.closingDate, intl.formatMessage({ id: "dateStrFormat" })) + " 12:30 p.m." | |||||
}} /> | |||||
</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | </table> | ||||
</Grid> | </Grid> | ||||
@@ -328,74 +328,76 @@ const PublicNoticeApplyForm = ({ loadedData, _selections, gazetteIssueList }) => | |||||
<Grid item xs={12} alignItems={"center"} sx={{ p: 2 }}> | <Grid item xs={12} alignItems={"center"} sx={{ p: 2 }}> | ||||
<table style={tabelStyle}> | <table style={tabelStyle}> | ||||
<tr style={tabelStyle}> | |||||
<th style={tabelStyle} width="400" align="left"><FormattedMessage id="paymentMeans" /></th> | |||||
<th style={tabelStyle} width="300" align="left"><FormattedMessage id="confirmingDealine" /></th> | |||||
<th style={tabelStyle} width="300" align="left"><FormattedMessage id="PaymentCoonpletDealine" /></th> | |||||
</tr> | |||||
<tr> | |||||
<td style={tabelStyle}> | |||||
<FormattedMessage id="payOnline" /> | |||||
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | |||||
setWarningTitle(intl.formatMessage({ id: "payOnline" })) | |||||
setWarningText( | |||||
<><FormattedMessage id="paymentMethodMeans" /> | |||||
<ul> | |||||
<li><FormattedMessage id="fps" /></li> | |||||
<li><FormattedMessage id="card" /></li> | |||||
<li><FormattedMessage id="pps" /></li> | |||||
</ul> | |||||
</> | |||||
); | |||||
setIsWarningPopUp(true); | |||||
}}><FormattedMessage id="viewDetail" /></a> | |||||
</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 2:00 p.m.</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 2:30 p.m.</td> | |||||
</tr> | |||||
<tr> | |||||
<td style={tabelStyle}><FormattedMessage id="payDn" /> | |||||
<br /><a href="#payDnDetails" onClick={() => { | |||||
setWarningTitle(intl.formatMessage({ id: "payDn" })) | |||||
setWarningText( | |||||
<><FormattedMessage id="paymentMethodMeans" /> | |||||
<ul> | |||||
<li><FormattedMessage id="atm" /></li> | |||||
<li><FormattedMessage id="pps" /></li> | |||||
<li><FormattedMessage id="eBank" /></li> | |||||
<li><FormattedMessage id="phoneBank" /></li> | |||||
<li><FormattedMessage id="eCheque" /></li> | |||||
<li><FormattedMessage id="fps" /></li> | |||||
<li><FormattedMessage id="hkpo" /></li> | |||||
<li><FormattedMessage id="store" /></li> | |||||
<li><FormattedMessage id="post" /></li> | |||||
</ul> | |||||
</> | |||||
); | |||||
setIsWarningPopUp(true); | |||||
}}><FormattedMessage id="viewDetail" /></a> | |||||
</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(closingDateOff, dft)} 5:00 p.m.</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 12:00 p.m.</td> | |||||
</tr> | |||||
<tr> | |||||
<td style={tabelStyle}><FormattedMessage id="payNPGO" /> | |||||
<br /><a href="#payNPGODetails" onClick={() => { | |||||
setWarningTitle(intl.formatMessage({ id: "payNPGO" })) | |||||
setWarningText( | |||||
<><FormattedMessage id="paymentMethodMeans" /> | |||||
<ul> | |||||
<li><FormattedMessage id="cheque" /></li> | |||||
<li><FormattedMessage id="cash" /></li> | |||||
</ul> | |||||
</> | |||||
); | |||||
setIsWarningPopUp(true); | |||||
}}><FormattedMessage id="viewDetail" /></a> | |||||
</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 12:00 p.m.</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 12:30 p.m.</td> | |||||
</tr> | |||||
<tbody> | |||||
<tr style={tabelStyle}> | |||||
<th style={tabelStyle} width="400" align="left"><FormattedMessage id="paymentMeans" /></th> | |||||
<th style={tabelStyle} width="300" align="left"><FormattedMessage id="confirmingDealine" /></th> | |||||
<th style={tabelStyle} width="300" align="left"><FormattedMessage id="PaymentCoonpletDealine" /></th> | |||||
</tr> | |||||
<tr> | |||||
<td style={tabelStyle}> | |||||
<FormattedMessage id="payOnline" /> | |||||
<br /><a href="#payOnlineDetails" color='#fff' onClick={() => { | |||||
setWarningTitle(intl.formatMessage({ id: "payOnline" })) | |||||
setWarningText( | |||||
<><FormattedMessage id="paymentMethodMeans" /> | |||||
<ul> | |||||
<li><FormattedMessage id="fps" /></li> | |||||
<li><FormattedMessage id="card" /></li> | |||||
<li><FormattedMessage id="pps" /></li> | |||||
</ul> | |||||
</> | |||||
); | |||||
setIsWarningPopUp(true); | |||||
}}><FormattedMessage id="viewDetail" /></a> | |||||
</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 2:00 p.m.</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 2:30 p.m.</td> | |||||
</tr> | |||||
<tr> | |||||
<td style={tabelStyle}><FormattedMessage id="payDn" /> | |||||
<br /><a href="#payDnDetails" onClick={() => { | |||||
setWarningTitle(intl.formatMessage({ id: "payDn" })) | |||||
setWarningText( | |||||
<><FormattedMessage id="paymentMethodMeans" /> | |||||
<ul> | |||||
<li><FormattedMessage id="atm" /></li> | |||||
<li><FormattedMessage id="pps" /></li> | |||||
<li><FormattedMessage id="eBank" /></li> | |||||
<li><FormattedMessage id="phoneBank" /></li> | |||||
<li><FormattedMessage id="eCheque" /></li> | |||||
<li><FormattedMessage id="fps" /></li> | |||||
<li><FormattedMessage id="hkpo" /></li> | |||||
<li><FormattedMessage id="store" /></li> | |||||
<li><FormattedMessage id="post" /></li> | |||||
</ul> | |||||
</> | |||||
); | |||||
setIsWarningPopUp(true); | |||||
}}><FormattedMessage id="viewDetail" /></a> | |||||
</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(closingDateOff, dft)} 5:00 p.m.</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 12:00 p.m.</td> | |||||
</tr> | |||||
<tr> | |||||
<td style={tabelStyle}><FormattedMessage id="payNPGO" /> | |||||
<br /><a href="#payNPGODetails" onClick={() => { | |||||
setWarningTitle(intl.formatMessage({ id: "payNPGO" })) | |||||
setWarningText( | |||||
<><FormattedMessage id="paymentMethodMeans" /> | |||||
<ul> | |||||
<li><FormattedMessage id="cheque" /></li> | |||||
<li><FormattedMessage id="cash" /></li> | |||||
</ul> | |||||
</> | |||||
); | |||||
setIsWarningPopUp(true); | |||||
}}><FormattedMessage id="viewDetail" /></a> | |||||
</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 12:00 p.m.</td> | |||||
<td style={tabelStyle}>{DateUtils.dateFormat(closeDate, dft)} 12:30 p.m.</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | </table> | ||||
</Grid> | </Grid> | ||||
@@ -119,8 +119,10 @@ | |||||
"proofPaymentHeader_office": "Public Notice: Proofreading Completed and Payment Means Selected", | "proofPaymentHeader_office": "Public Notice: Proofreading Completed and Payment Means Selected", | ||||
"proofPaymentBody_office": "We have received the manuscript proofreading confirmation and printing instructions for application number: {appNo}", | "proofPaymentBody_office": "We have received the manuscript proofreading confirmation and printing instructions for application number: {appNo}", | ||||
"proofPaymentBody_office2": "You have selected to make payment at North Point Government Offices Collection Office:<center><br/>Collection Office at Accounts Section<br/>10/F North Point Government Offices<br/>333 Java Road North Point</center>", | "proofPaymentBody_office2": "You have selected to make payment at North Point Government Offices Collection Office:<center><br/>Collection Office at Accounts Section<br/>10/F North Point Government Offices<br/>333 Java Road North Point</center>", | ||||
"proofPaymentBody_office3": "Please print out this page or present your application details on screen at our Collection Office, and complete the payment by {paymentDeadline}.", | |||||
"proofPaymentBody_office4": "We will process the publication after receiving payment confirmation.", | |||||
"proofPaymentBody_office3": "The office hours of the Collection Office is from Monday to Friday: 8:30 a.m. to 1 p.m., 2 p.m. to 5 p.m.", | |||||
"proofPaymentBody_office4": "Cheques, drafts or cashier’s orders should be made payable to “The Government of the Hong Kong Special Administrative Region” or “The Government of the HKSAR” and crossed. They must not be made payable to any individual officer. Payment is valid only after the cheque, draft or cashier’s order is cleared.", | |||||
"proofPaymentBody_office5": "Please print out this page or present your application details on screen at our Collection Office, and complete the payment by {paymentDeadline}.", | |||||
"proofPaymentBody_office6": "We will process the publication after receiving payment confirmation.", | |||||
"proofPaymentHeader_online": "Public Notice: Proofreading Completed and Payment Means Selected", | "proofPaymentHeader_online": "Public Notice: Proofreading Completed and Payment Means Selected", | ||||
"proofPaymentBody_online": "We have received the manuscript proofreading confirmation and printing instructions for application number: {appNo}", | "proofPaymentBody_online": "We have received the manuscript proofreading confirmation and printing instructions for application number: {appNo}", | ||||
@@ -148,8 +148,10 @@ | |||||
"proofPaymentHeader_office": "公共启事: 已完成校对并已选择付款方式", | "proofPaymentHeader_office": "公共启事: 已完成校对并已选择付款方式", | ||||
"proofPaymentBody_office": "我们已收到以下申请编号的稿件校对确认和印刷指示。<br/>{appNo}", | "proofPaymentBody_office": "我们已收到以下申请编号的稿件校对确认和印刷指示。<br/>{appNo}", | ||||
"proofPaymentBody_office2": "您已选择在北角政府合署收款处付款:<center><br/>香港北角渣华道333号<br/>北角政府合署10楼<br/>会计部收款处</center>", | "proofPaymentBody_office2": "您已选择在北角政府合署收款处付款:<center><br/>香港北角渣华道333号<br/>北角政府合署10楼<br/>会计部收款处</center>", | ||||
"proofPaymentBody_office3": "请打印此页面或使用电子屏幕设备向收款处职员展示申请详情,并在{paymentDeadline}前完成付款。", | |||||
"proofPaymentBody_office4": "我们将在收到付款确认通知后处理刊登事宜。", | |||||
"proofPaymentBody_office3": "收款处的办公时间为星期一至五上午八时三十分至下午一时及下午二时至五时。", | |||||
"proofPaymentBody_office4": "凡支票、汇票或本票均须书明支付「香港特别行政区政府」并加划线,抬头人不应为个别职员。客户以支票、汇票或本票方式付款,须待其兑现后方为有效。", | |||||
"proofPaymentBody_office5": "请打印此页面或使用电子屏幕设备向收款处职员展示申请详情,并在{paymentDeadline}前完成付款。", | |||||
"proofPaymentBody_office6": "我们将在收到付款确认通知后处理刊登事宜。", | |||||
"proofPaymentHeader_online": "公共启事: 已完成校对并已选择付款方式", | "proofPaymentHeader_online": "公共启事: 已完成校对并已选择付款方式", | ||||
"proofPaymentBody_online": "我们已收到以下申请编号的稿件校对确认和印刷指示。<br/>{appNo}", | "proofPaymentBody_online": "我们已收到以下申请编号的稿件校对确认和印刷指示。<br/>{appNo}", | ||||
@@ -146,8 +146,10 @@ | |||||
"proofPaymentHeader_office": "公共啟事: 已完成校對並已選擇付款方式", | "proofPaymentHeader_office": "公共啟事: 已完成校對並已選擇付款方式", | ||||
"proofPaymentBody_office": "我們已收到以下申請編號的稿件校對確認和印刷指示。<br/>{appNo}", | "proofPaymentBody_office": "我們已收到以下申請編號的稿件校對確認和印刷指示。<br/>{appNo}", | ||||
"proofPaymentBody_office2": "您已選擇在北角政府合署收款處付款:<center><br/>香港北角渣華道333號<br/>北角政府合署10樓<br/>會計部收款處</center>", | "proofPaymentBody_office2": "您已選擇在北角政府合署收款處付款:<center><br/>香港北角渣華道333號<br/>北角政府合署10樓<br/>會計部收款處</center>", | ||||
"proofPaymentBody_office3": "請列印此頁面或使用電子屏幕設備向收款處職員展示申請詳情,並在{paymentDeadline}之前完成付款。", | |||||
"proofPaymentBody_office4": "我們將在收到付款確認通知後處理刊登事宜。", | |||||
"proofPaymentBody_office3": "收款處的辦公時間為星期一至五上午八時三十分至下午一時及下午二時至五時。", | |||||
"proofPaymentBody_office4": "凡支票、匯票或本票均須書明支付「香港特別行政區政府」並加劃線,抬頭人不應為個別職員。客戶以支票、匯票或本票方式付款,須待其兌現後方為有效。", | |||||
"proofPaymentBody_office5": "請列印此頁面或使用電子屏幕設備向收款處職員展示申請詳情,並在{paymentDeadline}之前完成付款。", | |||||
"proofPaymentBody_office6": "我們將在收到付款確認通知後處理刊登事宜。", | |||||
"proofPaymentHeader_online": "公共啟事: 已完成校對並已選擇付款方式", | "proofPaymentHeader_online": "公共啟事: 已完成校對並已選擇付款方式", | ||||
"proofPaymentBody_online": "我們已收到以下申請編號的稿件校對確認和印刷指示。<br/>{appNo}", | "proofPaymentBody_online": "我們已收到以下申請編號的稿件校對確認和印刷指示。<br/>{appNo}", | ||||
@@ -185,6 +185,7 @@ export const DEMAND_NOTE_LIST_ALL = apiPath+'/demandNote/listAll';//GET gld | |||||
export const DEMAND_NOTE_LOAD = apiPath+'/demandNote/load';//GET | export const DEMAND_NOTE_LOAD = apiPath+'/demandNote/load';//GET | ||||
export const DEMAND_NOTE_SEND = apiPath+'/demandNote/send-dn';//POST | export const DEMAND_NOTE_SEND = apiPath+'/demandNote/send-dn';//POST | ||||
export const DEMAND_NOTE_MARK_PAID = apiPath+'/demandNote/mark-as-paid';//POST | export const DEMAND_NOTE_MARK_PAID = apiPath+'/demandNote/mark-as-paid';//POST | ||||
export const DEMAND_NOTE_REVOKE_PAID = apiPath+'/demandNote/revoke-paid';//POST | |||||
export const DEMAND_NOTE_ATTACH = apiPath+'/demandNote/attach';//POST | export const DEMAND_NOTE_ATTACH = apiPath+'/demandNote/attach';//POST | ||||
export const DEMAND_NOTE_EXPORT = apiPath+'/demandNote/export';//POST | export const DEMAND_NOTE_EXPORT = apiPath+'/demandNote/export';//POST | ||||