gotrip-fx-transaction-form 1.0.104 → 1.0.105

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 (29) hide show
  1. package/index.js +32811 -32998
  2. package/package.json +1 -1
  3. package/types/components/AddTransaction/Education.d.ts +1 -2
  4. package/types/components/AddTransaction/Immigration.d.ts +1 -2
  5. package/types/components/Contract/SignContractModal.d.ts +8 -0
  6. package/types/components/ESIM/ProductCard.d.ts +2 -1
  7. package/types/components/Menu/ProfileInfo.d.ts +3 -1
  8. package/types/components/OrganizationFlow/DepartmentNode.d.ts +1 -0
  9. package/types/components/OrganizationFlow/LayoutFlow.d.ts +1 -0
  10. package/types/components/TaskList/TaskActionMenu.d.ts +10 -0
  11. package/types/components/TransactionList/ActionMenu.d.ts +4 -1
  12. package/types/constants/api-urls.d.ts +20 -0
  13. package/types/constants/validation-code.d.ts +2 -1
  14. package/types/hooks/useAdminDebtReportList.d.ts +18 -0
  15. package/types/hooks/useComissionPolicies.d.ts +2 -0
  16. package/types/hooks/useConfirmTransaction.d.ts +2 -0
  17. package/types/hooks/useDebtReportList.d.ts +20 -0
  18. package/types/hooks/useEmailHistory.d.ts +1 -0
  19. package/types/hooks/useImportBookers.d.ts +1 -1
  20. package/types/hooks/useTaskList.d.ts +28 -0
  21. package/types/pages/admin/debt-report-list/AdminDebtReportList.d.ts +1 -0
  22. package/types/pages/admin/role-list/RoleList.d.ts +2 -0
  23. package/types/pages/admin/task-list/TaskList.d.ts +6 -0
  24. package/types/pages/agency/contract/contract.d.ts +1 -0
  25. package/types/pages/agency/debt-report-detail/DebtReportDetail.d.ts +1 -0
  26. package/types/pages/agency/debt-report-list/DebtReportDetailDialog.d.ts +12 -0
  27. package/types/pages/agency/debt-report-list/DebtReportList.d.ts +1 -0
  28. package/types/types/response.dto.d.ts +101 -1
  29. package/types/types/user.d.ts +23 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gotrip-fx-transaction-form",
3
- "version": "1.0.104",
3
+ "version": "1.0.105",
4
4
  "description": "FX Transaction Form ES6 module",
5
5
  "main": "index.js",
6
6
  "types": "types/index.d.ts",
@@ -1,7 +1,6 @@
1
1
  type Props = {
2
- ignoreLayout?: boolean;
3
2
  onFinish?: () => void;
4
3
  onBack?: () => void;
5
4
  };
6
- export declare const Education: ({ ignoreLayout, onFinish }: Props) => import("react/jsx-runtime").JSX.Element;
5
+ export declare const Education: ({ onFinish }: Props) => import("react/jsx-runtime").JSX.Element;
7
6
  export {};
@@ -1,7 +1,6 @@
1
1
  type Props = {
2
- ignoreLayout?: boolean;
3
2
  onFinish?: () => void;
4
3
  onBack?: () => void;
5
4
  };
6
- export declare const Immigration: ({ ignoreLayout, onFinish, onBack }: Props) => import("react/jsx-runtime").JSX.Element;
5
+ export declare const Immigration: ({ onFinish, onBack }: Props) => import("react/jsx-runtime").JSX.Element;
7
6
  export {};
@@ -0,0 +1,8 @@
1
+ type Props = {
2
+ isOpen: boolean;
3
+ onClose: () => void;
4
+ onSign: (signature: string, otp: string) => void;
5
+ isSigning?: boolean;
6
+ };
7
+ export declare const SignContractModal: ({ isOpen, onClose, onSign, isSigning }: Props) => import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -4,7 +4,8 @@ type ProductCardProps = {
4
4
  product: ESimPackage;
5
5
  primaryBlue: string;
6
6
  badgeBg: string;
7
+ canBuy?: boolean;
7
8
  onSelect?: (amount: number) => void;
8
9
  };
9
- declare const ProductCard: ({ product, primaryBlue, badgeBg, selectedCountries, onSelect, }: ProductCardProps) => import("react/jsx-runtime").JSX.Element;
10
+ declare const ProductCard: ({ product, primaryBlue, badgeBg, selectedCountries, canBuy, onSelect, }: ProductCardProps) => import("react/jsx-runtime").JSX.Element;
10
11
  export default ProductCard;
@@ -2,10 +2,12 @@ type Props = {
2
2
  isAgency?: boolean;
3
3
  isBankEmployee?: boolean;
4
4
  isAdmin?: boolean;
5
+ isStandaloneBooker?: boolean;
5
6
  tenantShortName?: string;
6
7
  tenantName?: string;
7
8
  handleLogout: () => void;
8
9
  handleUpdateProfile: () => void;
10
+ handleContract?: () => void;
9
11
  };
10
- export declare const ProfileInfo: ({ isAgency, isBankEmployee, tenantShortName, tenantName, isAdmin, handleLogout, handleUpdateProfile, }: Props) => import("react/jsx-runtime").JSX.Element;
12
+ export declare const ProfileInfo: ({ isAgency, isBankEmployee, tenantShortName, tenantName, isAdmin, isStandaloneBooker, handleLogout, handleUpdateProfile, handleContract, }: Props) => import("react/jsx-runtime").JSX.Element;
11
13
  export {};
@@ -9,6 +9,7 @@ interface DepartmentNodeProps {
9
9
  haveChildren?: boolean;
10
10
  actions: {
11
11
  canAddDepartment?: boolean;
12
+ canAddAgency?: boolean;
12
13
  canAddMember?: boolean;
13
14
  canRemoveMember?: boolean;
14
15
  canViewTenantCommissionPolicy?: boolean;
@@ -11,6 +11,7 @@ export interface INode {
11
11
  haveChildren?: boolean;
12
12
  actions: {
13
13
  canAddDepartment?: boolean;
14
+ canAddAgency?: boolean;
14
15
  canAddMember?: boolean;
15
16
  canRemoveMember?: boolean;
16
17
  canViewTenantCommissionPolicy?: boolean;
@@ -0,0 +1,10 @@
1
+ import { ITask } from '../../types/response.dto';
2
+ type Props = {
3
+ task: ITask;
4
+ onRetryTask: (task: ITask) => void;
5
+ onCancelTask: (task: ITask) => void;
6
+ onEditPayload: (task: ITask) => void;
7
+ onDeleteTask: (task: ITask) => void;
8
+ };
9
+ export declare const TaskActionMenu: ({ task, onRetryTask, onCancelTask, onEditPayload, onDeleteTask, }: Props) => import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -1,8 +1,11 @@
1
1
  import { ITransaction } from '../../types/response.dto';
2
2
  type Props = {
3
+ canUpdate?: boolean;
4
+ canVerify?: boolean;
5
+ canCancel?: boolean;
3
6
  transaction: ITransaction;
4
7
  setLoading?: (loading: boolean) => void;
5
8
  refetchData?: () => void;
6
9
  };
7
- export declare const ActionMenu: ({ transaction, setLoading, refetchData }: Props) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const ActionMenu: ({ canUpdate, canVerify, canCancel, transaction, setLoading, refetchData, }: Props) => import("react/jsx-runtime").JSX.Element;
8
11
  export {};
@@ -54,6 +54,7 @@ export declare const ApiUrls: {
54
54
  };
55
55
  image: {
56
56
  extractFlightTicket: string;
57
+ extractFlightTicketFromBase64: string;
57
58
  uploadIdentityDocuments: string;
58
59
  saveReaderHistory: string;
59
60
  getReaderHistories: string;
@@ -83,6 +84,7 @@ export declare const ApiUrls: {
83
84
  };
84
85
  userHandlers: {
85
86
  userProfile: string;
87
+ uploadIdentityCardImages: string;
86
88
  changePassword: string;
87
89
  list: string;
88
90
  approveUser: string;
@@ -131,9 +133,11 @@ export declare const ApiUrls: {
131
133
  getTenantCommissionPoliciesByTenantId: (tenantId: number) => string;
132
134
  getDepartmentCommissionPolicies: (departmentId: number) => string;
133
135
  getMemberCommissionPolicies: (departmentId: number, memberId: number) => string;
136
+ getMemberCommissionPoliciesByMemberId: (memberId: number) => string;
134
137
  updateTenantCommissionPolicies: (tenantId: number) => string;
135
138
  updateDepartmentCommissionPolicies: (departmentId: number) => string;
136
139
  updateMemberCommissionPolicies: (departmentId: number, memberId: number) => string;
140
+ updateMemberCommissionPoliciesByMemberId: (memberId: number) => string;
137
141
  };
138
142
  esimHandlers: {
139
143
  list: string;
@@ -142,8 +146,24 @@ export declare const ApiUrls: {
142
146
  list: string;
143
147
  send: string;
144
148
  };
149
+ econtractHandlers: {
150
+ collaboratorContract: string;
151
+ getOtp: string;
152
+ uploadSignature: string;
153
+ checkSigningConditions: string;
154
+ };
145
155
  bankAccountHandlers: {
146
156
  list: string;
147
157
  update: string;
148
158
  };
159
+ debtReportHandlers: {
160
+ create: string;
161
+ bookerDebtReports: string;
162
+ bankDebtReports: string;
163
+ allDebtReports: string;
164
+ getById: (id: number) => string;
165
+ approve: (id: number) => string;
166
+ markPaid: (id: number) => string;
167
+ reportIssue: (id: number) => string;
168
+ };
149
169
  };
@@ -10,5 +10,6 @@ export declare enum ValidationErrorCodes {
10
10
  VNCountryCodeIsNotAllowed = "V_009",
11
11
  InvalidTransactionStatus = "V_010",
12
12
  InvalidIdNumber = "V_011",
13
- TypeArray = "V_012"
13
+ TypeArray = "V_012",
14
+ DepartureTimeTooClose = "V_014"
14
15
  }
@@ -0,0 +1,18 @@
1
+ import { IDebtReport } from '../types/response.dto';
2
+ type Props = {
3
+ defaultLimit?: number;
4
+ };
5
+ export declare const useAdminDebtReportList: ({ defaultLimit }: Props) => {
6
+ debtReports: IDebtReport[];
7
+ total: number;
8
+ loading: boolean;
9
+ page: number;
10
+ limit: number;
11
+ refetchData: () => void;
12
+ markAsPaid: (reportId: number) => Promise<void>;
13
+ getDebtReportById: (reportId: number) => Promise<any>;
14
+ setPage: import('react').Dispatch<import('react').SetStateAction<number>>;
15
+ setLimit: (limit: number) => void;
16
+ setLoading: import('react').Dispatch<import('react').SetStateAction<boolean>>;
17
+ };
18
+ export {};
@@ -7,6 +7,8 @@ export declare const useComissionPolicies: ({ isAdminView }?: {
7
7
  getCommissionPoliciesByTenantId: (tenantId: number) => Promise<ICommissionPolicy[]>;
8
8
  getCommissionPoliciesByDepartmentId: (departmentId: number) => Promise<ICommissionPolicy[]>;
9
9
  getCommissionPoliciesByMemberId: (departmentId: number, memberId: number) => Promise<ICommissionPolicy[]>;
10
+ getCommissionPoliciesByMemberIdOnly: (memberId: number) => Promise<ICommissionPolicy[]>;
11
+ clearCommissionPolicies: () => void;
10
12
  isAdmin: boolean;
11
13
  isAgency: boolean;
12
14
  };
@@ -5,6 +5,7 @@ export type ConfirmTransactionData = {
5
5
  data: {
6
6
  id: number;
7
7
  bankCode: string;
8
+ bankName: string;
8
9
  bookerName?: string;
9
10
  bookerEmail?: string;
10
11
  ticketNumber: string;
@@ -21,6 +22,7 @@ export declare const useConfirmTransaction: () => {
21
22
  transaction: {
22
23
  id: number;
23
24
  bankCode: string;
25
+ bankName: string;
24
26
  bookerName?: string;
25
27
  bookerEmail?: string;
26
28
  ticketNumber: string;
@@ -0,0 +1,20 @@
1
+ import { IDebtReport } from '../types/response.dto';
2
+ type Props = {
3
+ defaultLimit?: number;
4
+ };
5
+ export declare const useDebtReportList: ({ defaultLimit }: Props) => {
6
+ debtReports: IDebtReport[];
7
+ total: number;
8
+ loading: boolean;
9
+ page: number;
10
+ limit: number;
11
+ refetchData: () => void;
12
+ approveDebtReport: (reportId: number) => Promise<void>;
13
+ reportIssue: (reportId: number, issueDescription: string) => Promise<void>;
14
+ getDebtReportById: (reportId: number) => Promise<any>;
15
+ downloadDebtReportPDF: (report: IDebtReport) => Promise<void>;
16
+ setPage: import('react').Dispatch<import('react').SetStateAction<number>>;
17
+ setLimit: (limit: number) => void;
18
+ setLoading: import('react').Dispatch<import('react').SetStateAction<boolean>>;
19
+ };
20
+ export {};
@@ -7,6 +7,7 @@ export interface SendEmailData {
7
7
  to: string;
8
8
  cc?: string;
9
9
  bcc?: string;
10
+ attachments?: File[];
10
11
  }
11
12
  type Props = {
12
13
  defaultLimit?: number;
@@ -135,7 +135,7 @@ export declare const useImportBookers: (onFinish: () => void) => {
135
135
  }[] | undefined;
136
136
  }>;
137
137
  onSubmit: (data: yup.InferType<typeof groupOfBookerSchema>) => Promise<void>;
138
- addBooker: () => void;
138
+ addBooker: (availableRoles?: any[]) => void;
139
139
  removeBooker: (index: number) => void;
140
140
  };
141
141
  export {};
@@ -0,0 +1,28 @@
1
+ import { ITask, ITaskStats } from '../types/response.dto';
2
+ interface UseTaskListProps {
3
+ defaultLimit?: number;
4
+ }
5
+ interface TaskFilters {
6
+ status?: string;
7
+ type?: string;
8
+ search?: string;
9
+ }
10
+ export declare const useTaskList: ({ defaultLimit }?: UseTaskListProps) => {
11
+ tasks: ITask[];
12
+ stats: ITaskStats | null;
13
+ loading: boolean;
14
+ page: number;
15
+ limit: number;
16
+ total: number;
17
+ totalPages: number;
18
+ filters: TaskFilters;
19
+ setPage: import('react').Dispatch<import('react').SetStateAction<number>>;
20
+ setLimit: import('react').Dispatch<import('react').SetStateAction<number>>;
21
+ setFilter: (newFilters: Partial<TaskFilters>) => void;
22
+ retryTask: (taskId: number) => Promise<void>;
23
+ cancelTask: (taskId: number) => Promise<void>;
24
+ updateTaskPayload: (taskId: number, payload: Record<string, any>) => Promise<void>;
25
+ deleteTask: (taskId: number) => Promise<void>;
26
+ refetchData: () => void;
27
+ };
28
+ export {};
@@ -0,0 +1 @@
1
+ export declare const AdminDebtReportList: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export declare const RoleList: () => import("react/jsx-runtime").JSX.Element;
2
+ export default RoleList;
@@ -0,0 +1,6 @@
1
+ type Props = {
2
+ showLayout?: boolean;
3
+ defaultLimit?: number;
4
+ };
5
+ export declare const TaskList: ({ showLayout, defaultLimit }: Props) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1 @@
1
+ export declare const Contract: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const DebtReportDetail: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { IDebtReport } from '../../../types/response.dto';
2
+ interface DebtReportDetailDialogProps {
3
+ report: IDebtReport | null;
4
+ isOpen: boolean;
5
+ onClose: () => void;
6
+ onApprove: (reportId: number) => Promise<void>;
7
+ onReportIssue: (reportId: number, description: string) => Promise<void>;
8
+ onDownloadPDF: (report: IDebtReport) => Promise<void>;
9
+ loading: boolean;
10
+ }
11
+ export declare const DebtReportDetailDialog: ({ report, isOpen, onClose, onApprove, onReportIssue, onDownloadPDF, loading, }: DebtReportDetailDialogProps) => import("react/jsx-runtime").JSX.Element | null;
12
+ export {};
@@ -0,0 +1 @@
1
+ export declare const DebtReportList: () => import("react/jsx-runtime").JSX.Element;
@@ -15,6 +15,7 @@ export type LoginRespDto = {
15
15
  roles?: string[];
16
16
  permissions?: EPermissionKey[];
17
17
  department?: IDepartment;
18
+ departments?: IDepartment[];
18
19
  isAgency?: boolean;
19
20
  balance: {
20
21
  amount: number;
@@ -74,7 +75,6 @@ export type ITransaction = {
74
75
  receiptCreatedAt?: Date;
75
76
  status: TransactionStatus;
76
77
  exchangeCurrencyCode: string;
77
- bankCode: string;
78
78
  bankTransactionId: string;
79
79
  bankTransactionStatus: string;
80
80
  bankTransactionStatusDescription: string;
@@ -151,6 +151,47 @@ export type IESimTransaction = {
151
151
  };
152
152
  user?: IUser;
153
153
  };
154
+ export declare enum ETaskStatus {
155
+ PENDING = "pending",
156
+ PROCESSING = "processing",
157
+ COMPLETED = "completed",
158
+ FAILED = "failed",
159
+ CANCELLED = "cancelled"
160
+ }
161
+ export type ITask = {
162
+ id: number;
163
+ type: string;
164
+ status: ETaskStatus;
165
+ payload: Record<string, any>;
166
+ result?: Record<string, any>;
167
+ errorMessage?: string;
168
+ scheduledAt: string;
169
+ startedAt?: string;
170
+ completedAt?: string;
171
+ retryCount: number;
172
+ maxRetries: number;
173
+ queueName: string;
174
+ priority: number;
175
+ createdAt: string;
176
+ updatedAt: string;
177
+ };
178
+ export type ITaskStats = {
179
+ total: number;
180
+ pending: number;
181
+ processing: number;
182
+ completed: number;
183
+ failed: number;
184
+ cancelled: number;
185
+ };
186
+ export type ITaskListResponse = {
187
+ tasks: ITask[];
188
+ pagination: {
189
+ page: number;
190
+ limit: number;
191
+ total: number;
192
+ totalPages: number;
193
+ };
194
+ };
154
195
  export interface IBankWorkingHours {
155
196
  workdays: {
156
197
  from: string;
@@ -281,6 +322,8 @@ export type IUser = {
281
322
  address?: string;
282
323
  phone?: string;
283
324
  identityNumber?: string;
325
+ identityIssueDate?: string;
326
+ identityIssuePlace?: string;
284
327
  companyName?: string;
285
328
  companyTaxNumber?: string;
286
329
  commissionPolicy?: {
@@ -330,6 +373,7 @@ type IGlobalPermission = {
330
373
  description: string;
331
374
  group: string;
332
375
  index: number;
376
+ tenantTypes: ETenantType[];
333
377
  };
334
378
  export type IPermission = {
335
379
  id: number;
@@ -405,4 +449,60 @@ export interface IEmailHistory {
405
449
  createdAt: string;
406
450
  updatedAt: string;
407
451
  }
452
+ export type IFileUrl = {
453
+ url: string;
454
+ type: string;
455
+ originalName: string;
456
+ uploadedAt: string;
457
+ fileSize: number;
458
+ category: 'ticket' | 'idCard' | 'passport' | 'other';
459
+ };
460
+ export declare enum EDebtReportStatus {
461
+ REVIEW = "review",
462
+ APPROVED = "approved",
463
+ PAID = "paid",
464
+ REPORTED_ISSUE = "reported_issue"
465
+ }
466
+ export declare enum ETransactionReportType {
467
+ FX = "fx",
468
+ ESIM = "esim"
469
+ }
470
+ export type IDebtReportTransaction = {
471
+ transactionId: number;
472
+ transactionType: ETransactionReportType;
473
+ customerName?: string;
474
+ customerPhone?: string;
475
+ customerEmail?: string;
476
+ amount: number;
477
+ amountVnd: number;
478
+ currency: string;
479
+ bankName: string;
480
+ publicId: string;
481
+ bankTransactionId?: string;
482
+ createdAt: string;
483
+ commissionAmount: number;
484
+ };
485
+ export type IDebtReport = {
486
+ id: number;
487
+ userId: number;
488
+ tenantId: number;
489
+ startDate: string;
490
+ endDate: string;
491
+ transactionType: ETransactionReportType;
492
+ totalCommissionVnd: number;
493
+ totalCommissionByBank: Record<string, number>;
494
+ numSuccessfulTransactions: number;
495
+ status: EDebtReportStatus;
496
+ reviewDeadline: string;
497
+ issueDescription?: string;
498
+ transactions: IDebtReportTransaction[];
499
+ createdAt: string;
500
+ updatedAt: string;
501
+ tenant?: ITenant;
502
+ user?: IUser;
503
+ };
504
+ export type GetDebtReportListRespDto = {
505
+ debtReports: IDebtReport[];
506
+ total: number;
507
+ };
408
508
  export {};
@@ -44,5 +44,27 @@ export declare enum EPermissionKey {
44
44
  VIEW_REPORT = "VIEW_REPORT",
45
45
  ADMIN = "ADMIN",
46
46
  PARTNER_ADMIN = "PARTNER_ADMIN",
47
- VIEW_ORGANIZATION_STRUCTURE = "VIEW_ORGANIZATION_STRUCTURE"
47
+ VIEW_ORGANIZATION_STRUCTURE = "VIEW_ORGANIZATION_STRUCTURE",
48
+ UPDATE_COMMISSION_POLICY = "UPDATE_COMMISSION_POLICY",
49
+ VIEW_ALL_USERS = "VIEW_ALL_USERS",
50
+ VIEW_TENANT_LIST = "VIEW_TENANT_LIST",
51
+ ADD_TENANT = "ADD_TENANT",
52
+ UPDATE_TENANT = "UPDATE_TENANT",
53
+ DELETE_TENANT = "DELETE_TENANT",
54
+ VERIFY_FX_TRANSACTION_INFO = "VERIFY_FX_TRANSACTION_INFO",
55
+ CANCEL_FX_TRANSACTION = "CANCEL_FX_TRANSACTION",
56
+ UPDATE_FX_TRANSACTION = "UPDATE_FX_TRANSACTION",
57
+ VIEW_OUTBOUND_SIM_PACKAGES = "VIEW_OUTBOUND_SIM_PACKAGES",
58
+ VIEW_OUTBOUND_SIM_ORDERS = "VIEW_OUTBOUND_SIM_ORDERS",
59
+ PURCHASE_OUTBOUND_SIM = "PURCHASE_OUTBOUND_SIM",
60
+ SEND_EMAILS_TO_CUSTOMER = "SEND_EMAILS_TO_CUSTOMER",
61
+ VIEW_SENT_EMAIL_HISTORY = "VIEW_SENT_EMAIL_HISTORY",
62
+ SEND_EMAIL = "SEND_EMAIL",
63
+ VIEW_DEBT_REPORT_LIST = "VIEW_DEBT_REPORT_LIST",
64
+ VIEW_DEBT_REPORT_DETAIL = "VIEW_DEBT_REPORT_DETAIL",
65
+ UPDATE_DEBT_REPORT = "UPDATE_DEBT_REPORT",
66
+ VIEW_SYSTEM_JOB_LIST = "VIEW_SYSTEM_JOB_LIST",
67
+ RETRY_SYSTEM_JOB = "RETRY_SYSTEM_JOB",
68
+ DELTE_SYSTEM_JOB = "DELTE_SYSTEM_JOB",
69
+ CHANGE_SYSTEM_JOB_PARAMS = "CHANGE_SYSTEM_JOB_PARAMS"
48
70
  }