Skip to content

Commit

Permalink
refactor: show leave reason available quantity only on managed reason (
Browse files Browse the repository at this point in the history
…#871)

* RM#89558
  • Loading branch information
vhu-axelor authored Jan 17, 2025
1 parent 552a1d5 commit 516b325
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ interface LeaveAvailableDuractionCardProps {
availableLeave: number;
durationLeave: number;
durationUnitSelect: number;
isExceptionalLeave: boolean;
}

const LeaveAvailableDuractionCard = ({
Expand All @@ -42,6 +43,7 @@ const LeaveAvailableDuractionCard = ({
availableLeave,
durationLeave,
durationUnitSelect,
isExceptionalLeave,
}: LeaveAvailableDuractionCardProps) => {
const I18n = useTranslator();
const Colors = useThemeColor();
Expand All @@ -66,8 +68,12 @@ const LeaveAvailableDuractionCard = ({
<Text style={styles.titleText}>{I18n.t('Hr_Available')}</Text>
<TextUnit
fontSize={30}
value={formatNumber(availableLeave)}
unit={getItemTitle(LeaveReason?.unitSelect, durationUnitSelect)}
value={isExceptionalLeave ? '-' : formatNumber(availableLeave)}
unit={
isExceptionalLeave
? undefined
: getItemTitle(LeaveReason?.unitSelect, durationUnitSelect)
}
/>
</View>
<View style={styles.horizontalRule} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
*/

import React, {useMemo} from 'react';
import {useSelector, useTranslator} from '@axelor/aos-mobile-core';
import {useSelector, useTranslator, useTypes} from '@axelor/aos-mobile-core';
import {QuantityCard, Text, useDigitFormat} from '@axelor/aos-mobile-ui';

interface CompleteRequestQuantityCardProps {
Expand All @@ -34,17 +34,33 @@ const CompleteRequestQuantityCard = ({
newLine,
}: CompleteRequestQuantityCardProps) => {
const I18n = useTranslator();
const {LeaveReason} = useTypes();
const formatNumber = useDigitFormat();

const {user} = useSelector(state => state.user);

const availableQty = useMemo(
() =>
const availableQty = useMemo(() => {
if (
newLine.leaveReasonTypeSelect ===
LeaveReason?.leaveReasonTypeSelect.ExceptionalLeave
) {
return '-';
}

const _availableQty =
user.employee?.leaveLineList?.find(
leaveLine => leaveLine.leaveReason.id === newLine.id,
)?.quantity ?? 0,
[newLine.id, user.employee?.leaveLineList],
);
)?.quantity ?? 0;

return `${formatNumber(_availableQty)} ${newLine.unitName}`;
}, [
LeaveReason?.leaveReasonTypeSelect.ExceptionalLeave,
formatNumber,
newLine.id,
newLine.leaveReasonTypeSelect,
newLine.unitName,
user.employee?.leaveLineList,
]);

return (
<QuantityCard
Expand All @@ -60,9 +76,7 @@ const CompleteRequestQuantityCard = ({
<Text
fontSize={16}>{`${I18n.t('Hr_LeaveReason')} : ${newLine.name}`}</Text>
<Text fontSize={16}>
{`${I18n.t('Hr_AvailableQty')} : ${formatNumber(
availableQty,
)} ${newLine.unitName}`}
{`${I18n.t('Hr_AvailableQty')} : ${availableQty}`}
</Text>
</QuantityCard>
);
Expand Down
2 changes: 2 additions & 0 deletions packages/apps/hr/src/models/objectFields.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ export const hr_modelAPI: ObjectFields = {
schemaContructor.object({
name: schemaContructor.string(),
unitSelect: schemaContructor.number(),
leaveReasonTypeSelect: schemaContructor.number(),
}),
),
company: schemaContructor.subObject('name'),
Expand All @@ -183,5 +184,6 @@ export const hr_modelAPI: ObjectFields = {
hr_leaveReason: schemaContructor.object({
name: schemaContructor.string(),
unitSelect: schemaContructor.number(),
leaveReasonTypeSelect: schemaContructor.number(),
}),
};
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ const CompleteRequestScreen = ({}) => {
LeaveReason?.unitSelect,
leaveReason.unitSelect,
),
leaveReasonTypeSelect: leaveReason.leaveReasonTypeSelect,
})
}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ import {fetchLeaveById} from '../../features/leaveSlice';
const LeaveDetailsScreen = ({route}) => {
const {leaveId} = route.params;
const I18n = useTranslator();
const {LeaveRequest} = useTypes();
const {LeaveRequest, LeaveReason} = useTypes();
const dispatch = useDispatch();

const {leave, loadingLeave} = useSelector(state => state.hr_leave);
Expand Down Expand Up @@ -90,6 +90,10 @@ const LeaveDetailsScreen = ({route}) => {
availableLeave={leave.quantityBeforeValidation}
durationLeave={leave.duration}
durationUnitSelect={leave.leaveReason?.unitSelect}
isExceptionalLeave={
leave.leaveReason?.leaveReasonTypeSelect ===
LeaveReason?.leaveReasonTypeSelect.ExceptionalLeave
}
/>
{leave.statusSelect > LeaveRequest?.statusSelect.Draft && (
<Text style={[styles.text, styles.marginTop]} writingType="details">
Expand Down

0 comments on commit 516b325

Please sign in to comment.