@axelor/aos-mobile-hr 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/README.md +44 -0
  2. package/lib/api/currency-api.d.ts +4 -0
  3. package/lib/api/currency-api.js +32 -0
  4. package/lib/api/currency-api.js.map +1 -0
  5. package/lib/api/distance-api.d.ts +4 -0
  6. package/lib/api/distance-api.js +40 -0
  7. package/lib/api/distance-api.js.map +1 -0
  8. package/lib/api/expense-api.d.ts +37 -0
  9. package/lib/api/expense-api.js +136 -0
  10. package/lib/api/expense-api.js.map +1 -0
  11. package/lib/api/expense-config-api.d.ts +1 -0
  12. package/lib/api/expense-config-api.js +23 -0
  13. package/lib/api/expense-config-api.js.map +1 -0
  14. package/lib/api/expense-line-api.d.ts +24 -0
  15. package/lib/api/expense-line-api.js +111 -0
  16. package/lib/api/expense-line-api.js.map +1 -0
  17. package/lib/api/expense-type-api.d.ts +5 -0
  18. package/lib/api/expense-type-api.js +56 -0
  19. package/lib/api/expense-type-api.js.map +1 -0
  20. package/lib/api/index.d.ts +6 -0
  21. package/lib/api/index.js +24 -0
  22. package/lib/api/index.js.map +1 -0
  23. package/lib/api/kilometric-allow-param-api.d.ts +5 -0
  24. package/lib/api/kilometric-allow-param-api.js +44 -0
  25. package/lib/api/kilometric-allow-param-api.js.map +1 -0
  26. package/lib/api/project-api.d.ts +5 -0
  27. package/lib/api/project-api.js +39 -0
  28. package/lib/api/project-api.js.map +1 -0
  29. package/lib/components/atoms/ExpenseCard/ExpenseCard.d.ts +15 -0
  30. package/lib/components/atoms/ExpenseCard/ExpenseCard.js +130 -0
  31. package/lib/components/atoms/ExpenseCard/ExpenseCard.js.map +1 -0
  32. package/lib/components/atoms/ExpenseLineCard/ExpenseLineCard.d.ts +12 -0
  33. package/lib/components/atoms/ExpenseLineCard/ExpenseLineCard.js +106 -0
  34. package/lib/components/atoms/ExpenseLineCard/ExpenseLineCard.js.map +1 -0
  35. package/lib/components/atoms/index.d.ts +2 -0
  36. package/lib/components/atoms/index.js +20 -0
  37. package/lib/components/atoms/index.js.map +1 -0
  38. package/lib/components/index.d.ts +3 -0
  39. package/lib/components/index.js +21 -0
  40. package/lib/components/index.js.map +1 -0
  41. package/lib/components/molecules/ExpenseAddPopup/ExpenseAddPopup.d.ts +7 -0
  42. package/lib/components/molecules/ExpenseAddPopup/ExpenseAddPopup.js +78 -0
  43. package/lib/components/molecules/ExpenseAddPopup/ExpenseAddPopup.js.map +1 -0
  44. package/lib/components/molecules/ExpenseDetailsValidationButton/ExpenseDetailsValidationButton.d.ts +5 -0
  45. package/lib/components/molecules/ExpenseDetailsValidationButton/ExpenseDetailsValidationButton.js +76 -0
  46. package/lib/components/molecules/ExpenseDetailsValidationButton/ExpenseDetailsValidationButton.js.map +1 -0
  47. package/lib/components/molecules/ExpenseLineDetailCard/ExpenseLineDetailCard.d.ts +11 -0
  48. package/lib/components/molecules/ExpenseLineDetailCard/ExpenseLineDetailCard.js +131 -0
  49. package/lib/components/molecules/ExpenseLineDetailCard/ExpenseLineDetailCard.js.map +1 -0
  50. package/lib/components/molecules/ExpenseLineValidationButton/ExpenseLineValidationButton.d.ts +6 -0
  51. package/lib/components/molecules/ExpenseLineValidationButton/ExpenseLineValidationButton.js +37 -0
  52. package/lib/components/molecules/ExpenseLineValidationButton/ExpenseLineValidationButton.js.map +1 -0
  53. package/lib/components/molecules/ExpenseRefusalPopup/ExpenseRefusalPopup.d.ts +9 -0
  54. package/lib/components/molecules/ExpenseRefusalPopup/ExpenseRefusalPopup.js +39 -0
  55. package/lib/components/molecules/ExpenseRefusalPopup/ExpenseRefusalPopup.js.map +1 -0
  56. package/lib/components/molecules/index.d.ts +5 -0
  57. package/lib/components/molecules/index.js +23 -0
  58. package/lib/components/molecules/index.js.map +1 -0
  59. package/lib/components/templates/BillableSwitchCard/BillableSwitchCard.d.ts +7 -0
  60. package/lib/components/templates/BillableSwitchCard/BillableSwitchCard.js +26 -0
  61. package/lib/components/templates/BillableSwitchCard/BillableSwitchCard.js.map +1 -0
  62. package/lib/components/templates/CityFormInput/CityFormInput.d.ts +9 -0
  63. package/lib/components/templates/CityFormInput/CityFormInput.js +76 -0
  64. package/lib/components/templates/CityFormInput/CityFormInput.js.map +1 -0
  65. package/lib/components/templates/CurrencySearchBar/CurrencySearchBar.d.ts +9 -0
  66. package/lib/components/templates/CurrencySearchBar/CurrencySearchBar.js +38 -0
  67. package/lib/components/templates/CurrencySearchBar/CurrencySearchBar.js.map +1 -0
  68. package/lib/components/templates/DistanceIncrement/DistanceIncrement.d.ts +9 -0
  69. package/lib/components/templates/DistanceIncrement/DistanceIncrement.js +46 -0
  70. package/lib/components/templates/DistanceIncrement/DistanceIncrement.js.map +1 -0
  71. package/lib/components/templates/ExpenseHeader/ExpenseHeader.d.ts +2 -0
  72. package/lib/components/templates/ExpenseHeader/ExpenseHeader.js +52 -0
  73. package/lib/components/templates/ExpenseHeader/ExpenseHeader.js.map +1 -0
  74. package/lib/components/templates/ExpenseLineTypeSwitch/ExpenseLineTypeSwitch.d.ts +4 -0
  75. package/lib/components/templates/ExpenseLineTypeSwitch/ExpenseLineTypeSwitch.js +63 -0
  76. package/lib/components/templates/ExpenseLineTypeSwitch/ExpenseLineTypeSwitch.js.map +1 -0
  77. package/lib/components/templates/ExpenseTypeSearchBar/ExpenseTypeSearchBar.d.ts +5 -0
  78. package/lib/components/templates/ExpenseTypeSearchBar/ExpenseTypeSearchBar.js +40 -0
  79. package/lib/components/templates/ExpenseTypeSearchBar/ExpenseTypeSearchBar.js.map +1 -0
  80. package/lib/components/templates/ExpenseWaitingValidationSearchBar/ExpenseWaitingValidationSearchBar.d.ts +12 -0
  81. package/lib/components/templates/ExpenseWaitingValidationSearchBar/ExpenseWaitingValidationSearchBar.js +33 -0
  82. package/lib/components/templates/ExpenseWaitingValidationSearchBar/ExpenseWaitingValidationSearchBar.js.map +1 -0
  83. package/lib/components/templates/KilometricAllowParamSearchBar/KilometricAllowParamSearchBar.d.ts +9 -0
  84. package/lib/components/templates/KilometricAllowParamSearchBar/KilometricAllowParamSearchBar.js +81 -0
  85. package/lib/components/templates/KilometricAllowParamSearchBar/KilometricAllowParamSearchBar.js.map +1 -0
  86. package/lib/components/templates/KilometricTypeSelectPicker/KilometricTypeSelectPicker.d.ts +8 -0
  87. package/lib/components/templates/KilometricTypeSelectPicker/KilometricTypeSelectPicker.js +37 -0
  88. package/lib/components/templates/KilometricTypeSelectPicker/KilometricTypeSelectPicker.js.map +1 -0
  89. package/lib/components/templates/ProjectSearchBar/ProjectSearchBar.d.ts +9 -0
  90. package/lib/components/templates/ProjectSearchBar/ProjectSearchBar.js +38 -0
  91. package/lib/components/templates/ProjectSearchBar/ProjectSearchBar.js.map +1 -0
  92. package/lib/components/templates/ToggleSwitchMode/ToggleSwitchMode.d.ts +6 -0
  93. package/lib/components/templates/ToggleSwitchMode/ToggleSwitchMode.js +34 -0
  94. package/lib/components/templates/ToggleSwitchMode/ToggleSwitchMode.js.map +1 -0
  95. package/lib/components/templates/index.d.ts +12 -0
  96. package/lib/components/templates/index.js +30 -0
  97. package/lib/components/templates/index.js.map +1 -0
  98. package/lib/features/asyncFunctions-index.d.ts +6 -0
  99. package/lib/features/asyncFunctions-index.js +24 -0
  100. package/lib/features/asyncFunctions-index.js.map +1 -0
  101. package/lib/features/currencySlice.d.ts +16 -0
  102. package/lib/features/currencySlice.js +49 -0
  103. package/lib/features/currencySlice.js.map +1 -0
  104. package/lib/features/distanceSlice.d.ts +22 -0
  105. package/lib/features/distanceSlice.js +76 -0
  106. package/lib/features/distanceSlice.js.map +1 -0
  107. package/lib/features/expenseConfigSlice.d.ts +14 -0
  108. package/lib/features/expenseConfigSlice.js +48 -0
  109. package/lib/features/expenseConfigSlice.js.map +1 -0
  110. package/lib/features/expenseLineSlice.d.ts +76 -0
  111. package/lib/features/expenseLineSlice.js +180 -0
  112. package/lib/features/expenseLineSlice.js.map +1 -0
  113. package/lib/features/expenseSlice.d.ts +105 -0
  114. package/lib/features/expenseSlice.js +314 -0
  115. package/lib/features/expenseSlice.js.map +1 -0
  116. package/lib/features/expenseTypeSlice.d.ts +16 -0
  117. package/lib/features/expenseTypeSlice.js +49 -0
  118. package/lib/features/expenseTypeSlice.js.map +1 -0
  119. package/lib/features/index.d.ts +8 -0
  120. package/lib/features/index.js +26 -0
  121. package/lib/features/index.js.map +1 -0
  122. package/lib/features/kilometricAllowParamSlice.d.ts +18 -0
  123. package/lib/features/kilometricAllowParamSlice.js +56 -0
  124. package/lib/features/kilometricAllowParamSlice.js.map +1 -0
  125. package/lib/features/projectSlice.d.ts +16 -0
  126. package/lib/features/projectSlice.js +49 -0
  127. package/lib/features/projectSlice.js.map +1 -0
  128. package/lib/hooks/use-hr-header-actions.d.ts +1 -0
  129. package/lib/hooks/use-hr-header-actions.js +53 -0
  130. package/lib/hooks/use-hr-header-actions.js.map +1 -0
  131. package/lib/i18n/en.json +68 -0
  132. package/lib/i18n/fr.json +68 -0
  133. package/lib/index.d.ts +7 -0
  134. package/lib/index.js +66 -0
  135. package/lib/index.js.map +1 -0
  136. package/lib/models/forms.d.ts +2 -0
  137. package/lib/models/forms.js +183 -0
  138. package/lib/models/forms.js.map +1 -0
  139. package/lib/models/index.d.ts +4 -0
  140. package/lib/models/index.js +22 -0
  141. package/lib/models/index.js.map +1 -0
  142. package/lib/models/objectFields.d.ts +2 -0
  143. package/lib/models/objectFields.js +87 -0
  144. package/lib/models/objectFields.js.map +1 -0
  145. package/lib/models/searchFields.d.ts +2 -0
  146. package/lib/models/searchFields.js +26 -0
  147. package/lib/models/searchFields.js.map +1 -0
  148. package/lib/models/sortFields.d.ts +2 -0
  149. package/lib/models/sortFields.js +26 -0
  150. package/lib/models/sortFields.js.map +1 -0
  151. package/lib/screens/ExpenseDetailsScreen.d.ts +5 -0
  152. package/lib/screens/ExpenseDetailsScreen.js +85 -0
  153. package/lib/screens/ExpenseDetailsScreen.js.map +1 -0
  154. package/lib/screens/ExpenseLineFormScreen.d.ts +5 -0
  155. package/lib/screens/ExpenseLineFormScreen.js +202 -0
  156. package/lib/screens/ExpenseLineFormScreen.js.map +1 -0
  157. package/lib/screens/ExpenseLinesListScreen.d.ts +4 -0
  158. package/lib/screens/ExpenseLinesListScreen.js +91 -0
  159. package/lib/screens/ExpenseLinesListScreen.js.map +1 -0
  160. package/lib/screens/ExpenseListScreen.d.ts +4 -0
  161. package/lib/screens/ExpenseListScreen.js +138 -0
  162. package/lib/screens/ExpenseListScreen.js.map +1 -0
  163. package/lib/screens/index.d.ts +38 -0
  164. package/lib/screens/index.js +52 -0
  165. package/lib/screens/index.js.map +1 -0
  166. package/lib/types/expense.d.ts +27 -0
  167. package/lib/types/expense.js +80 -0
  168. package/lib/types/expense.js.map +1 -0
  169. package/lib/types/expenseLine.d.ts +21 -0
  170. package/lib/types/expenseLine.js +57 -0
  171. package/lib/types/expenseLine.js.map +1 -0
  172. package/lib/types/index.d.ts +2 -0
  173. package/lib/types/index.js +20 -0
  174. package/lib/types/index.js.map +1 -0
  175. package/package.json +50 -0
@@ -0,0 +1,85 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2023 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
19
+ import { View } from 'react-native';
20
+ import { Screen, ScrollList, HeaderContainer } from '@axelor/aos-mobile-ui';
21
+ import { AnomalyList, useDispatch, useSelector, useTranslator, } from '@axelor/aos-mobile-core';
22
+ import { ExpenseDetailsValidationButton, ExpenseHeader, ExpenseLineDetailCard, ExpenseLineTypeSwitch, } from '../components';
23
+ import { fetchExpenseById } from '../features/expenseSlice';
24
+ import { searchGeneralExpenseLines, searchKilometricExpenseLines, } from '../features/expenseLineSlice';
25
+ import { ExpenseLine } from '../types';
26
+ const ExpenseDetailsScreen = ({ route, navigation }) => {
27
+ const { idExpense, expenseMode } = route.params;
28
+ const I18n = useTranslator();
29
+ const dispatch = useDispatch();
30
+ const { expense } = useSelector(state => state.expense);
31
+ const { loadingGeneralExpenseLine, moreLoadingGeneralExpenseLine, isListEndGeneralExpenseLine, generalExpenseLineList, loadingKilometricExpenseLine, moreLoadingKilometricExpenseLine, isListEndKilometricExpenseLine, kilometricExpenseLineList, } = useSelector(state => state.expenseLine);
32
+ const [mode, setMode] = useState(ExpenseLine.modes.general);
33
+ useEffect(() => {
34
+ dispatch(fetchExpenseById({ ExpenseId: idExpense }));
35
+ }, [dispatch, idExpense]);
36
+ const ObjectToDisplay = useMemo(() => {
37
+ if (mode === ExpenseLine.modes.general) {
38
+ return {
39
+ loading: loadingGeneralExpenseLine,
40
+ moreLoading: moreLoadingGeneralExpenseLine,
41
+ isListEnd: isListEndGeneralExpenseLine,
42
+ list: generalExpenseLineList,
43
+ };
44
+ }
45
+ else {
46
+ return {
47
+ loading: loadingKilometricExpenseLine,
48
+ moreLoading: moreLoadingKilometricExpenseLine,
49
+ isListEnd: isListEndKilometricExpenseLine,
50
+ list: kilometricExpenseLineList,
51
+ };
52
+ }
53
+ }, [
54
+ generalExpenseLineList,
55
+ isListEndGeneralExpenseLine,
56
+ isListEndKilometricExpenseLine,
57
+ kilometricExpenseLineList,
58
+ loadingGeneralExpenseLine,
59
+ loadingKilometricExpenseLine,
60
+ mode,
61
+ moreLoadingGeneralExpenseLine,
62
+ moreLoadingKilometricExpenseLine,
63
+ ]);
64
+ const fetchExpenseLineAPI = useCallback((page = 0) => {
65
+ dispatch((mode === ExpenseLine.modes.general
66
+ ? searchGeneralExpenseLines
67
+ : searchKilometricExpenseLines)({ expenseId: expense?.id, page: page }));
68
+ }, [dispatch, expense, mode]);
69
+ if (expense?.id !== idExpense) {
70
+ return null;
71
+ }
72
+ return (<Screen removeSpaceOnTop={true} fixedItems={<ExpenseDetailsValidationButton expense={expense} mode={expenseMode}/>}>
73
+ <HeaderContainer expandableFilter={false} fixedItems={<View>
74
+ <ExpenseHeader />
75
+ <ExpenseLineTypeSwitch onChange={setMode}/>
76
+ </View>}/>
77
+ <AnomalyList objectName="expense" objectId={expense.id}/>
78
+ <ScrollList loadingList={ObjectToDisplay.loading} data={ObjectToDisplay.list} renderItem={({ item }) => (<ExpenseLineDetailCard expense={expense} item={item} onEdit={() => navigation.navigate('ExpenseLineFormScreen', {
79
+ expenseLine: item,
80
+ idExpense: idExpense,
81
+ })}/>)} fetchData={fetchExpenseLineAPI} moreLoading={ObjectToDisplay.moreLoading} isListEnd={ObjectToDisplay.isListEnd} translator={I18n.t}/>
82
+ </Screen>);
83
+ };
84
+ export default ExpenseDetailsScreen;
85
+ //# sourceMappingURL=ExpenseDetailsScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpenseDetailsScreen.js","sourceRoot":"","sources":["../../src/screens/ExpenseDetailsScreen.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export default ExpenseLineFormScreen;
2
+ declare function ExpenseLineFormScreen({ route, navigation }: {
3
+ route: any;
4
+ navigation: any;
5
+ }): JSX.Element;
@@ -0,0 +1,202 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2023 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import React, { useCallback, useEffect, useMemo } from 'react';
19
+ import { FormView, fetchCompanies, useDispatch } from '@axelor/aos-mobile-core';
20
+ import { createExpenseLine, updateExpenseLine, } from '../features/expenseLineSlice';
21
+ import { useSelector, useTranslator } from '@axelor/aos-mobile-core';
22
+ import { ExpenseLine } from '../types';
23
+ import { updateExpenseDate } from '../features/kilometricAllowParamSlice';
24
+ import { fetchExpenseConfig } from '../features/expenseConfigSlice';
25
+ import { needUpdateDistance, resetDistance, updateFromCity, updateToCity, } from '../features/distanceSlice';
26
+ const ExpenseLineFormScreen = ({ route, navigation }) => {
27
+ const { expenseLine, idExpense, justificationMetaFile } = route?.params;
28
+ const I18n = useTranslator();
29
+ const _dispatch = useDispatch();
30
+ const { user } = useSelector(state => state.user);
31
+ useEffect(() => {
32
+ _dispatch(fetchCompanies());
33
+ _dispatch(fetchExpenseConfig());
34
+ _dispatch(resetDistance());
35
+ }, [_dispatch]);
36
+ const createExpenseLineAPI = useCallback((_expenseLine, dispatch) => {
37
+ dispatch(needUpdateDistance(false));
38
+ const dataToSend = {
39
+ projectId: _expenseLine.project?.id,
40
+ toInvoice: _expenseLine.toInvoice,
41
+ expenseProductId: _expenseLine.expenseProduct?.id,
42
+ expenseDate: _expenseLine.expenseDate,
43
+ employeeId: user?.employee?.id,
44
+ totalAmount: _expenseLine.totalAmount,
45
+ totalTax: _expenseLine.totalTax,
46
+ currencyId: _expenseLine.currency?.id,
47
+ comments: _expenseLine.comments,
48
+ justificationFileId: _expenseLine.justificationMetaFile?.id,
49
+ kilometricAllowParamId: _expenseLine.kilometricAllowParam?.id,
50
+ kilometricTypeSelect: _expenseLine.kilometricTypeSelect?.key,
51
+ distance: _expenseLine.distance,
52
+ fromCity: _expenseLine.fromCity,
53
+ toCity: _expenseLine.toCity,
54
+ expenseLineType: _expenseLine.manageMode,
55
+ companyId: user?.activeCompany?.id,
56
+ };
57
+ dispatch(createExpenseLine({ expenseLine: dataToSend, userId: user?.id }));
58
+ navigation.navigate('ExpenseLinesListScreen');
59
+ }, [navigation, user?.activeCompany?.id, user?.employee?.id, user?.id]);
60
+ const updateExpenseLineAPI = useCallback((_expenseLine, dispatch) => {
61
+ dispatch(needUpdateDistance(false));
62
+ const mode = ExpenseLine.getExpenseMode(expenseLine);
63
+ const dataToSend = {
64
+ id: expenseLine?.id,
65
+ version: expenseLine?.version,
66
+ project: _expenseLine.project,
67
+ toInvoice: _expenseLine.toInvoice,
68
+ expenseProduct: _expenseLine.expenseProduct,
69
+ expenseDate: _expenseLine.expenseDate,
70
+ employeeId: user?.employee?.id,
71
+ totalAmount: _expenseLine.totalAmount,
72
+ totalTax: _expenseLine.totalTax,
73
+ currency: _expenseLine.currency,
74
+ comments: _expenseLine.comments,
75
+ justificationMetaFile: mode === ExpenseLine.modes.general
76
+ ? _expenseLine.justificationMetaFile
77
+ : null,
78
+ kilometricAllowParam: _expenseLine.kilometricAllowParam,
79
+ kilometricTypeSelect: _expenseLine.kilometricTypeSelect?.key,
80
+ distance: _expenseLine.distance,
81
+ fromCity: _expenseLine.fromCity,
82
+ toCity: _expenseLine.toCity,
83
+ expenseLineType: _expenseLine.manageMode,
84
+ companyId: user?.activeCompany?.id,
85
+ };
86
+ dispatch(updateExpenseLine({
87
+ expenseLine: dataToSend,
88
+ expenseId: idExpense,
89
+ mode: mode,
90
+ userId: user?.id,
91
+ }));
92
+ if (idExpense == null) {
93
+ navigation.navigate('ExpenseLinesListScreen');
94
+ }
95
+ else {
96
+ navigation.navigate('ExpenseDetailsScreen', { idExpense });
97
+ }
98
+ }, [
99
+ expenseLine,
100
+ idExpense,
101
+ navigation,
102
+ user?.activeCompany?.id,
103
+ user?.employee?.id,
104
+ user?.id,
105
+ ]);
106
+ const defaultValue = useMemo(() => {
107
+ const _defaultDate = new Date().toISOString().split('T')[0];
108
+ const _default = {
109
+ manageMode: ExpenseLine.modes.general,
110
+ hideToggle: false,
111
+ expenseDate: _defaultDate,
112
+ companyName: user.activeCompany?.name,
113
+ totalAmount: 0,
114
+ totalTax: 0,
115
+ distance: 0,
116
+ };
117
+ if (justificationMetaFile != null) {
118
+ return {
119
+ ..._default,
120
+ hideToggle: true,
121
+ justificationMetaFile,
122
+ };
123
+ }
124
+ else if (expenseLine != null) {
125
+ const mode = ExpenseLine.getExpenseMode(expenseLine);
126
+ if (mode === ExpenseLine.modes.general) {
127
+ return {
128
+ ..._default,
129
+ manageMode: mode,
130
+ hideToggle: true,
131
+ expenseDate: expenseLine.expenseDate,
132
+ project: expenseLine.project,
133
+ toInvoice: expenseLine.toInvoice,
134
+ expenseProduct: expenseLine.expenseProduct,
135
+ totalAmount: expenseLine.totalAmount || 0,
136
+ totalTax: expenseLine.totalTax || 0,
137
+ currency: expenseLine.currency,
138
+ justificationMetaFile: expenseLine.justificationMetaFile,
139
+ comments: expenseLine.comments,
140
+ };
141
+ }
142
+ else if (mode === ExpenseLine.modes.kilometric) {
143
+ _dispatch(updateExpenseDate(expenseLine?.expenseDate));
144
+ _dispatch(updateFromCity(expenseLine?.fromCity));
145
+ _dispatch(updateToCity(expenseLine?.toCity));
146
+ return {
147
+ ..._default,
148
+ manageMode: mode,
149
+ hideToggle: true,
150
+ expenseDate: expenseLine.expenseDate,
151
+ project: expenseLine.project,
152
+ toInvoice: expenseLine.toInvoice,
153
+ fromCity: expenseLine.fromCity,
154
+ toCity: expenseLine.toCity,
155
+ distance: expenseLine.distance || 0,
156
+ kilometricAllowParam: expenseLine.kilometricAllowParam,
157
+ kilometricTypeSelect: {
158
+ key: expenseLine.kilometricTypeSelect,
159
+ title: ExpenseLine.getKilomectricTypeSelect(expenseLine.kilometricTypeSelect, I18n),
160
+ },
161
+ comments: expenseLine.comments,
162
+ };
163
+ }
164
+ }
165
+ else {
166
+ _dispatch(updateExpenseDate(_defaultDate));
167
+ _dispatch(updateFromCity(null));
168
+ _dispatch(updateToCity(null));
169
+ }
170
+ return _default;
171
+ }, [
172
+ I18n,
173
+ _dispatch,
174
+ expenseLine,
175
+ justificationMetaFile,
176
+ user.activeCompany?.name,
177
+ ]);
178
+ return (<FormView defaultValue={defaultValue} actions={[
179
+ {
180
+ key: 'create-expenseLine',
181
+ type: 'create',
182
+ needValidation: true,
183
+ needRequiredFields: true,
184
+ hideIf: () => expenseLine != null,
185
+ customAction: ({ dispatch, objectState }) => {
186
+ return createExpenseLineAPI(objectState, dispatch);
187
+ },
188
+ },
189
+ {
190
+ key: 'update-expenseLine',
191
+ type: 'update',
192
+ needValidation: true,
193
+ needRequiredFields: true,
194
+ hideIf: () => expenseLine == null,
195
+ customAction: ({ dispatch, objectState }) => {
196
+ return updateExpenseLineAPI(objectState, dispatch);
197
+ },
198
+ },
199
+ ]} formKey="hr_Expenseline"/>);
200
+ };
201
+ export default ExpenseLineFormScreen;
202
+ //# sourceMappingURL=ExpenseLineFormScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpenseLineFormScreen.js","sourceRoot":"","sources":["../../src/screens/ExpenseLineFormScreen.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export default ExpenseLinesListScreen;
2
+ declare function ExpenseLinesListScreen({ navigation }: {
3
+ navigation: any;
4
+ }): JSX.Element;
@@ -0,0 +1,91 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2023 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import React, { useCallback, useEffect, useState } from 'react';
19
+ import { Screen, ScrollList, useThemeColor } from '@axelor/aos-mobile-ui';
20
+ import { CameraButton, headerActionsProvider, useDispatch, useSelector, useTranslator, } from '@axelor/aos-mobile-core';
21
+ import { fetchExpenseLine } from '../features/expenseLineSlice';
22
+ import { ExpenseAddPopup, ExpenseLineDetailCard, ExpenseLineValidationButton, } from '../components';
23
+ const ExpenseLinesListScreen = ({ navigation }) => {
24
+ const Colors = useThemeColor();
25
+ const I18n = useTranslator();
26
+ const dispatch = useDispatch();
27
+ const { expenseLineList, loadingExpenseLine, moreLoading, isListEnd } = useSelector(state => state.expenseLine);
28
+ const { userId } = useSelector(state => state.auth);
29
+ const [isSelectionMode, setIsSelectionMode] = useState(false);
30
+ const [selectedItems, setSelectedItems] = useState([]);
31
+ const [addPopupIsVisible, setAddPopupIsVisible] = useState(false);
32
+ const handleItemSelection = itemId => {
33
+ setSelectedItems(_current => {
34
+ if (_current.includes(itemId)) {
35
+ return _current.filter(id => id !== itemId);
36
+ }
37
+ else {
38
+ return [..._current, itemId];
39
+ }
40
+ });
41
+ };
42
+ const handleCancelButton = () => {
43
+ setSelectedItems([]);
44
+ setIsSelectionMode(false);
45
+ };
46
+ const fetchExpenseLineAPI = useCallback((page = 0) => {
47
+ dispatch(fetchExpenseLine({ userId: userId, page: page }));
48
+ }, [dispatch, userId]);
49
+ useEffect(() => {
50
+ headerActionsProvider.registerModel('hr_expenseLine_list', {
51
+ actions: [
52
+ {
53
+ key: 'newExpenseLines',
54
+ order: 10,
55
+ iconName: 'plus',
56
+ hideIf: isSelectionMode,
57
+ title: I18n.t('Hr_NewExpenseLine'),
58
+ iconColor: Colors.primaryColor.background,
59
+ onPress: () => navigation.navigate('ExpenseLineFormScreen', {}),
60
+ showInHeader: true,
61
+ },
62
+ ],
63
+ });
64
+ }, [Colors, I18n, navigation, isSelectionMode]);
65
+ const handleModeChange = itemId => {
66
+ setIsSelectionMode(current => {
67
+ const mode = !current;
68
+ if (mode) {
69
+ setSelectedItems([itemId]);
70
+ }
71
+ else {
72
+ setSelectedItems([]);
73
+ }
74
+ return mode;
75
+ });
76
+ };
77
+ return (<Screen removeSpaceOnTop={true} fixedItems={isSelectionMode && (<ExpenseLineValidationButton onOpen={() => setAddPopupIsVisible(true)} selectedItems={selectedItems} onChangeMode={handleCancelButton}/>)}>
78
+ <ScrollList loadingList={loadingExpenseLine} data={expenseLineList} disabledRefresh={isSelectionMode} renderItem={({ item }) => (<ExpenseLineDetailCard item={item} onEdit={() => navigation.navigate('ExpenseLineFormScreen', {
79
+ expenseLine: item,
80
+ })} onLongPress={() => handleModeChange(item.id)} onItemSelection={() => handleItemSelection(item.id)} isSelectionMode={isSelectionMode} isSelected={selectedItems.includes(item.id)}/>)} fetchData={fetchExpenseLineAPI} moreLoading={moreLoading} isListEnd={isListEnd} translator={I18n.t}/>
81
+ {!isSelectionMode && (<CameraButton cameraKey="expense-line_justication_picture" onUpload={_file => navigation.navigate('ExpenseLineFormScreen', {
82
+ justificationMetaFile: _file,
83
+ })} getFileName={({ user, extension, dateTime }) => `Expense_${user.name}_${dateTime}.${extension}`}/>)}
84
+ <ExpenseAddPopup visible={addPopupIsVisible} onClose={() => {
85
+ setAddPopupIsVisible(false);
86
+ handleCancelButton();
87
+ }} selectedItems={selectedItems}/>
88
+ </Screen>);
89
+ };
90
+ export default ExpenseLinesListScreen;
91
+ //# sourceMappingURL=ExpenseLinesListScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpenseLinesListScreen.js","sourceRoot":"","sources":["../../src/screens/ExpenseLinesListScreen.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export default ExpenseListScreen;
2
+ declare function ExpenseListScreen({ navigation }: {
3
+ navigation: any;
4
+ }): JSX.Element;
@@ -0,0 +1,138 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2023 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
19
+ import { View, StyleSheet } from 'react-native';
20
+ import { Screen, ScrollList, HeaderContainer, ToggleSwitch, getCommonStyles, useThemeColor, Picker, NumberBubble, } from '@axelor/aos-mobile-ui';
21
+ import { useDispatch, useSelector, useTranslator } from '@axelor/aos-mobile-core';
22
+ import { ExpenseCard, ExpenseWaitingValidationSearchBar } from '../components';
23
+ import { searchExpenseToValidate, searchMyExpense, sendExpense, validateExpense, } from '../features/expenseSlice';
24
+ import { Expense } from '../types';
25
+ const ExpenseListScreen = ({ navigation }) => {
26
+ const I18n = useTranslator();
27
+ const Colors = useThemeColor();
28
+ const dispatch = useDispatch();
29
+ const { user } = useSelector(state => state.user);
30
+ const { myExpenseList, loadingMyExpense, moreLoadingMyExpense, isListEndMyExpense, loadingExpenseToValidate, moreLoadingExpenseToValidate, isListEndExpenseToValidate, expenseToValidateList, totalNumberExpenseToValidate, } = useSelector(state => state.expense);
31
+ const [mode, setMode] = useState(Expense.mode.personnal);
32
+ const [selectedStatus, setSelectedStatus] = useState(null);
33
+ const commonStyles = useMemo(() => getCommonStyles(Colors), [Colors]);
34
+ const expenseStatusListItems = useMemo(() => {
35
+ return Expense.getStatusList(Colors, I18n);
36
+ }, [Colors, I18n]);
37
+ useEffect(() => {
38
+ dispatch(searchExpenseToValidate({ page: 0, user: user }));
39
+ }, [dispatch, user]);
40
+ const fetchMyExpenseAPI = useCallback((page = 0) => {
41
+ dispatch(searchMyExpense({ page: page, userId: user.id }));
42
+ }, [dispatch, user.id]);
43
+ const fetchExpenseToValidateAPI = useCallback((page = 0) => {
44
+ dispatch(searchExpenseToValidate({ page: page, user: user }));
45
+ }, [dispatch, user]);
46
+ const sendExpenseAPI = useCallback((expenseId, version) => {
47
+ dispatch(sendExpense({ expenseId: expenseId, version: version, userId: user?.id }));
48
+ }, [dispatch, user]);
49
+ const validateExpenseAPI = useCallback((expenseId, version) => {
50
+ dispatch(validateExpense({
51
+ expenseId: expenseId,
52
+ version: version,
53
+ userId: user?.id,
54
+ user: user,
55
+ mode: mode,
56
+ }));
57
+ }, [dispatch, user, mode]);
58
+ const ObjectToDisplay = useMemo(() => {
59
+ if (mode === Expense.mode.personnal) {
60
+ return {
61
+ list: myExpenseList,
62
+ loading: loadingMyExpense,
63
+ moreLoading: moreLoadingMyExpense,
64
+ isListEnd: isListEndMyExpense,
65
+ functionApi: fetchMyExpenseAPI,
66
+ };
67
+ }
68
+ else {
69
+ return {
70
+ list: expenseToValidateList,
71
+ loading: loadingExpenseToValidate,
72
+ moreLoading: moreLoadingExpenseToValidate,
73
+ isListEnd: isListEndExpenseToValidate,
74
+ functionApi: fetchExpenseToValidateAPI,
75
+ };
76
+ }
77
+ }, [
78
+ myExpenseList,
79
+ expenseToValidateList,
80
+ fetchExpenseToValidateAPI,
81
+ fetchMyExpenseAPI,
82
+ isListEndExpenseToValidate,
83
+ isListEndMyExpense,
84
+ loadingExpenseToValidate,
85
+ loadingMyExpense,
86
+ mode,
87
+ moreLoadingExpenseToValidate,
88
+ moreLoadingMyExpense,
89
+ ]);
90
+ const filterOnStatus = useCallback(list => {
91
+ if (!Array.isArray(list) || list.length === 0) {
92
+ return [];
93
+ }
94
+ else {
95
+ if (selectedStatus != null) {
96
+ return list?.filter(item => item?.statusSelect === selectedStatus);
97
+ }
98
+ else {
99
+ return list;
100
+ }
101
+ }
102
+ }, [selectedStatus]);
103
+ const filteredList = useMemo(() => filterOnStatus(ObjectToDisplay.list), [ObjectToDisplay.list, filterOnStatus]);
104
+ return (<Screen removeSpaceOnTop={true}>
105
+ <HeaderContainer expandableFilter={false} fixedItems={<View style={styles.headerContainer}>
106
+ <ToggleSwitch styleContainer={[commonStyles.filter, commonStyles.filterSize]} styleToogle={styles.toggle} leftTitle={I18n.t('Hr_MyExpenses')} rightTitle={I18n.t('Hr_ToValidate')} rigthElement={<NumberBubble style={styles.indicator} number={totalNumberExpenseToValidate} color={Colors.cautionColor} isNeutralBackground={true}/>} onSwitch={() => setMode(_mode => {
107
+ setSelectedStatus(null);
108
+ return _mode === Expense.mode.personnal
109
+ ? Expense.mode.validation
110
+ : Expense.mode.personnal;
111
+ })}/>
112
+ {mode === Expense.mode.personnal ? (<Picker listItems={expenseStatusListItems} title={I18n.t('Hr_Status')} onValueChange={setSelectedStatus} labelField="title" valueField="key"/>) : (<ExpenseWaitingValidationSearchBar showDetailsPopup={false} oneFilter={true} isFocus={true}/>)}
113
+ </View>}/>
114
+ <ScrollList loadingList={ObjectToDisplay.loading} data={filteredList} renderItem={({ item }) => (<ExpenseCard onPress={() => navigation.navigate('ExpenseDetailsScreen', {
115
+ idExpense: item.id,
116
+ expenseMode: mode,
117
+ })} style={styles.item} statusSelect={item.statusSelect} expenseId={item.id} expenseSeq={item.expenseSeq} periodeCode={item?.period?.code} inTaxTotal={item.inTaxTotal} employeeManagerId={item.employee?.managerUser?.id} employeeName={mode === Expense.mode.validation ? item.employee?.name : null} onSend={() => sendExpenseAPI(item.id, item.version)} onValidate={() => validateExpenseAPI(item.id, item.version)}/>)} fetchData={ObjectToDisplay.functionApi} moreLoading={ObjectToDisplay.moreLoading} isListEnd={ObjectToDisplay.isListEnd} translator={I18n.t}/>
118
+ </Screen>);
119
+ };
120
+ const styles = StyleSheet.create({
121
+ item: {
122
+ marginVertical: 4,
123
+ },
124
+ headerContainer: {
125
+ alignItems: 'center',
126
+ },
127
+ toggle: {
128
+ width: '54%',
129
+ height: 38,
130
+ borderRadius: 13,
131
+ },
132
+ indicator: {
133
+ position: 'absolute',
134
+ right: '5%',
135
+ },
136
+ });
137
+ export default ExpenseListScreen;
138
+ //# sourceMappingURL=ExpenseListScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpenseListScreen.js","sourceRoot":"","sources":["../../src/screens/ExpenseListScreen.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ declare namespace _default {
2
+ namespace ExpenseLinesListScreen {
3
+ export let title: string;
4
+ export { ExpenseLinesListScreen as component };
5
+ export let actionID: string;
6
+ }
7
+ namespace ExpenseListScreen {
8
+ let title_1: string;
9
+ export { title_1 as title };
10
+ export { ExpenseListScreen as component };
11
+ export namespace options {
12
+ let shadedHeader: boolean;
13
+ }
14
+ }
15
+ namespace ExpenseDetailsScreen {
16
+ let title_2: string;
17
+ export { title_2 as title };
18
+ export { ExpenseDetailsScreen as component };
19
+ export namespace options_1 {
20
+ let shadedHeader_1: boolean;
21
+ export { shadedHeader_1 as shadedHeader };
22
+ }
23
+ export { options_1 as options };
24
+ let actionID_1: string;
25
+ export { actionID_1 as actionID };
26
+ }
27
+ namespace ExpenseLineFormScreen {
28
+ let title_3: string;
29
+ export { title_3 as title };
30
+ export { ExpenseLineFormScreen as component };
31
+ }
32
+ }
33
+ export default _default;
34
+ import ExpenseLinesListScreen_1 from './ExpenseLinesListScreen';
35
+ import ExpenseListScreen_1 from './ExpenseListScreen';
36
+ import ExpenseDetailsScreen_1 from './ExpenseDetailsScreen';
37
+ import ExpenseLineFormScreen_1 from './ExpenseLineFormScreen';
38
+ export { ExpenseLinesListScreen_1 as ExpenseLinesListScreen, ExpenseListScreen_1 as ExpenseListScreen, ExpenseDetailsScreen_1 as ExpenseDetailsScreen, ExpenseLineFormScreen_1 as ExpenseLineFormScreen };