fitur is reversal

This commit is contained in:
2024-03-04 09:36:26 +07:00
parent ab65d53aca
commit 3bae411dc6
5 changed files with 155 additions and 93 deletions

View File

@@ -71,6 +71,17 @@ class ClaimRequestShowResource extends JsonResource
'total_excess_paid' => $total_excess_paid, 'total_excess_paid' => $total_excess_paid,
]; ];
$isReversal = false;
$isRole = auth()->user()->role_id;
if ($data['request_log']['status'] == 'approved' &&
$data['request_log']['status_final_log'] == 'approved' &&
$data['status'] == 'approved' &&
$data['status_claim_management'] == 'approved' &&
$isRole != 1 // is admin
){
$isReversal = true;
}
$response = [ $response = [
'id' => $data['id'], 'id' => $data['id'],
@@ -101,6 +112,7 @@ class ClaimRequestShowResource extends JsonResource
'files' => $data['request_log']['files'], 'files' => $data['request_log']['files'],
'reason_decline' => $data['reason_decline'], 'reason_decline' => $data['reason_decline'],
// 'benefit_data' => $benefitDetailLog, // 'benefit_data' => $benefitDetailLog,
'is_reversal' => $isReversal, // untuk penjagaan, jika true tidak bisa di edit/hapus lagi
]; ];

View File

@@ -40,8 +40,19 @@ class RequestLogShowResource extends JsonResource
$claimRequest = ClaimRequest::where('request_log_id', $requestLog['id'])->first(); $claimRequest = ClaimRequest::where('request_log_id', $requestLog['id'])->first();
if ($claimRequest) { if ($claimRequest) {
$claimCode = $claimRequest->code; $claimCode = $claimRequest->code;
$isReversal = false;
$isRole = auth()->user()->role_id;
if ($requestLog['status'] == 'approved' &&
$requestLog['status_final_log'] == 'approved' &&
$claimRequest->status == 'approved' &&
$claimRequest->status_claim_management == 'approved' &&
$isRole != 1
){
$isReversal = true;
}
} else { } else {
$claimCode = '-'; $claimCode = '-';
$isReversal = false;
} }
if ($provider){ if ($provider){
@@ -136,6 +147,7 @@ class RequestLogShowResource extends JsonResource
'catatan' => $requestLog['catatan'], 'catatan' => $requestLog['catatan'],
'reason' => $requestLog['reason'], 'reason' => $requestLog['reason'],
'diagnosis' => $icd, 'diagnosis' => $icd,
'is_reversal' => $isReversal, // untuk penjagaan, jika true tidak bisa di edit/hapus lagi
]; ];

View File

@@ -78,15 +78,13 @@ export default function FormEdit({ isEdit, currentClaim }: Props) {
); );
const [date, setDate] = useState(currentClaim?.submission_date) const [date, setDate] = useState(currentClaim?.submission_date ? fDateTimesecond(currentClaim?.submission_date) : null)
const id = currentClaim?.id const id = currentClaim?.id
useEffect(() => { useEffect(() => {
setDate(currentClaim?.submission_date) setDate(currentClaim?.submission_date)
}, [currentClaim]); }, [currentClaim]);
console.log(date);
useEffect(() => { useEffect(() => {
if (isEdit && currentClaim) { if (isEdit && currentClaim) {
reset(defaultValues); reset(defaultValues);
@@ -254,7 +252,6 @@ export default function FormEdit({ isEdit, currentClaim }: Props) {
</Stack> </Stack>
) )
return ( return (
<FormProvider methods={methods} onSubmit={handleSubmit(onSubmit)}> <FormProvider methods={methods} onSubmit={handleSubmit(onSubmit)}>
<Stack direction="row" alignItems="center" sx={{ mb: 5 }}> <Stack direction="row" alignItems="center" sx={{ mb: 5 }}>
@@ -310,10 +307,14 @@ export default function FormEdit({ isEdit, currentClaim }: Props) {
<RHFDateTimePicker <RHFDateTimePicker
{...field} {...field}
label="Date of Submission" label="Date of Submission"
value={field.value || null} value={field.value}
onChange={() => setDate(field.value)} onChange={() =>
setDate(field.value)
}
dateFormat='dd MMM yyyy HH:mm:ss'
/> />
)} )}
/> />
</Grid> </Grid>
<Grid item xs={3}> <Grid item xs={3}>

View File

@@ -52,6 +52,7 @@ export default function Detail() {
const { themeStretch } = useSettings(); const { themeStretch } = useSettings();
const [claimRequests, setClaimRequest] = useState<DetailClaimRequest>(); const [claimRequests, setClaimRequest] = useState<DetailClaimRequest>();
const [openDialogSubmit, setOpenDialogSubmit] = useState(false); const [openDialogSubmit, setOpenDialogSubmit] = useState(false);
const [isReversal, setIsReversal] = useState(false);
const { id } = useParams(); const { id } = useParams();
@@ -60,6 +61,7 @@ export default function Detail() {
.get('claim-requests/detail/'+id) .get('claim-requests/detail/'+id)
.then((response) => { .then((response) => {
setClaimRequest(response.data.data) setClaimRequest(response.data.data)
setIsReversal(response.data.data.is_reversal)
}) })
.catch((error) => { .catch((error) => {
console.error(error); console.error(error);
@@ -226,6 +228,8 @@ export default function Detail() {
<Stack direction="column" spacing={2} sx={{marginBottom: 2}}> <Stack direction="column" spacing={2} sx={{marginBottom: 2}}>
<Typography variant='subtitle1' sx={{color: '#19BBBB'}} gutterBottom>Document </Typography> <Typography variant='subtitle1' sx={{color: '#19BBBB'}} gutterBottom>Document </Typography>
</Stack> </Stack>
{
!isReversal ? (
<Stack direction="column" spacing={2} sx={{marginBottom: 2}}> <Stack direction="column" spacing={2} sx={{marginBottom: 2}}>
<Button variant="outlined" startIcon={<AddIcon/>} sx={{marginLeft: 'auto'}} onClick={() => { <Button variant="outlined" startIcon={<AddIcon/>} sx={{marginLeft: 'auto'}} onClick={() => {
setDialogUploadFileLog(true) setDialogUploadFileLog(true)
@@ -233,6 +237,9 @@ export default function Detail() {
<Typography variant="button" display="block">File</Typography> <Typography variant="button" display="block">File</Typography>
</Button> </Button>
</Stack> </Stack>
) : null
}
</Stack> </Stack>
{claimRequests?.files?.map((documentType, index) => ( {claimRequests?.files?.map((documentType, index) => (
<Stack direction="row" alignItems="center" justifyContent="space-between" sx={{marginBottom: 2}} key={index}> <Stack direction="row" alignItems="center" justifyContent="space-between" sx={{marginBottom: 2}} key={index}>
@@ -253,6 +260,8 @@ export default function Detail() {
<Typography variant="body1" gutterBottom>{documentType.original_name ? documentType.original_name : '-'}</Typography> <Typography variant="body1" gutterBottom>{documentType.original_name ? documentType.original_name : '-'}</Typography>
</a> </a>
</Stack> </Stack>
{
!isReversal ? (
<Stack direction="column" spacing={2}> <Stack direction="column" spacing={2}>
<IconButton onClick={() => { <IconButton onClick={() => {
setDialogDeleteFileLog(true) setDialogDeleteFileLog(true)
@@ -261,6 +270,9 @@ export default function Detail() {
<Delete color='error' fontSize="small" /> <Delete color='error' fontSize="small" />
</IconButton> </IconButton>
</Stack> </Stack>
) : null
}
</Stack> </Stack>
))} ))}
@@ -284,11 +296,15 @@ export default function Detail() {
<Card sx={{padding:2}} > <Card sx={{padding:2}} >
<Stack direction="row" alignItems="center" sx={{marginBottom: 4}}> <Stack direction="row" alignItems="center" sx={{marginBottom: 4}}>
<Typography variant='subtitle1' sx={{color: '#19BBBB'}} gutterBottom>Benefit</Typography> <Typography variant='subtitle1' sx={{color: '#19BBBB'}} gutterBottom>Benefit</Typography>
{
!isReversal ? (
<Button variant="outlined" startIcon={<AddIcon/>} sx={{marginLeft: 'auto'}} onClick={() => { <Button variant="outlined" startIcon={<AddIcon/>} sx={{marginLeft: 'auto'}} onClick={() => {
setDialogBenefit(true); setDialogBenefit(true);
}} > }} >
<Typography variant="button" display="block">Benefit</Typography> <Typography variant="button" display="block">Benefit</Typography>
</Button> </Button>
) : null
}
</Stack> </Stack>
<Box sx={{ border: '1px solid rgba(0,0,0,0.125)', px: '24px', py: '20px', marginBottom: '24px', borderRadius: '12px'}}> <Box sx={{ border: '1px solid rgba(0,0,0,0.125)', px: '24px', py: '20px', marginBottom: '24px', borderRadius: '12px'}}>
@@ -301,6 +317,8 @@ export default function Detail() {
{item.benefit?.description} {item.benefit?.description}
</Typography> </Typography>
</Grid> </Grid>
{
!isReversal ? (
<Grid item xs={6} sx={{ display: 'flex', placeContent: 'end' }}> <Grid item xs={6} sx={{ display: 'flex', placeContent: 'end' }}>
<MoreMenu actions={ <MoreMenu actions={
<> <>
@@ -324,6 +342,9 @@ export default function Detail() {
</> </>
} /> } />
</Grid> </Grid>
) : null
}
</Grid> </Grid>
</Grid> </Grid>
<Grid item xs={12} py={2}> <Grid item xs={12} py={2}>

View File

@@ -68,6 +68,7 @@ export default function Detail() {
const navigate = useNavigate(); const navigate = useNavigate();
const { themeStretch } = useSettings(); const { themeStretch } = useSettings();
const [requestLog, setRequestLog] = useState<DetailFinalLogType>(); const [requestLog, setRequestLog] = useState<DetailFinalLogType>();
const [isReversal, setIsReversal] = useState(false);
const { id } = useParams(); const { id } = useParams();
@@ -77,6 +78,7 @@ export default function Detail() {
.get('customer-service/request/'+id) .get('customer-service/request/'+id)
.then((response) => { .then((response) => {
setRequestLog(response.data.data) setRequestLog(response.data.data)
setIsReversal(response.data.data.is_reversal)
}) })
.catch((error) => { .catch((error) => {
console.error(error); console.error(error);
@@ -283,11 +285,15 @@ export default function Detail() {
<Card sx={{padding:2}} > <Card sx={{padding:2}} >
<Stack direction="row" alignItems="center" sx={{marginBottom: 4}}> <Stack direction="row" alignItems="center" sx={{marginBottom: 4}}>
<Typography variant='subtitle1' sx={{color: '#19BBBB'}} gutterBottom>Benefit</Typography> <Typography variant='subtitle1' sx={{color: '#19BBBB'}} gutterBottom>Benefit</Typography>
{
!isReversal ? (
<Button variant="outlined" startIcon={<AddIcon/>} sx={{marginLeft: 'auto'}} onClick={() => { <Button variant="outlined" startIcon={<AddIcon/>} sx={{marginLeft: 'auto'}} onClick={() => {
setDialogBenefit(true); setDialogBenefit(true);
}} > }} >
<Typography variant="button" display="block">Benefit</Typography> <Typography variant="button" display="block">Benefit</Typography>
</Button> </Button>
) : null
}
</Stack> </Stack>
{requestLog?.benefit_data?.map((item, index) => ( {requestLog?.benefit_data?.map((item, index) => (
@@ -300,6 +306,8 @@ export default function Detail() {
{item.benefit?.description} {item.benefit?.description}
</Typography> </Typography>
</Grid> </Grid>
{
!isReversal ? (
<Grid item xs={6} sx={{ display: 'flex', placeContent: 'end' }}> <Grid item xs={6} sx={{ display: 'flex', placeContent: 'end' }}>
<MoreMenu actions={ <MoreMenu actions={
<> <>
@@ -323,6 +331,8 @@ export default function Detail() {
</> </>
} /> } />
</Grid> </Grid>
) : null
}
</Grid> </Grid>
</Grid> </Grid>
<Grid item xs={12}> <Grid item xs={12}>
@@ -598,6 +608,7 @@ export default function Detail() {
<Stack direction="column" spacing={2} sx={{marginBottom: 2}}> <Stack direction="column" spacing={2} sx={{marginBottom: 2}}>
<Typography variant='subtitle1' sx={{color: '#19BBBB'}} gutterBottom>Files </Typography> <Typography variant='subtitle1' sx={{color: '#19BBBB'}} gutterBottom>Files </Typography>
</Stack> </Stack>
{ !isReversal ? (
<Stack direction="column" spacing={2} sx={{marginBottom: 2}}> <Stack direction="column" spacing={2} sx={{marginBottom: 2}}>
<Button variant="outlined" startIcon={<AddIcon/>} sx={{marginLeft: 'auto'}} onClick={() => { <Button variant="outlined" startIcon={<AddIcon/>} sx={{marginLeft: 'auto'}} onClick={() => {
setDialogUploadFileLog(true) setDialogUploadFileLog(true)
@@ -605,6 +616,8 @@ export default function Detail() {
<Typography variant="button" display="block">Files</Typography> <Typography variant="button" display="block">Files</Typography>
</Button> </Button>
</Stack> </Stack>
) : null }
</Stack> </Stack>
{requestLog?.files?.map((documentType, index) => ( {requestLog?.files?.map((documentType, index) => (
<Stack direction="row" alignItems="center" justifyContent="space-between" sx={{marginBottom: 2}} key={index}> <Stack direction="row" alignItems="center" justifyContent="space-between" sx={{marginBottom: 2}} key={index}>
@@ -617,6 +630,7 @@ export default function Detail() {
<Typography variant="body2" gutterBottom>{documentType.original_name ? documentType.original_name : '-'}</Typography> <Typography variant="body2" gutterBottom>{documentType.original_name ? documentType.original_name : '-'}</Typography>
</a> </a>
</Stack> </Stack>
{ !isReversal ? (
<Stack direction="column" spacing={2}> <Stack direction="column" spacing={2}>
<IconButton onClick={() => { <IconButton onClick={() => {
setDialogDeleteFileLog(true) setDialogDeleteFileLog(true)
@@ -625,6 +639,8 @@ export default function Detail() {
<Delete color='error' fontSize="small" /> <Delete color='error' fontSize="small" />
</IconButton> </IconButton>
</Stack> </Stack>
) : null }
</Stack> </Stack>
))} ))}