hl-core 0.0.8-beta.4 → 0.0.8-beta.5

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/api/index.ts CHANGED
@@ -147,21 +147,21 @@ export class ApiClass {
147
147
  async getQuestionList(surveyType: string, processInstanceId: string, insuredId: number | string): Promise<AnketaFirst> {
148
148
  return this.axiosCall({
149
149
  method: Methods.GET,
150
- url: `/Baiterek/api/Application/Anketa/${surveyType}/${processInstanceId}/${insuredId}`,
150
+ url: `/${this.productUrl}/api/Application/Anketa/${surveyType}/${processInstanceId}/${insuredId}`,
151
151
  });
152
152
  }
153
153
 
154
154
  async getQuestionListSecond(surveyType: string, processInstanceId: string, insuredId: number | string): Promise<AnketaSecond[]> {
155
155
  return this.axiosCall({
156
156
  method: Methods.GET,
157
- url: `/Baiterek/api/Application/Anketa/${surveyType}/${processInstanceId}/${insuredId}`,
157
+ url: `/${this.productUrl}/api/Application/Anketa/${surveyType}/${processInstanceId}/${insuredId}`,
158
158
  });
159
159
  }
160
160
 
161
161
  async definedAnswers(filter: string) {
162
162
  return this.axiosCall({
163
163
  method: Methods.GET,
164
- url: `/ekk/api/Contragentinsis/DictionaryItems/Questionary?filter=${filter}`,
164
+ url: `/Ekk/api/Contragentinsis/DictionaryItems/Questionary?filter=${filter}`,
165
165
  });
166
166
  }
167
167
 
@@ -227,7 +227,7 @@ export class ApiClass {
227
227
  });
228
228
  }
229
229
 
230
- async getDicFileTypeList() {
230
+ async getDicFileTypeList(): Promise<Value[]> {
231
231
  return this.axiosCall({
232
232
  method: Methods.GET,
233
233
  url: '/Arm/api/Dictionary/GetDictionaryItems/DicFileType',
@@ -498,7 +498,7 @@ export class ApiClass {
498
498
  }
499
499
 
500
500
  async getProcessTariff(code: number | string = 5) {
501
- return this.axiosCall({ url: `/arm/api/Dictionary/ProcessTariff/${code}` });
501
+ return this.axiosCall({ url: `/Arm/api/Dictionary/ProcessTariff/${code}` });
502
502
  }
503
503
 
504
504
  async setConfirmation(data: any) {
@@ -519,30 +519,37 @@ export class ApiClass {
519
519
  async sendUnderwritingCouncilTask(data: any) {
520
520
  return this.axiosCall({
521
521
  method: Methods.POST,
522
- url: '/arm/api/UnderwritingCouncil/SendTask',
522
+ url: '/Arm/api/UnderwritingCouncil/SendTask',
523
523
  data: data,
524
524
  });
525
525
  }
526
526
 
527
+ async getDictionaryItems(dictName: string): Promise<Value[]> {
528
+ return this.axiosCall({
529
+ method: Methods.GET,
530
+ url: `/Ekk/api/ContragentInsis/DictionaryItems/${dictName}`,
531
+ });
532
+ }
533
+
527
534
  async filterManagerByRegion(dictName: string, filterName: string) {
528
535
  return this.axiosCall({
529
536
  method: Methods.GET,
530
- url: `/ekk/api/ContragentInsis/DictionaryItems/${dictName}?filter=${filterName}`,
537
+ url: `/Ekk/api/ContragentInsis/DictionaryItems/${dictName}?filter=${filterName}`,
531
538
  });
532
539
  }
533
540
 
534
541
  async setINSISWorkData(data: any) {
535
542
  return this.axiosCall({
536
543
  method: Methods.POST,
537
- url: `/arm/api/Bpm/SetInsisWorkData`,
544
+ url: `/Arm/api/Bpm/SetInsisWorkData`,
538
545
  data: data,
539
546
  });
540
547
  }
541
548
 
542
- async searchAgentByName(name: string) {
549
+ async searchAgentByName(name: string): Promise<AgentData[]> {
543
550
  return this.axiosCall({
544
551
  method: Methods.GET,
545
- url: `/ekk/api/ContragentInsis/AgentByName?fullName=${name}`,
552
+ url: `/Ekk/api/ContragentInsis/AgentByName?fullName=${name}`,
546
553
  });
547
554
  }
548
555
  }
@@ -0,0 +1,196 @@
1
+ <template>
2
+ <div class="rounded-lg border-[1px]" :class="[$libStyles.whiteBg, disabled && $libStyles.disabled]">
3
+ <div class="mt-3 ml-5">
4
+ <p :class="[$libStyles.textTitle, $libStyles.greenText]">{{ $t('form.attachManager') }}</p>
5
+ </div>
6
+ <v-form ref="vForm" class="flex flex-col mt-1">
7
+ <base-panel-input
8
+ class="pl-1"
9
+ v-model="formStore.SaleChanellPolicy"
10
+ :value="formStore.SaleChanellPolicy.nameRu"
11
+ :readonly="isReadonly"
12
+ :clearable="!isReadonly"
13
+ :label="$t('form.salesChanell')"
14
+ :rules="$rules.objectRequired"
15
+ append-inner-icon="mdi mdi-chevron-right"
16
+ @append="openPanel('SaleChanellPolicy', $t('form.salesChanell'))"
17
+ ></base-panel-input>
18
+ <base-panel-input
19
+ class="pl-1"
20
+ v-model="formStore.RegionPolicy"
21
+ :value="formStore.RegionPolicy.nameRu"
22
+ :readonly="isReadonly"
23
+ :clearable="!isReadonly"
24
+ :label="$t('form.Region')"
25
+ :rules="$rules.objectRequired"
26
+ append-inner-icon="mdi mdi-chevron-right"
27
+ @append="openPanel('RegionPolicy', $t('form.Region'))"
28
+ ></base-panel-input>
29
+ <base-panel-input
30
+ class="pl-1"
31
+ v-model="formStore.ManagerPolicy"
32
+ :value="formStore.ManagerPolicy.nameRu"
33
+ :readonly="isReadonly"
34
+ :clearable="!isReadonly"
35
+ :label="$t('form.manager')"
36
+ :rules="$rules.objectRequired"
37
+ append-inner-icon="mdi mdi-chevron-right"
38
+ @append="openPanel('ManagerPolicy', $t('form.manager'))"
39
+ ></base-panel-input>
40
+ <base-panel-input
41
+ class="pl-1"
42
+ v-model="formStore.AgentData"
43
+ :value="formStore.AgentData.fullName"
44
+ :readonly="isReadonly"
45
+ :clearable="!isReadonly"
46
+ :label="$t('form.agent')"
47
+ :rules="$rules.agentDataRequired"
48
+ append-inner-icon="mdi mdi-chevron-right"
49
+ @append="openPanel('AgentData', $t('form.agent'))"
50
+ ></base-panel-input>
51
+ </v-form>
52
+ <Teleport v-if="isPanelOpen" to="#panel-actions">
53
+ <div :class="[$libStyles.scrollPage]" class="flex flex-col items-center">
54
+ <base-rounded-input
55
+ v-model="searchQuery"
56
+ :label="$t('labels.search')"
57
+ class="w-full p-2"
58
+ :hide-details="true"
59
+ :append-inner-icon="currentDictName === 'AgentData' ? 'mdi mdi-magnify' : ''"
60
+ @append="searchAgent"
61
+ ></base-rounded-input>
62
+ <div v-if="dictList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
63
+ <div v-for="(item, index) in dictList" :key="item.id">
64
+ <base-panel-select-item
65
+ :key="index"
66
+ :text="currentDictName === 'AgentData' ? item.fullName : (item.nameRu as string)"
67
+ :selected="currentDictName === 'AgentData' ? item.fullName === panelValue.fullName : item.nameRu === panelValue.nameRu"
68
+ @click="pickPanelValue(item)"
69
+ ></base-panel-select-item>
70
+ </div>
71
+ </div>
72
+ <base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50"></base-loader>
73
+ </div>
74
+ </Teleport>
75
+ </div>
76
+ </template>
77
+
78
+ <script lang="ts">
79
+ import { Value } from '@/composables/classes';
80
+
81
+ export default defineComponent({
82
+ props: {
83
+ title: {
84
+ type: String,
85
+ default: '',
86
+ },
87
+ disabled: {
88
+ type: Boolean,
89
+ default: false,
90
+ },
91
+ },
92
+ setup(props) {
93
+ const route = useRoute();
94
+ const dataStore = useDataStore();
95
+ const formStore = useFormStore();
96
+ const isPanelOpen = ref<boolean>(false);
97
+ const isPanelLoading = ref<boolean>(false);
98
+ const panelValue = ref<Value & AgentData>(new Value());
99
+ const searchQuery = ref<string>('');
100
+ const currentDictName = ref<string>();
101
+
102
+ const dictList = computed(() => {
103
+ if (!currentDictName.value) {
104
+ return [];
105
+ }
106
+ if (currentDictName.value === 'AgentData') {
107
+ return dataStore[currentDictName.value];
108
+ } else {
109
+ // @ts-ignore
110
+ return dataStore[currentDictName.value].filter((item: Value) => {
111
+ // @ts-ignore
112
+ return item.nameRu ? item.nameRu.toLowerCase().includes(searchQuery.value.toLowerCase()) : item.fullName.toLowerCase().includes(searchQuery.value.toLowerCase());
113
+ });
114
+ }
115
+ });
116
+ const isReadonly = computed(
117
+ () =>
118
+ props.disabled ||
119
+ route.params.taskId === '0' ||
120
+ (route.params.taskId !== '0' && (!dataStore.isProcessEditable(formStore.applicationData.statusCode) || !dataStore.isTask())),
121
+ );
122
+
123
+ const openPanel = async (currentDict: string, title: string) => {
124
+ searchQuery.value = '';
125
+ if (dataStore.isTask() && !props.disabled) {
126
+ dataStore.panelAction = null;
127
+ dataStore.panel.open = true;
128
+ dataStore.panel.title = title;
129
+ currentDictName.value = currentDict;
130
+
131
+ if (currentDict === 'ManagerPolicy') {
132
+ isPanelLoading.value = true;
133
+ await dataStore.filterManagerByRegion(formStore.RegionPolicy?.ids);
134
+ }
135
+
136
+ isPanelOpen.value = true;
137
+ panelValue.value = formStore[currentDict as keyof typeof formStore];
138
+ isPanelLoading.value = false;
139
+ } else {
140
+ dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
141
+ }
142
+ };
143
+
144
+ const searchAgent = async () => {
145
+ if (searchQuery.value) {
146
+ isPanelLoading.value = true;
147
+ await dataStore.searchAgentByName(searchQuery.value);
148
+ isPanelLoading.value = false;
149
+ }
150
+ };
151
+
152
+ const pickPanelValue = (answer: any) => {
153
+ // @ts-ignore
154
+ formStore[currentDictName.value] = answer;
155
+ isPanelOpen.value = false;
156
+ dataStore.panel.open = false;
157
+ searchQuery.value = '';
158
+ };
159
+
160
+ watch(searchQuery, () => {
161
+ if (searchQuery.value === null) {
162
+ searchQuery.value = '';
163
+ }
164
+ });
165
+
166
+ watch(
167
+ () => formStore.RegionPolicy,
168
+ (val, oldVal) => {
169
+ if (val.ids !== oldVal.ids) {
170
+ formStore.ManagerPolicy = new Value();
171
+ }
172
+ },
173
+ );
174
+
175
+ return {
176
+ // State
177
+ formStore,
178
+ isPanelOpen,
179
+ isPanelLoading,
180
+ panelValue,
181
+ searchQuery,
182
+ Value,
183
+ currentDictName,
184
+
185
+ // Computed
186
+ dictList,
187
+ isReadonly,
188
+
189
+ // Functions
190
+ openPanel,
191
+ searchAgent,
192
+ pickPanelValue,
193
+ };
194
+ },
195
+ });
196
+ </script>
@@ -440,8 +440,10 @@ export default defineComponent({
440
440
  formStore.additionalInsuranceTermsWithout = defaultData.addCovers;
441
441
  productConditionsForm.requestedSumInsured = defaultData.amount;
442
442
  productConditionsForm.insurancePremiumPerMonth = defaultData.premium;
443
- productConditionsForm.processIndexRate = dataStore.processIndexRate.find(i => i.id === defaultData.indexRateId);
444
- productConditionsForm.paymentPeriod = dataStore.processPaymentPeriod.find(i => i.id == defaultData.paymentPeriodId);
443
+ const indexRate = dataStore.processIndexRate.find(i => i.id === defaultData.indexRateId);
444
+ if (indexRate) productConditionsForm.processIndexRate = indexRate;
445
+ const paymendPeriod = dataStore.processPaymentPeriod.find(i => i.id == defaultData.paymentPeriodId);
446
+ if (paymendPeriod) productConditionsForm.paymentPeriod = paymendPeriod;
445
447
  productConditionsForm.signDate = reformatDate(defaultData.signDate);
446
448
  }
447
449
  }
@@ -781,6 +781,8 @@ export class DataStoreClass {
781
781
  hasInsis: boolean;
782
782
  // Калькулятор без ввода данных
783
783
  hasCalculator: boolean;
784
+ // Блок прикрепления к менеджеру
785
+ hasAttachment: boolean;
784
786
  };
785
787
  hasLayoutMargins: boolean;
786
788
  readonly product: string | null;
@@ -840,9 +842,9 @@ export class DataStoreClass {
840
842
  user: User;
841
843
  accessToken: string | null = null;
842
844
  refreshToken: string | null = null;
843
- processCoverTypeSum: any[];
844
- processIndexRate: any[];
845
- processPaymentPeriod: any[];
845
+ processCoverTypeSum: Value[];
846
+ processIndexRate: Value[];
847
+ processPaymentPeriod: Value[];
846
848
  taskList: TaskListItem[];
847
849
  processHistory: TaskHistory[];
848
850
  contragentList: any[];
@@ -851,11 +853,11 @@ export class DataStoreClass {
851
853
  groupCode: string;
852
854
  userGroups: Item[];
853
855
  onMainPage: boolean;
854
- SaleChanellPolicyList: any[];
855
- RegionPolicyList: any[];
856
- ManagerPolicyList: any[];
857
- AgentDataList: any[];
858
- riskGroup: any[];
856
+ SaleChanellPolicy: Value[];
857
+ RegionPolicy: Value[];
858
+ ManagerPolicy: Value[];
859
+ AgentData: AgentData[];
860
+ riskGroup: Value[];
859
861
  constructor() {
860
862
  this.controls = {
861
863
  onAuth: false,
@@ -865,15 +867,16 @@ export class DataStoreClass {
865
867
  hasGKB: false,
866
868
  hasInsis: false,
867
869
  hasCalculator: false,
870
+ hasAttachment: true,
868
871
  };
869
872
  this.hasLayoutMargins = true;
870
873
  this.processIndexRate = [];
871
874
  this.processPaymentPeriod = [];
872
875
  this.questionRefs = [];
873
- this.SaleChanellPolicyList = [];
874
- this.RegionPolicyList = [];
875
- this.ManagerPolicyList = [];
876
- this.AgentDataList = [];
876
+ this.SaleChanellPolicy = [];
877
+ this.RegionPolicy = [];
878
+ this.ManagerPolicy = [];
879
+ this.AgentData = [];
877
880
  this.product = import.meta.env.VITE_PRODUCT ? (import.meta.env.VITE_PRODUCT as string) : null;
878
881
  this.showNav = true;
879
882
  this.menuItems = [];
@@ -949,27 +952,36 @@ export class DataStoreClass {
949
952
  id: '1',
950
953
  nameKz: '',
951
954
  nameRu: '1',
952
- isDefault: true,
955
+ code: '',
956
+ ids: '',
953
957
  },
954
958
  {
955
959
  id: '2',
956
960
  nameKz: '',
957
961
  nameRu: '2',
962
+ code: '',
963
+ ids: '',
958
964
  },
959
965
  {
960
966
  id: '3',
961
967
  nameKz: '',
962
968
  nameRu: '3',
969
+ code: '',
970
+ ids: '',
963
971
  },
964
972
  {
965
973
  id: '4',
966
974
  nameKz: '',
967
975
  nameRu: '4',
976
+ code: '',
977
+ ids: '',
968
978
  },
969
979
  {
970
980
  id: '5',
971
981
  nameKz: '',
972
982
  nameRu: '5',
983
+ code: '',
984
+ ids: '',
973
985
  },
974
986
  ];
975
987
  }
@@ -997,15 +1009,7 @@ export class FormStoreClass {
997
1009
  };
998
1010
  birthInfos: BirthInfoGKB[];
999
1011
  SaleChanellPolicy: Value;
1000
- AgentData: {
1001
- agentId: null;
1002
- manId: number;
1003
- fullName: string;
1004
- officeId: null;
1005
- officeCode: null;
1006
- saleChannel: string;
1007
- managerName: string;
1008
- };
1012
+ AgentData: AgentData;
1009
1013
  RegionPolicy: Value;
1010
1014
  ManagerPolicy: Value;
1011
1015
  isDisabled: {
@@ -7,6 +7,7 @@ export const constants = Object.freeze({
7
7
  bolashak: 8,
8
8
  liferenta: 9,
9
9
  gons: 10,
10
+ halykkazyna: 11,
10
11
  },
11
12
 
12
13
  editableStatuses: ['StartForm', 'EditBeneficiaryForm', 'EditForm'],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hl-core",
3
- "version": "0.0.8-beta.4",
3
+ "version": "0.0.8-beta.5",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "main": "nuxt.config.ts",
@@ -38,6 +38,7 @@ export const useDataStore = defineStore('data', {
38
38
  isLiferenta: state => state.product === 'liferenta',
39
39
  isPension: state => state.product === 'pension',
40
40
  isGons: state => state.product === 'gons',
41
+ isKazyna: state => state.product === 'halykkazyna',
41
42
  isEveryFormDisabled: state => Object.values(state.formStore.isDisabled).every(i => i === true),
42
43
  },
43
44
  actions: {
@@ -956,16 +957,23 @@ export const useDataStore = defineStore('data', {
956
957
  }
957
958
  },
958
959
  async getFromApi(whichField, whichRequest, parameter, reset = false) {
960
+ if (typeof this[whichField].length === 'number' && !!this[whichField].length) return this[whichField];
959
961
  const storageValue = JSON.parse(localStorage.getItem(whichField) || 'null');
960
962
  const currentHour = new Date().getHours();
963
+ const currentMinutePart = Math.ceil((new Date().getMinutes() + 1) / 15);
961
964
 
962
965
  const getDataCondition = () => {
963
966
  if (!storageValue) return true;
964
967
  const hasHourKey = 'hour' in storageValue;
968
+ const hasMiniteKey = 'minute' in storageValue;
965
969
  const hasModeKey = 'mode' in storageValue;
966
970
  const hasValueKey = 'value' in storageValue;
967
- if (storageValue && (hasHourKey === false || hasModeKey === false || hasValueKey === false)) return true;
968
- if (storageValue && (storageValue.hour !== currentHour || storageValue.mode !== import.meta.env.MODE || storageValue.value.length === 0)) return true;
971
+ if (storageValue && (hasHourKey === false || hasMiniteKey === false || hasModeKey === false || hasValueKey === false)) return true;
972
+ if (
973
+ storageValue &&
974
+ (storageValue.hour !== currentHour || storageValue.minute !== currentMinutePart || storageValue.mode !== import.meta.env.MODE || storageValue.value.length === 0)
975
+ )
976
+ return true;
969
977
  };
970
978
  if (!!getDataCondition() || reset === true) {
971
979
  this[whichField] = [];
@@ -977,6 +985,7 @@ export const useDataStore = defineStore('data', {
977
985
  JSON.stringify({
978
986
  value: response,
979
987
  hour: currentHour,
988
+ minute: currentMinutePart,
980
989
  mode: import.meta.env.MODE,
981
990
  }),
982
991
  );
@@ -1047,16 +1056,7 @@ export const useDataStore = defineStore('data', {
1047
1056
  });
1048
1057
  },
1049
1058
  async getDicFileTypeList() {
1050
- try {
1051
- if (this.dicFileTypeList.length) {
1052
- return this.dicFileTypeList;
1053
- } else {
1054
- this.dicFileTypeList = await this.api.getDicFileTypeList();
1055
- return this.dicFileTypeList;
1056
- }
1057
- } catch (err) {
1058
- console.log(err.response.data);
1059
- }
1059
+ return await this.getFromApi('dicFileTypeList', 'getDicFileTypeList');
1060
1060
  },
1061
1061
  async getDocumentIssuers() {
1062
1062
  return await this.getFromApi('documentIssuers', 'getDocumentIssuers');
@@ -1207,6 +1207,9 @@ export const useDataStore = defineStore('data', {
1207
1207
  this.getProcessIndexRate(),
1208
1208
  this.getProcessTariff(),
1209
1209
  this.getProcessPaymentPeriod(),
1210
+ this.getDicFileTypeList(),
1211
+ this.getDictionaryItems('RegionPolicy'),
1212
+ this.getDictionaryItems('SaleChanellPolicy'),
1210
1213
  ]);
1211
1214
  },
1212
1215
  async getUserGroups() {
@@ -1254,15 +1257,12 @@ export const useDataStore = defineStore('data', {
1254
1257
  },
1255
1258
  async searchAgentByName(name) {
1256
1259
  try {
1257
- this.isLoading = true;
1258
- this.AgentDataList = await this.api.searchAgentByName(name);
1259
- if (!this.AgentDataList.length) {
1260
+ this.AgentData = await this.api.searchAgentByName(name);
1261
+ if (!this.AgentData.length) {
1260
1262
  this.showToaster('error', this.t('toaster.notFound'), 1500);
1261
1263
  }
1262
1264
  } catch (err) {
1263
1265
  console.log(err);
1264
- } finally {
1265
- this.isLoading = false;
1266
1266
  }
1267
1267
  },
1268
1268
  async setINSISWorkData() {
@@ -1291,14 +1291,14 @@ export const useDataStore = defineStore('data', {
1291
1291
  this.isLoading = false;
1292
1292
  }
1293
1293
  },
1294
- async filterManagerByRegion(dictName, filterName) {
1294
+ async getDictionaryItems(dictName) {
1295
+ return await this.getFromApi(dictName, 'getDictionaryItems', dictName);
1296
+ },
1297
+ async filterManagerByRegion(filterName) {
1295
1298
  try {
1296
- this.isLoading = true;
1297
- this[`${dictName}List`] = await this.api.filterManagerByRegion(dictName, filterName);
1299
+ this.ManagerPolicy = await this.api.filterManagerByRegion('ManagerPolicy', filterName);
1298
1300
  } catch (err) {
1299
1301
  console.log(err);
1300
- } finally {
1301
- this.isLoading = false;
1302
1302
  }
1303
1303
  },
1304
1304
  async getUnderwritingCouncilData(id) {
@@ -1981,7 +1981,7 @@ export const useDataStore = defineStore('data', {
1981
1981
  }
1982
1982
  }
1983
1983
  }
1984
- if (!this.isGons) {
1984
+ if (this.controls.hasAttachment) {
1985
1985
  const areValid = this.formStore.SaleChanellPolicy.nameRu && this.formStore.RegionPolicy.nameRu && this.formStore.ManagerPolicy.nameRu && this.formStore.AgentData.fullName;
1986
1986
  if (areValid) {
1987
1987
  await this.setINSISWorkData();
package/store/messages.ts CHANGED
@@ -402,6 +402,10 @@ export const messages = {
402
402
  homePhone: 'Домашний номер телефон',
403
403
  email: 'Email адрес',
404
404
  otpCode: 'Код подтверждения',
405
+ salesChanell: ' Канал продаж',
406
+ manager: 'Менеджер',
407
+ attachManager: 'Прикрепление к менеджеру',
408
+ agent: 'Агент',
405
409
  },
406
410
  agreementBlock: {
407
411
  title: 'Согласие на сбор и обработку пресональных данных',
package/store/rules.js CHANGED
@@ -13,6 +13,14 @@ export const rules = {
13
13
  return t('rules.required');
14
14
  },
15
15
  ],
16
+ agentDataRequired: [
17
+ v => {
18
+ if (!!v && 'fullName' in v && v.fullName != null) {
19
+ return true;
20
+ }
21
+ return t('rules.required');
22
+ },
23
+ ],
16
24
  noResident: [
17
25
  v => {
18
26
  if (!!v && 'nameRu' in v && v.nameRu === 'Нерезидент') {
package/types/index.ts CHANGED
@@ -300,4 +300,18 @@ declare global {
300
300
  taskId: string;
301
301
  comment?: string;
302
302
  };
303
+
304
+ type AgentData = {
305
+ agentId?: number | null;
306
+ manId?: number;
307
+ fullName?: string;
308
+ officeId?: number | null;
309
+ officeCode?: string | null;
310
+ saleChannel?: string;
311
+ staffId?: number;
312
+ managerName?: string;
313
+ mainAgentId?: string | null;
314
+ agentNo?: string;
315
+ iin?: string | null;
316
+ };
303
317
  }