@@ -17,7 +17,11 @@ import {
17
17
updateWorkPeriodWorkingDays ,
18
18
} from "store/thunks/workPeriods" ;
19
19
import { useUpdateEffect } from "utils/hooks" ;
20
- import { formatUserHandleLink , formatWeeklyRate } from "utils/formatters" ;
20
+ import {
21
+ currencyFormatter ,
22
+ formatUserHandleLink ,
23
+ formatWeeklyRate ,
24
+ } from "utils/formatters" ;
21
25
import { stopPropagation } from "utils/misc" ;
22
26
import styles from "./styles.module.scss" ;
23
27
@@ -29,6 +33,7 @@ import styles from "./styles.module.scss";
29
33
* @param {boolean } [props.isFailed] whether the item should be highlighted as failed
30
34
* @param {boolean } props.isSelected whether the item is selected
31
35
* @param {Object } props.item object describing a working period
36
+ * @param {Object } props.data changeable working period data such as working days
32
37
* @param {Object } [props.details] object with working period details
33
38
* @returns {JSX.Element }
34
39
*/
@@ -37,6 +42,7 @@ const PeriodItem = ({
37
42
isFailed = false ,
38
43
isSelected,
39
44
item,
45
+ data,
40
46
details,
41
47
} ) => {
42
48
const dispatch = useDispatch ( ) ;
@@ -53,16 +59,16 @@ const PeriodItem = ({
53
59
} , [ dispatch , item ] ) ;
54
60
55
61
const onWorkingDaysChange = useCallback (
56
- ( workingDays ) => {
57
- dispatch ( setWorkPeriodWorkingDays ( { periodId : item . id , workingDays } ) ) ;
62
+ ( daysWorked ) => {
63
+ dispatch ( setWorkPeriodWorkingDays ( item . id , daysWorked ) ) ;
58
64
} ,
59
65
[ dispatch , item . id ]
60
66
) ;
61
67
62
68
const updateWorkingDays = useCallback (
63
69
debounce (
64
- ( workingDays ) => {
65
- dispatch ( updateWorkPeriodWorkingDays ( item . id , workingDays ) ) ;
70
+ ( daysWorked ) => {
71
+ dispatch ( updateWorkPeriodWorkingDays ( item . id , daysWorked ) ) ;
66
72
} ,
67
73
300 ,
68
74
{ leading : false }
@@ -72,8 +78,8 @@ const PeriodItem = ({
72
78
73
79
// Update working days on server if working days change.
74
80
useUpdateEffect ( ( ) => {
75
- updateWorkingDays ( item . workingDays ) ;
76
- } , [ item . workingDays ] ) ;
81
+ updateWorkingDays ( data . daysWorked ) ;
82
+ } , [ data . daysWorked ] ) ;
77
83
78
84
return (
79
85
< >
@@ -115,18 +121,24 @@ const PeriodItem = ({
115
121
< td className = { styles . weeklyRate } >
116
122
< span > { formatWeeklyRate ( item . weeklyRate ) } </ span >
117
123
</ td >
124
+ < td className = { styles . paymentTotal } >
125
+ < span className = { styles . paymentTotalSum } >
126
+ { currencyFormatter . format ( data . paymentTotal ) }
127
+ </ span >
128
+ < span className = { styles . daysPaid } > ({ data . daysPaid } )</ span >
129
+ </ td >
118
130
< td >
119
- < PaymentStatus status = { item . paymentStatus } />
131
+ < PaymentStatus status = { data . paymentStatus } />
120
132
</ td >
121
- < td className = { styles . workingDays } >
133
+ < td className = { styles . daysWorked } >
122
134
< IntegerField
123
- className = { styles . workingDaysControl }
135
+ className = { styles . daysWorkedControl }
124
136
isDisabled = { isDisabled }
125
137
name = { `wp_wrk_days_${ item . id } ` }
126
138
onChange = { onWorkingDaysChange }
127
139
maxValue = { 5 }
128
- minValue = { 0 }
129
- value = { item . workingDays }
140
+ minValue = { data . daysPaid }
141
+ value = { data . daysWorked }
130
142
/>
131
143
</ td >
132
144
</ tr >
@@ -155,9 +167,13 @@ PeriodItem.propTypes = {
155
167
startDate : PT . string . isRequired ,
156
168
endDate : PT . string . isRequired ,
157
169
weeklyRate : PT . number ,
170
+ } ) . isRequired ,
171
+ data : PT . shape ( {
172
+ daysWorked : PT . number . isRequired ,
173
+ daysPaid : PT . number . isRequired ,
158
174
paymentStatus : PT . string . isRequired ,
159
- workingDays : PT . number . isRequired ,
160
- } ) ,
175
+ paymentTotal : PT . number . isRequired ,
176
+ } ) . isRequired ,
161
177
details : PT . shape ( {
162
178
periodId : PT . string . isRequired ,
163
179
rbId : PT . string . isRequired ,
0 commit comments