@finspringinnovations/fixeddepositsdk 1.0.3 → 1.0.4
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.
- package/lib/api/customerApi.js +1 -0
- package/lib/api/fdApi.d.ts +401 -1
- package/lib/api/fdApi.js +24 -2
- package/lib/config/workflowConstants.d.ts +40 -30
- package/lib/config/workflowConstants.js +35 -24
- package/lib/navigation/RootNavigator.js +62 -81
- package/lib/navigation/types.d.ts +4 -1
- package/lib/navigation/workflowNavigator.d.ts +1 -1
- package/lib/navigation/workflowNavigator.js +107 -26
- package/lib/screens/AadhaarVerification.js +1 -11
- package/lib/screens/AddBankAccount.js +1 -11
- package/lib/screens/BankDetail.js +1 -11
- package/lib/screens/Employee.js +1 -11
- package/lib/screens/FDCalculator.js +1 -11
- package/lib/screens/FDList.js +529 -416
- package/lib/screens/FindIFSC.js +1 -11
- package/lib/screens/NomineeDetail.js +12 -22
- package/lib/screens/PayNow.js +1 -11
- package/lib/screens/Payment.js +2 -11
- package/lib/screens/PaymentStatus.js +11 -21
- package/lib/screens/ReviewKYC.js +1 -11
- package/lib/types/workflowTypes.d.ts +1 -1
- package/package.json +1 -1
- package/src/api/customerApi.ts +1 -0
- package/src/api/fdApi.ts +28 -1
- package/src/config/workflowConstants.ts +51 -39
- package/src/constants/strings/bank.ts +80 -80
- package/src/navigation/RootNavigator.tsx +646 -663
- package/src/navigation/types.ts +4 -1
- package/src/navigation/workflowNavigator.ts +170 -107
- package/src/screens/AadhaarVerification.tsx +1 -15
- package/src/screens/AddBankAccount.tsx +2 -16
- package/src/screens/BankDetail.tsx +1 -15
- package/src/screens/Employee.tsx +1 -15
- package/src/screens/FDCalculator.tsx +1 -15
- package/src/screens/FDList.tsx +2311 -2171
- package/src/screens/FindIFSC.tsx +2 -16
- package/src/screens/NomineeDetail.tsx +762 -775
- package/src/screens/PayNow.tsx +2 -16
- package/src/screens/Payment.tsx +190 -203
- package/src/screens/PaymentStatus.tsx +574 -588
- package/src/screens/ReviewKYC.tsx +1 -15
- package/src/types/workflowTypes.ts +1 -10
package/lib/screens/FindIFSC.js
CHANGED
|
@@ -137,17 +137,7 @@ const FindIFSC = ({ onGoBack, onSelect, initialSearchTerm }) => {
|
|
|
137
137
|
const handleBackPress = () => {
|
|
138
138
|
(0, helpers_1.navigate)('AddBankAccount');
|
|
139
139
|
};
|
|
140
|
-
//
|
|
141
|
-
(0, react_1.useEffect)(() => {
|
|
142
|
-
if (react_native_1.Platform.OS !== 'android')
|
|
143
|
-
return;
|
|
144
|
-
const onHardwareBackPress = () => {
|
|
145
|
-
handleBackPress();
|
|
146
|
-
return true; // Prevent default behavior
|
|
147
|
-
};
|
|
148
|
-
const backHandler = react_native_1.BackHandler.addEventListener('hardwareBackPress', onHardwareBackPress);
|
|
149
|
-
return () => backHandler.remove();
|
|
150
|
-
}, []);
|
|
140
|
+
// Removed screen-level hardware back handler to allow only header back button navigation
|
|
151
141
|
return (react_1.default.createElement(SafeAreaWrapper_1.default, { includeTop: false, bottomPadding: 25, statusBarColor: "#000000", statusBarStyle: "light-content" },
|
|
152
142
|
react_1.default.createElement(components_1.Header, { title: bank_1.BANK_STRINGS.FIND_IFSC_TITLE, onBackPress: handleBackPress, backgroundColor: colors.primary }),
|
|
153
143
|
react_1.default.createElement(react_native_1.ScrollView, { style: styles.container, showsVerticalScrollIndicator: false },
|
|
@@ -36,26 +36,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const datetimepicker_1 = __importDefault(require("@react-native-community/datetimepicker"));
|
|
39
40
|
const react_1 = __importStar(require("react"));
|
|
40
41
|
const react_native_1 = require("react-native");
|
|
41
42
|
const Ionicons_1 = __importDefault(require("react-native-vector-icons/Ionicons"));
|
|
42
|
-
const datetimepicker_1 = __importDefault(require("@react-native-community/datetimepicker"));
|
|
43
43
|
// import DatePicker from 'react-native-date-picker'; // Commented out old date picker
|
|
44
|
-
const
|
|
44
|
+
const native_1 = require("@react-navigation/native");
|
|
45
|
+
const customerApi_1 = require("../api/customerApi");
|
|
46
|
+
const workflowApi_1 = require("../api/workflowApi");
|
|
45
47
|
const components_1 = require("../components");
|
|
46
48
|
const ActionButton_1 = __importDefault(require("../components/ActionButton"));
|
|
49
|
+
const SafeAreaWrapper_1 = __importDefault(require("../components/SafeAreaWrapper"));
|
|
47
50
|
const TextFieldWithLabel_1 = __importDefault(require("../components/TextFieldWithLabel"));
|
|
48
|
-
const ThemeContext_1 = require("../theme/ThemeContext");
|
|
49
|
-
const customerApi_1 = require("../api/customerApi");
|
|
50
|
-
const MasterDataProvider_1 = require("../providers/MasterDataProvider");
|
|
51
|
-
const store_1 = require("../store");
|
|
52
51
|
const appDataConfig_1 = require("../config/appDataConfig");
|
|
53
|
-
const workflowApi_1 = require("../api/workflowApi");
|
|
54
|
-
const native_1 = require("@react-navigation/native");
|
|
55
|
-
const helpers_1 = require("../navigation/helpers");
|
|
56
52
|
const base64Images_1 = require("../constants/strings/base64Images");
|
|
57
|
-
const nominee_1 = require("../constants/strings/nominee");
|
|
58
53
|
const common_1 = require("../constants/strings/common");
|
|
54
|
+
const nominee_1 = require("../constants/strings/nominee");
|
|
55
|
+
const helpers_1 = require("../navigation/helpers");
|
|
56
|
+
const MasterDataProvider_1 = require("../providers/MasterDataProvider");
|
|
57
|
+
const store_1 = require("../store");
|
|
58
|
+
const ThemeContext_1 = require("../theme/ThemeContext");
|
|
59
59
|
const makeNominationOptions = ['Yes', 'No'];
|
|
60
60
|
const NomineeDetail = ({ onGoBack, onSave, initialData }) => {
|
|
61
61
|
var _a;
|
|
@@ -500,17 +500,7 @@ const NomineeDetail = ({ onGoBack, onSave, initialData }) => {
|
|
|
500
500
|
(0, helpers_1.navigate)('Employee');
|
|
501
501
|
}
|
|
502
502
|
};
|
|
503
|
-
//
|
|
504
|
-
(0, react_1.useEffect)(() => {
|
|
505
|
-
if (react_native_1.Platform.OS !== 'android')
|
|
506
|
-
return;
|
|
507
|
-
const onHardwareBackPress = () => {
|
|
508
|
-
handleBackPress();
|
|
509
|
-
return true; // Prevent default behavior
|
|
510
|
-
};
|
|
511
|
-
const backHandler = react_native_1.BackHandler.addEventListener('hardwareBackPress', onHardwareBackPress);
|
|
512
|
-
return () => backHandler.remove();
|
|
513
|
-
}, [defaultProviderId, workflowInstanceId, applicationId]);
|
|
503
|
+
// Removed screen-level hardware back handler to allow only header back button navigation
|
|
514
504
|
return (react_1.default.createElement(SafeAreaWrapper_1.default, { includeTop: false, bottomPadding: 25, statusBarColor: "#000000", statusBarStyle: "light-content" },
|
|
515
505
|
react_1.default.createElement(components_1.Header, { title: nominee_1.NOMINEE_STRINGS.NOMINEE_DETAILS_TITLE, onBackPress: handleBackPress, backgroundColor: colors.primary }),
|
|
516
506
|
react_1.default.createElement(react_native_1.KeyboardAvoidingView, { behavior: react_native_1.Platform.OS === 'ios' ? 'padding' : undefined, style: styles.keyboardAvoidingView, keyboardVerticalOffset: react_native_1.Platform.OS === 'ios' ? 0 : 0 },
|
|
@@ -523,7 +513,7 @@ const NomineeDetail = ({ onGoBack, onSave, initialData }) => {
|
|
|
523
513
|
renderDropdown(nominee_1.NOMINEE_STRINGS.RELATIONSHIP_LABEL, form.relationship, 'relationship', nomineeRelationOptions, 'relationship'),
|
|
524
514
|
renderDateField(nominee_1.NOMINEE_STRINGS.DATE_OF_BIRTH_LABEL, form.dateOfBirth, 'dateOfBirth'),
|
|
525
515
|
showDatePicker && (react_1.default.createElement(react_native_1.View, { style: styles.datePickerContainer },
|
|
526
|
-
react_1.default.createElement(datetimepicker_1.default, { value: selectedDate, mode: "date", display: react_native_1.Platform.OS === 'ios' ? 'spinner' : 'default', onChange: onDateChange, maximumDate: new Date(new Date().getFullYear() - 18, new Date().getMonth(), new Date().getDate()), themeVariant: "light" }))),
|
|
516
|
+
react_1.default.createElement(datetimepicker_1.default, { value: selectedDate, mode: "date", display: react_native_1.Platform.OS === 'ios' ? 'spinner' : 'default', onChange: onDateChange, maximumDate: new Date(new Date().getFullYear() - 18, new Date().getMonth(), new Date().getDate()), minimumDate: new Date(new Date().getFullYear() - 100, 0, 1), themeVariant: "light" }))),
|
|
527
517
|
react_1.default.createElement(react_native_1.View, { style: styles.checkboxContainer },
|
|
528
518
|
react_1.default.createElement(react_native_1.TouchableOpacity, { style: styles.checkbox, onPress: () => updateField('printNameOnCertificate', !form.printNameOnCertificate) },
|
|
529
519
|
react_1.default.createElement(react_native_1.View, { style: [styles.checkboxBox, form.printNameOnCertificate && styles.checkboxChecked] }, form.printNameOnCertificate ? (react_1.default.createElement(react_native_1.Image, { source: { uri: ((0, ThemeContext_1.useTheme)().themeName === 'dark') ? base64Images_1.base64Images.checkBoxDark : base64Images_1.base64Images.filledCheckBox }, style: { width: 22, height: 22 }, resizeMode: "contain" })) : (((0, ThemeContext_1.useTheme)().themeName === 'dark') ? (react_1.default.createElement(react_native_1.Image, { source: { uri: base64Images_1.base64Images.unCheckBoxDark }, style: { width: 22, height: 22 }, resizeMode: "contain" })) : null))),
|
package/lib/screens/PayNow.js
CHANGED
|
@@ -148,17 +148,7 @@ const PayNow = ({ onGoBack, onConfirm, fdData }) => {
|
|
|
148
148
|
(0, helpers_1.navigate)('BankDetail');
|
|
149
149
|
}
|
|
150
150
|
};
|
|
151
|
-
//
|
|
152
|
-
(0, react_1.useEffect)(() => {
|
|
153
|
-
if (react_native_1.Platform.OS !== 'android')
|
|
154
|
-
return;
|
|
155
|
-
const onHardwareBackPress = () => {
|
|
156
|
-
handleBackPress();
|
|
157
|
-
return true; // Prevent default behavior
|
|
158
|
-
};
|
|
159
|
-
const backHandler = react_native_1.BackHandler.addEventListener('hardwareBackPress', onHardwareBackPress);
|
|
160
|
-
return () => backHandler.remove();
|
|
161
|
-
}, [defaultProviderId, workflowInstanceId, applicationId, entityId]);
|
|
151
|
+
// Removed screen-level hardware back handler to allow only header back button navigation
|
|
162
152
|
return (react_1.default.createElement(SafeAreaWrapper_1.default, { includeTop: false, bottomPadding: 25, statusBarColor: "#000000", statusBarStyle: "light-content" },
|
|
163
153
|
react_1.default.createElement(react_native_1.View, { style: styles.container },
|
|
164
154
|
react_1.default.createElement(react_native_1.ScrollView, { showsVerticalScrollIndicator: false, contentContainerStyle: styles.scrollContent },
|
package/lib/screens/Payment.js
CHANGED
|
@@ -40,9 +40,9 @@ const react_1 = __importStar(require("react"));
|
|
|
40
40
|
const react_native_1 = require("react-native");
|
|
41
41
|
const react_native_webview_1 = require("react-native-webview");
|
|
42
42
|
const SafeAreaWrapper_1 = __importDefault(require("../components/SafeAreaWrapper"));
|
|
43
|
+
const encryptionConfig_1 = require("../config/encryptionConfig");
|
|
43
44
|
const ThemeContext_1 = require("../theme/ThemeContext");
|
|
44
45
|
const encryption_1 = require("../utils/encryption");
|
|
45
|
-
const encryptionConfig_1 = require("../config/encryptionConfig");
|
|
46
46
|
const Payment = ({ onGoBack, onPaymentSuccess, onPaymentFailure, paymentUrl, successUrl = 'payment/success', failureUrl = 'payment/failure', }) => {
|
|
47
47
|
const colors = (0, ThemeContext_1.useColors)();
|
|
48
48
|
const styles = createStyles(colors);
|
|
@@ -149,16 +149,7 @@ const Payment = ({ onGoBack, onPaymentSuccess, onPaymentFailure, paymentUrl, suc
|
|
|
149
149
|
}
|
|
150
150
|
};
|
|
151
151
|
// Disable hardware back button on Payment screen
|
|
152
|
-
|
|
153
|
-
if (react_native_1.Platform.OS !== 'android')
|
|
154
|
-
return;
|
|
155
|
-
const onBackPress = () => {
|
|
156
|
-
// Return true to prevent default behavior (block back button)
|
|
157
|
-
return true;
|
|
158
|
-
};
|
|
159
|
-
const backHandler = react_native_1.BackHandler.addEventListener('hardwareBackPress', onBackPress);
|
|
160
|
-
return () => backHandler.remove();
|
|
161
|
-
}, []);
|
|
152
|
+
// Removed screen-level hardware back handler to allow only header back button navigation
|
|
162
153
|
return (react_1.default.createElement(SafeAreaWrapper_1.default, { includeTop: false, bottomPadding: 0, statusBarColor: "#000000", statusBarStyle: "light-content" },
|
|
163
154
|
react_native_1.Platform.OS === 'ios' && react_1.default.createElement(react_native_1.StatusBar, { barStyle: "light-content" }),
|
|
164
155
|
react_1.default.createElement(react_native_1.View, { style: styles.container },
|
|
@@ -36,24 +36,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const native_1 = require("@react-navigation/native");
|
|
39
40
|
const react_1 = __importStar(require("react"));
|
|
40
41
|
const react_native_1 = require("react-native");
|
|
41
42
|
const Ionicons_1 = __importDefault(require("react-native-vector-icons/Ionicons"));
|
|
42
|
-
const
|
|
43
|
-
const
|
|
43
|
+
const customerApi_1 = require("../api/customerApi");
|
|
44
|
+
const fdApi_1 = require("../api/fdApi");
|
|
44
45
|
const components_1 = require("../components");
|
|
45
46
|
const ActionButton_1 = __importDefault(require("../components/ActionButton"));
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
const customerApi_1 = require("../api/customerApi");
|
|
49
|
-
const store_1 = require("../store");
|
|
47
|
+
const SafeAreaWrapper_1 = __importDefault(require("../components/SafeAreaWrapper"));
|
|
48
|
+
const apiConfig_1 = require("../config/apiConfig");
|
|
50
49
|
const appDataConfig_1 = require("../config/appDataConfig");
|
|
51
|
-
const helpers_1 = require("../navigation/helpers");
|
|
52
|
-
const paymentSession_1 = require("../state/paymentSession");
|
|
53
|
-
const native_1 = require("@react-navigation/native");
|
|
54
50
|
const bank_1 = require("../constants/strings/bank");
|
|
51
|
+
const base64Images_1 = require("../constants/strings/base64Images");
|
|
55
52
|
const common_1 = require("../constants/strings/common");
|
|
56
|
-
const
|
|
53
|
+
const helpers_1 = require("../navigation/helpers");
|
|
54
|
+
const paymentSession_1 = require("../state/paymentSession");
|
|
55
|
+
const store_1 = require("../store");
|
|
56
|
+
const ThemeContext_1 = require("../theme/ThemeContext");
|
|
57
57
|
const PaymentStatus = ({ onRetry, onContinue, status, transactionId, fdData }) => {
|
|
58
58
|
var _a;
|
|
59
59
|
const colors = (0, ThemeContext_1.useColors)();
|
|
@@ -305,17 +305,7 @@ const PaymentStatus = ({ onRetry, onContinue, status, transactionId, fdData }) =
|
|
|
305
305
|
const handleNavigateToFDList = () => {
|
|
306
306
|
(0, helpers_1.navigate)('FDList');
|
|
307
307
|
};
|
|
308
|
-
//
|
|
309
|
-
(0, react_1.useEffect)(() => {
|
|
310
|
-
if (react_native_1.Platform.OS !== 'android')
|
|
311
|
-
return;
|
|
312
|
-
const onBackPress = () => {
|
|
313
|
-
// Return true to prevent default behavior (block back button)
|
|
314
|
-
return true;
|
|
315
|
-
};
|
|
316
|
-
const backHandler = react_native_1.BackHandler.addEventListener('hardwareBackPress', onBackPress);
|
|
317
|
-
return () => backHandler.remove();
|
|
318
|
-
}, []);
|
|
308
|
+
// Removed screen-level hardware back handler to allow only header back button navigation
|
|
319
309
|
return (react_1.default.createElement(SafeAreaWrapper_1.default, { includeTop: true, bottomPadding: 0, statusBarColor: "#000000", statusBarStyle: "light-content" },
|
|
320
310
|
react_native_1.Platform.OS === 'ios' && react_1.default.createElement(react_native_1.StatusBar, { barStyle: "light-content" }),
|
|
321
311
|
react_1.default.createElement(react_native_1.View, { style: styles.container },
|
package/lib/screens/ReviewKYC.js
CHANGED
|
@@ -587,17 +587,7 @@ const ReviewKYC = ({ onGoBack, onContinue, initialData, }) => {
|
|
|
587
587
|
(0, helpers_1.navigate)('FDCalculator');
|
|
588
588
|
}
|
|
589
589
|
};
|
|
590
|
-
//
|
|
591
|
-
(0, react_1.useEffect)(() => {
|
|
592
|
-
if (react_native_1.Platform.OS !== 'android')
|
|
593
|
-
return;
|
|
594
|
-
const onHardwareBackPress = () => {
|
|
595
|
-
handleBackPress();
|
|
596
|
-
return true; // Prevent default behavior
|
|
597
|
-
};
|
|
598
|
-
const backHandler = react_native_1.BackHandler.addEventListener('hardwareBackPress', onHardwareBackPress);
|
|
599
|
-
return () => backHandler.remove();
|
|
600
|
-
}, [defaultProviderId, workflowInstanceId, applicationId, entityId]);
|
|
590
|
+
// Removed screen-level hardware back handler to allow only header back button navigation
|
|
601
591
|
return (react_1.default.createElement(SafeAreaWrapper_1.default, { includeTop: false, bottomPadding: 25, statusBarColor: "#000000", statusBarStyle: "light-content" },
|
|
602
592
|
react_1.default.createElement(components_1.Header, { title: "Review KYC", onBackPress: handleBackPress, backgroundColor: colors.primary }),
|
|
603
593
|
react_1.default.createElement(react_native_1.KeyboardAvoidingView, { behavior: react_native_1.Platform.OS === 'ios' ? 'padding' : undefined, style: styles.keyboardAvoidingView, keyboardVerticalOffset: react_native_1.Platform.OS === 'ios' ? 0 : 0 },
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { WORKFLOW_STATES } from '../config/workflowConstants';
|
|
2
|
-
export type WorkflowStateSriram = typeof WORKFLOW_STATES
|
|
2
|
+
export type WorkflowStateSriram = typeof WORKFLOW_STATES[keyof typeof WORKFLOW_STATES] | string;
|
package/package.json
CHANGED
package/src/api/customerApi.ts
CHANGED
package/src/api/fdApi.ts
CHANGED
|
@@ -142,9 +142,36 @@ export const fdApi = baseApi.injectEndpoints({
|
|
|
142
142
|
};
|
|
143
143
|
},
|
|
144
144
|
}),
|
|
145
|
+
|
|
146
|
+
getPaymentUrl: builder.query<
|
|
147
|
+
{ status?: string; statusCode?: number; message?: string; data?: Array<{ paymentUrl?: string; transactionId?: string }> },
|
|
148
|
+
{ providerId?: string; workflowInstanceId?: string; userreferenceid?: string; applicationid?: string; entityid?: string; applicationId: string; panNo: string; isRetry?: boolean }
|
|
149
|
+
>({
|
|
150
|
+
query: (params) => {
|
|
151
|
+
const { providerId, workflowInstanceId, userreferenceid, applicationid, entityid, applicationId, panNo, isRetry = false } = params;
|
|
152
|
+
const qs = new URLSearchParams({
|
|
153
|
+
applicationId,
|
|
154
|
+
panNo,
|
|
155
|
+
isRetry: String(isRetry),
|
|
156
|
+
}).toString();
|
|
157
|
+
return {
|
|
158
|
+
url: `fd/payment/url?${qs}`,
|
|
159
|
+
method: 'GET',
|
|
160
|
+
headers: {
|
|
161
|
+
provider: providerId || '{{shriramprovider}}',
|
|
162
|
+
workflowInstanceId: workflowInstanceId || '{{workflowInstanceId}}',
|
|
163
|
+
userreferenceid: userreferenceid || '{{userreferenceid}}',
|
|
164
|
+
applicationid: applicationid || applicationId || '{{applicationid}}',
|
|
165
|
+
entityid: entityid || '{{entityid}}',
|
|
166
|
+
encryptdecrypt: 'true',
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
},
|
|
170
|
+
}),
|
|
145
171
|
}),
|
|
146
172
|
});
|
|
147
173
|
|
|
148
174
|
export const { useCreateFDMutation, useFdBankAccountMutation,
|
|
149
175
|
useFdBankDetailsQuery, useFdBankDetailsSearchMutation,
|
|
150
|
-
usePaymentReverseFeedMutation, usePaymentRetryMutation
|
|
176
|
+
usePaymentReverseFeedMutation, usePaymentRetryMutation,
|
|
177
|
+
useLazyGetPaymentUrlQuery } = fdApi;
|
|
@@ -1,69 +1,81 @@
|
|
|
1
1
|
// Workflow State Constants
|
|
2
2
|
export const WORKFLOW_STATES = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
INITIATION: 'INITIATION',
|
|
4
|
+
START: 'START',
|
|
5
|
+
KYC: 'KYC',
|
|
6
|
+
OCCUPATION: 'OCCUPATION',
|
|
7
|
+
NOMINEE: 'NOMINEE',
|
|
8
|
+
BANK_DETAILS: 'BANK_DETAILS',
|
|
9
|
+
CREATE_FD: 'CREATE_FD',
|
|
10
|
+
PAYMENT: 'PAYMENT',
|
|
11
|
+
END: 'END',
|
|
12
|
+
} as const;
|
|
13
|
+
|
|
14
|
+
// Keep numeric IDs for reference/backward compatibility only
|
|
15
|
+
export const WORKFLOW_STATE_IDS = {
|
|
16
|
+
INITIATION: 404,
|
|
17
|
+
START: 405,
|
|
18
|
+
KYC: 406,
|
|
19
|
+
OCCUPATION: 409,
|
|
20
|
+
NOMINEE: 407,
|
|
21
|
+
BANK_DETAILS: 408,
|
|
22
|
+
CREATE_FD: 411,
|
|
23
|
+
PAYMENT: 410,
|
|
24
|
+
END: 403,
|
|
12
25
|
} as const;
|
|
13
26
|
|
|
14
27
|
export const SHRIRAM_WORKFLOW_STATES = {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
28
|
+
START: 'SHRIRAM_V1_S1_START',
|
|
29
|
+
INITIATION: 'SHRIRAM_V1_S2_INITIATION',
|
|
30
|
+
KYC: 'SHRIRAM_V1_S3_CUSTOMER_INFO_KYC',
|
|
31
|
+
OCCUPATION: 'SHRIRAM_V1_S4_OCCUPATION',
|
|
32
|
+
NOMINEE: 'SHRIRAM_V1_S5_NOMINEE_DETAILS',
|
|
33
|
+
BANK_DETAILS: 'SHRIRAM_V1_S6_BANK_DETAILS',
|
|
34
|
+
CREATE_FD: 'SHRIRAM_V1_S7_FD_CREATION',
|
|
35
|
+
PAYMENT: 'SHRIRAM_V1_S8_PAYMENT',
|
|
36
|
+
END: 'SHRIRAM_V1_S9_END',
|
|
24
37
|
} as const;
|
|
25
38
|
|
|
26
39
|
export const MAHINDRA_WORKFLOW_STATES = {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
KYC_SUCCESS: 446,
|
|
40
|
+
START: 'MAHINDRA_V1_S1_START',
|
|
41
|
+
INITIATION: 'MAHINDRA_V1_S2_INITIATION',
|
|
42
|
+
DEMOGRAPHIC_INFO: 'MAHINDRA_V1_S3_DEMOGRAPHIC_INFO',
|
|
43
|
+
KYC: 'MAHINDRA_V1_S4_KYC',
|
|
44
|
+
OCCUPATION: 'MAHINDRA_V1_S5_OCCUPATION',
|
|
45
|
+
NOMINEE: 'MAHINDRA_V1_S6_NOMINEE_DETAILS',
|
|
46
|
+
BANK_DETAILS: 'MAHINDRA_V1_S7_BANK_DETAILS',
|
|
47
|
+
CREATE_FD: 'MAHINDRA_V1_S8_FD_CREATION',
|
|
48
|
+
PAYMENT: 'MAHINDRA_V1_S9_PAYMENT',
|
|
49
|
+
END: 'MAHINDRA_V1_S10_END',
|
|
50
|
+
AADHAAR_VERIFICATION: 'MAHINDRA_V1_S4_KYC',
|
|
39
51
|
} as const;
|
|
40
52
|
|
|
41
53
|
// Workflow Task Constants
|
|
42
54
|
export const WORKFLOW_TASKS = {
|
|
43
|
-
|
|
44
|
-
|
|
55
|
+
RESEND_OTP: 11045,
|
|
56
|
+
VALIDATE_OTP: 11047,
|
|
45
57
|
} as const;
|
|
46
58
|
|
|
47
59
|
// Type definitions for TypeScript
|
|
48
60
|
export type WorkflowState = typeof WORKFLOW_STATES[keyof typeof WORKFLOW_STATES];
|
|
49
61
|
export type WorkflowTask = typeof WORKFLOW_TASKS[keyof typeof WORKFLOW_TASKS];
|
|
50
62
|
|
|
51
|
-
// Helper function to get workflow state name
|
|
63
|
+
// Helper function to get workflow state name from ID
|
|
52
64
|
export const getWorkflowStateName = (stateId: number): string | undefined => {
|
|
53
|
-
|
|
54
|
-
|
|
65
|
+
const entry = Object.entries(WORKFLOW_STATE_IDS).find(([_, value]) => value === stateId);
|
|
66
|
+
return entry ? entry[0] : undefined;
|
|
55
67
|
};
|
|
56
68
|
|
|
57
69
|
// Helper function to get workflow task name
|
|
58
70
|
export const getWorkflowTaskName = (taskId: number): string | undefined => {
|
|
59
|
-
|
|
60
|
-
|
|
71
|
+
const entry = Object.entries(WORKFLOW_TASKS).find(([_, value]) => value === taskId);
|
|
72
|
+
return entry ? entry[0] : undefined;
|
|
61
73
|
};
|
|
62
74
|
|
|
63
75
|
// Export all as a single object for convenience
|
|
64
76
|
export const WORKFLOW_CONSTANTS = {
|
|
65
|
-
|
|
66
|
-
|
|
77
|
+
STATES: WORKFLOW_STATES,
|
|
78
|
+
TASKS: WORKFLOW_TASKS,
|
|
67
79
|
} as const;
|
|
68
80
|
|
|
69
81
|
export default WORKFLOW_CONSTANTS;
|
|
@@ -1,92 +1,92 @@
|
|
|
1
1
|
// Bank and payment related strings
|
|
2
2
|
export const BANK_STRINGS = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
// Screen titles
|
|
4
|
+
BANK_DETAILS_TITLE: 'Bank Details',
|
|
5
|
+
ADD_BANK_ACCOUNT_TITLE: 'Add Bank Account',
|
|
6
|
+
FIND_IFSC_TITLE: 'Find IFSC',
|
|
7
|
+
PAYMENT_DETAILS_TITLE: 'Payment Details',
|
|
8
|
+
PAYMENT_STATUS_TITLE: 'Payment Status',
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
// Form labels
|
|
11
|
+
ACCOUNT_TYPE_LABEL: 'Account Type',
|
|
12
|
+
ACCOUNT_NUMBER_LABEL: 'Account Number',
|
|
13
|
+
IFSC_CODE_LABEL: 'IFSC Code',
|
|
14
|
+
BANK_NAME_LABEL: 'Bank Name',
|
|
15
|
+
BRANCH_NAME_LABEL: 'Branch Name',
|
|
16
|
+
ACCOUNT_HOLDER_NAME_LABEL: 'Account Holder Name',
|
|
17
|
+
CONFIRM_ACCOUNT_NUMBER_LABEL: 'Confirm Account Number',
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
// Placeholders
|
|
20
|
+
ACCOUNT_TYPE_PLACEHOLDER: 'Select option',
|
|
21
|
+
ACCOUNT_NUMBER_PLACEHOLDER: 'Enter Account Number',
|
|
22
|
+
IFSC_CODE_PLACEHOLDER: 'Enter IFSC Code',
|
|
23
|
+
BANK_NAME_PLACEHOLDER: 'Bank Name',
|
|
24
|
+
BRANCH_NAME_PLACEHOLDER: 'Branch Name',
|
|
25
|
+
ACCOUNT_HOLDER_NAME_PLACEHOLDER: 'Enter Account Holder Name',
|
|
26
|
+
CONFIRM_ACCOUNT_NUMBER_PLACEHOLDER: 'Re-enter Account Number',
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
// Account types
|
|
29
|
+
ACCOUNT_TYPE_SAVINGS: 'Savings Account',
|
|
30
|
+
ACCOUNT_TYPE_CURRENT: 'Current Account',
|
|
31
|
+
ACCOUNT_TYPE_FD: 'Fixed Deposit Account',
|
|
32
|
+
ACCOUNT_TYPE_RD: 'Recurring Deposit Account',
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
34
|
+
// Buttons
|
|
35
|
+
ADD_BANK_BUTTON: 'Add Bank Account',
|
|
36
|
+
UPDATE_BANK_BUTTON: 'Update Bank Account',
|
|
37
|
+
DELETE_BANK_BUTTON: 'Delete Bank Account',
|
|
38
|
+
FIND_IFSC_BUTTON: 'Find IFSC',
|
|
39
|
+
VERIFY_ACCOUNT_BUTTON: 'Verify Account',
|
|
40
|
+
PROCEED_PAYMENT_BUTTON: 'Proceed to Payment',
|
|
41
|
+
RETRY_PAYMENT_BUTTON: 'Retry Payment',
|
|
42
|
+
REFRESH_STATUS_BUTTON: 'Refresh Status',
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
44
|
+
// Messages
|
|
45
|
+
BANK_ACCOUNT_ADDED_SUCCESS: 'Bank account added successfully',
|
|
46
|
+
BANK_ACCOUNT_ADDED_FAILED: 'Failed to add bank account',
|
|
47
|
+
BANK_ACCOUNT_UPDATED_SUCCESS: 'Bank account updated successfully',
|
|
48
|
+
BANK_ACCOUNT_UPDATED_FAILED: 'Failed to update bank account',
|
|
49
|
+
BANK_ACCOUNT_DELETED_SUCCESS: 'Bank account deleted successfully',
|
|
50
|
+
BANK_ACCOUNT_DELETED_FAILED: 'Failed to delete bank account',
|
|
51
|
+
IFSC_FOUND_SUCCESS: 'IFSC details found',
|
|
52
|
+
IFSC_NOT_FOUND: 'IFSC code not found',
|
|
53
|
+
ACCOUNT_VERIFIED_SUCCESS: 'Account verified successfully',
|
|
54
|
+
ACCOUNT_VERIFICATION_FAILED: 'Account verification failed',
|
|
55
|
+
PAYMENT_SUCCESS: 'Payment completed successfully',
|
|
56
|
+
PAYMENT_FAILED: 'Payment failed',
|
|
57
|
+
PAYMENT_PENDING: 'Payment is pending',
|
|
58
|
+
PAYMENT_PROCESSING: 'Payment is being processed',
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
60
|
+
// Validation messages
|
|
61
|
+
ACCOUNT_TYPE_REQUIRED: 'Account type is required',
|
|
62
|
+
ACCOUNT_NUMBER_REQUIRED: 'Account number is required',
|
|
63
|
+
IFSC_CODE_REQUIRED: 'IFSC code is required',
|
|
64
|
+
BANK_NAME_REQUIRED: 'Bank name is required',
|
|
65
|
+
BRANCH_NAME_REQUIRED: 'Branch name is required',
|
|
66
|
+
ACCOUNT_HOLDER_NAME_REQUIRED: 'Account holder name is required',
|
|
67
|
+
INVALID_ACCOUNT_NUMBER: 'Invalid account number',
|
|
68
|
+
INVALID_IFSC_CODE: 'Invalid IFSC code',
|
|
69
|
+
ACCOUNT_NUMBER_MISMATCH: 'Account numbers do not match',
|
|
70
|
+
IFSC_CODE_NOT_FOUND: 'IFSC code not found. Please verify and try again.',
|
|
71
71
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
// Status messages
|
|
73
|
+
PAYMENT_STATUS_SUCCESS: 'Payment Successful',
|
|
74
|
+
PAYMENT_STATUS_FAILED: 'Payment Failed',
|
|
75
|
+
PAYMENT_STATUS_PENDING: 'Payment Pending',
|
|
76
|
+
PAYMENT_STATUS_PROCESSING: 'Processing Payment',
|
|
77
|
+
PAYMENT_STATUS_CANCELLED: 'Payment Cancelled',
|
|
78
78
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
79
|
+
// Instructions
|
|
80
|
+
BANK_DETAILS_INSTRUCTIONS: 'Please provide your bank account details for FD processing',
|
|
81
|
+
IFSC_INSTRUCTIONS: 'Enter IFSC code to find bank and branch details',
|
|
82
|
+
PAYMENT_INSTRUCTIONS: 'Please complete the payment to proceed with FD creation',
|
|
83
|
+
ACCOUNT_VERIFICATION_INSTRUCTIONS: 'Your account will be verified before processing',
|
|
84
|
+
PAYMENT_SUCCESS_DISCLAIMER: 'Your FD request has been submitted successfully and is currently under review. The review process may take 2–3 days. You will receive all related updates and information via email.',
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
86
|
+
// Error messages
|
|
87
|
+
BANK_VERIFICATION_FAILED: 'Bank account verification failed',
|
|
88
|
+
PAYMENT_GATEWAY_ERROR: 'Payment gateway error occurred',
|
|
89
|
+
INSUFFICIENT_FUNDS: 'Insufficient funds in account',
|
|
90
|
+
PAYMENT_TIMEOUT: 'Payment request timed out',
|
|
91
|
+
BANK_SERVICE_UNAVAILABLE: 'Bank service is temporarily unavailable',
|
|
92
92
|
} as const;
|