hl-core 0.0.10-beta.30 → 0.0.10-beta.32

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.
@@ -73,19 +73,26 @@
73
73
  </base-form-section>
74
74
  </div>
75
75
  <div v-if="!(formStore.signatories.length === 0) && !isQr && !isScansDocuments" :class="[$styles.flexColNav]">
76
+ <div
77
+ v-if="(processCode === 19 || processCode === 25) && formStore.applicationData.statusCode === 'AttachAppContractForm'"
78
+ :class="[$styles.blueBgLight]"
79
+ class="rounded-lg p-4"
80
+ >
81
+ <base-form-toggle v-model="isOnlineEnpf" title="Онлайн подписание согласия для ЕНПФ" :has-border="false" @clicked="setActualEnpf" />
82
+ </div>
76
83
  <div :class="[$styles.blueBgLight]" class="rounded-lg p-4">
77
- <v-expansion-panels v-if="formStore.signatories.length" variant="accordion" multiple>
84
+ <v-expansion-panels v-if="formStore.signatories.length" variant="accordion" :multiple="false">
78
85
  <v-expansion-panel v-for="(person, index) of formStore.signatories" :key="person.personId!" class="border-[1px]" elevation="0" bg-color="#FFF">
79
86
  <v-expansion-panel-title class="h-[80px]" :class="$styles.textTitle">
80
87
  {{ person.longName }}
81
88
  </v-expansion-panel-title>
82
89
  <v-expansion-panel-text class="border-t-[1px]">
83
90
  <section class="flex flex-col" :class="$styles.textSimple">
84
- <v-expansion-panels v-if="person.fileDatas.length" v-model="currentFilePanel">
91
+ <v-expansion-panels v-if="person.fileDatas.length" v-model="currentFilePanel" :multiple="false">
85
92
  <v-expansion-panel
86
93
  v-for="(file, fileIndex) in groupBy(person.fileDatas, 'orderFile')"
87
- :value="fileIndex"
88
- :disabled="inSigningOrder(person.fileDatas, fileIndex) || file[0].isSigned"
94
+ :value="`${index} - ${fileIndex}`"
95
+ :disabled="inSigningOrder(person.fileDatas, fileIndex) || file.every((f: any) => f.isSigned === true)"
89
96
  >
90
97
  <v-expansion-panel-title v-for="name in file" class="h-[80px]" :class="$styles.textTitle">
91
98
  {{ name.fileName }}
@@ -109,6 +116,9 @@
109
116
  </v-expansion-panels>
110
117
  <base-list-empty v-else />
111
118
  </div>
119
+ <base-animation>
120
+ <base-btn v-if="isAllPaperSigned" :text="$dataStore.t('buttons.send')" :loading="loading" @click="$dataStore.panelAction = constants.actions.signed" />
121
+ </base-animation>
112
122
  </div>
113
123
  </section>
114
124
  <section v-if="choosePayActions">
@@ -243,7 +253,7 @@
243
253
  import { DocumentItem, Value } from '../../composables/classes';
244
254
  import { HubConnectionBuilder } from '@microsoft/signalr';
245
255
  import { uuid } from 'vue-uuid';
246
- import type { Api, SignUrlType } from '../../types';
256
+ import type * as Types from '../../types';
247
257
  import { CoreEnums } from '../../types/enum';
248
258
 
249
259
  export default defineComponent({
@@ -266,15 +276,15 @@ export default defineComponent({
266
276
  const isOfflinePay = ref<boolean>(false);
267
277
  const isQrDialog = ref<boolean>(false);
268
278
  const email = ref<string>('');
269
- const signOptions = ref<Api.Sign.New.Response>();
270
- const signingFiles = ref<Api.Sign.New.FileDatas[]>([]);
271
- const allDocumentsSigned = ref<boolean>(false);
279
+ const signOptions = ref<Types.Api.Sign.New.Response>();
280
+ const signingFiles = ref<Types.Api.Sign.New.FileDatas[]>([]);
281
+ const isOnlineEnpf = ref<boolean>(true);
272
282
  const currentFilePanel = ref<string[]>([]);
273
283
 
274
284
  const vForm = ref<any>();
275
285
  const isSendNumberOpen = ref<boolean>(false);
276
286
  const phoneNumber = ref<string | null>(formStore.policyholderForm.phoneNumber ?? '');
277
- const selectedClient = ref<SignUrlType>();
287
+ const selectedClient = ref<Types.SignUrlType>();
278
288
  const documentDict = computed(() => dataStore.dicFileTypeList.find(i => i.nameRu === 'Решение АС'));
279
289
  const affiliationDocument = computed(() => formStore.signedDocumentList.find((file: DocumentItem) => file.fileTypeName === 'Решение АС'));
280
290
  const affiliationData = ref<{
@@ -290,9 +300,10 @@ export default defineComponent({
290
300
  const affiliationFormData = ref(new FormData());
291
301
  const scansFormData = ref(new FormData());
292
302
  const scansFiles = ref<any[]>([]);
303
+ const isAllPaperSigned = computed(() => formStore.signatories.every((person: any) => person.fileDatas.every((file: any) => file.isSigned === true && file.signedType === 2)));
293
304
  const processCode = formStore.applicationData.processCode;
294
305
 
295
- const openSmsPanel = (signInfo: SignUrlType) => {
306
+ const openSmsPanel = (signInfo: Types.SignUrlType) => {
296
307
  if (signInfo) {
297
308
  isSendNumberOpen.value = true;
298
309
  selectedClient.value = signInfo;
@@ -418,7 +429,7 @@ export default defineComponent({
418
429
  };
419
430
 
420
431
  const sendFilesNew = async () => {
421
- if (scansFiles.value.length !== signOptions.value?.signIds.length) {
432
+ if (scansFiles.value.length !== signingFiles.value.length) {
422
433
  dataStore.showToaster('warning', dataStore.t('toaster.notAllDocumentsAttached'));
423
434
  return;
424
435
  }
@@ -428,14 +439,13 @@ export default defineComponent({
428
439
  await dataStore.api.file.uploadFilesNew(f.groupId, f.data);
429
440
  }),
430
441
  );
442
+ await checkIfAllSigned(true);
431
443
  scansFiles.value = [];
432
- closePanel();
433
- dataStore.showToaster('info', 'Документы подписаны');
434
- await dataStore.handleTask(constants.actions.signed, route.params.taskId as string);
444
+ isScansDocuments.value = false;
445
+ dataStore.showToaster('info', 'Документы загружены успешно');
435
446
  } catch (err) {
436
447
  return ErrorHandler(err);
437
448
  }
438
- closePanel();
439
449
  };
440
450
 
441
451
  const sendFiles = async () => {
@@ -506,7 +516,11 @@ export default defineComponent({
506
516
  }
507
517
  }
508
518
  if (dataStore.isPension) {
509
- await dataStore.getSignedDocList(formStore.applicationData.processInstanceId);
519
+ if (formStore.applicationData.pensionApp) {
520
+ const isOnlineEnpfAgreement = formStore.applicationData.pensionApp.isOnlineEnpfAgreement;
521
+ isOnlineEnpf.value = isOnlineEnpfAgreement === null ? true : isOnlineEnpfAgreement;
522
+ await dataStore.getSignedDocList(formStore.applicationData.processInstanceId);
523
+ }
510
524
  }
511
525
  };
512
526
 
@@ -562,13 +576,13 @@ export default defineComponent({
562
576
  dataStore.panelAction === constants.actions.return ||
563
577
  dataStore.panelAction === constants.actions.rejectclient,
564
578
  );
565
- const acceptAction = computed(() => dataStore.panelAction === constants.actions.accept);
579
+ const acceptAction = computed(() => dataStore.panelAction === constants.actions.accept || (dataStore.isPension && dataStore.panelAction === constants.actions.signed));
566
580
  const signingActions = computed(() => dataStore.panelAction === constants.actions.sign);
567
581
  const payingActions = computed(() => dataStore.panelAction === constants.actions.pay);
568
582
  const affiliateActions = computed(() => dataStore.panelAction === constants.actions.affiliate);
569
583
  const chooseSignActions = computed(() => dataStore.controls.hasChooseSign && dataStore.panelAction === constants.actions.chooseSign);
570
584
  const choosePayActions = computed(() => dataStore.controls.hasChoosePay && dataStore.panelAction === constants.actions.choosePay);
571
- const isNewSign = computed(() => (dataStore.isPension && !useEnv().isProduction) || dataStore.isGons);
585
+ const isNewSign = computed(() => dataStore.isPension || dataStore.isGons);
572
586
  const paymentPeriod = computed(() => formStore.productConditionsForm.paymentPeriod.nameRu);
573
587
  const insurancePremiumPerMonth = computed(() => {
574
588
  if (dataStore.isGons && formStore.productConditionsForm.currency.code === 'USD') {
@@ -588,7 +602,7 @@ export default defineComponent({
588
602
  const price = computed(() => dataStore.getNumberWithSpaces(formStore.productConditionsForm.calculatorForm.price));
589
603
  const insuredAmount = computed(() => formStore.productConditionsForm.calculatorForm.amount!.nameRu! + dataStore.currency);
590
604
  const hasConditionsInfo = computed(() => {
591
- if (dataStore.isLifetrip || dataStore.isDas || dataStore.isUU || dataStore.isPrePension) {
605
+ if (dataStore.isLifetrip || dataStore.isDas || dataStore.isUU || dataStore.isPrePension || dataStore.isPension) {
592
606
  return false;
593
607
  }
594
608
  if (dataStore.isFinCenter()) {
@@ -712,11 +726,7 @@ export default defineComponent({
712
726
  isQrLoading.value = true;
713
727
  } else if (message === 'Signed') {
714
728
  isQrLoading.value = false;
715
- if (dataStore.isPension) {
716
- dataStore.showToaster('info', dataStore.t('pension.signInProcess'));
717
- } else {
718
- dataStore.showToaster('success', dataStore.t('sign.successQrSigned'));
719
- }
729
+ dataStore.showToaster('success', dataStore.isPension ? 'Подписание прошло успешно' : dataStore.t('sign.successQrSigned'));
720
730
  qrUrl.value = '';
721
731
  isQr.value = false;
722
732
  dataStore.panel.open = false;
@@ -774,7 +784,7 @@ export default defineComponent({
774
784
  await dataStore.generateDocument();
775
785
  };
776
786
 
777
- const convertQr = async (url: string | null, template?: Api.GenerateShortLink.Templates) => {
787
+ const convertQr = async (url: string | null, template?: Types.Api.GenerateShortLink.Templates) => {
778
788
  if (url) {
779
789
  const shortedUrl = await dataStore.generateShortLink(url, template);
780
790
  qrUrl.value = typeof shortedUrl === 'string' && !!shortedUrl ? shortedUrl : url;
@@ -833,17 +843,18 @@ export default defineComponent({
833
843
  }, {});
834
844
  };
835
845
 
836
- const checkIfAllSigned = async () => {
846
+ const checkIfAllSigned = async (sendTask: boolean = false) => {
837
847
  await dataStore.generateSign(route.params.taskId as string);
838
- formStore.signatories.find((person: any) => {
848
+ formStore.signatories.find(async (person: any) => {
839
849
  if (person.fileDatas.find((file: any) => file.isSigned === false) === undefined) {
840
- if (formStore.applicationData.statusCode !== 'ContractSignedFrom')
841
- dataStore.showToaster(
842
- 'success',
843
- dataStore.t(`pension.${formStore.applicationData.statusCode === 'HeadManagerForm' ? 'signInProcessManager' : 'signInProcess'}`),
844
- 30000,
845
- );
846
- allDocumentsSigned.value = true;
850
+ if (formStore.applicationData.statusCode !== 'ContractSignedFrom') {
851
+ // TODO better if condition
852
+ // dataStore.showToaster(
853
+ // 'success',
854
+ // dataStore.t(`pension.${formStore.applicationData.statusCode === 'HeadManagerForm' ? 'signInProcessManager' : 'signInProcess'}`),
855
+ // 30000,
856
+ // );
857
+ }
847
858
  }
848
859
  });
849
860
  };
@@ -854,13 +865,9 @@ export default defineComponent({
854
865
  ...formStore.signatories[index],
855
866
  signType: signType,
856
867
  fileDatas: file,
857
- };
868
+ } as Types.Api.Sign.New.GeneralResponse;
858
869
  try {
859
- signOptions.value = await dataStore.api.file.generalSign(data);
860
- const message = [];
861
- for (let i of file) {
862
- message.push(i.fileName);
863
- }
870
+ signOptions.value = await dataStore.generalSign(data);
864
871
  if (signOptions.value) {
865
872
  switch (signType) {
866
873
  case CoreEnums.Sign.Types.electronic:
@@ -871,8 +878,7 @@ export default defineComponent({
871
878
  break;
872
879
  case CoreEnums.Sign.Types.scans:
873
880
  isScansDocuments.value = true;
874
- signingFiles.value = data.fileDatas;
875
- message.length = 0;
881
+ signingFiles.value = data.fileDatas && Array.isArray(data.fileDatas) ? data.fileDatas.filter(i => i.isSigned !== true) : [];
876
882
  break;
877
883
  case CoreEnums.Sign.Types.qr:
878
884
  if (!signOptions.value.signatureDocumentGroupId) return dataStore.showToaster('error', 'Ошибка подписи документов', 10000);
@@ -887,21 +893,18 @@ export default defineComponent({
887
893
  case CoreEnums.Sign.Types.nclayer:
888
894
  for (let sign of signOptions.value.signIds) {
889
895
  const response = await dataStore.nclayerSign(sign.id, signType, file[0].fileType === 43);
890
- if (!response) {
896
+ if (response === null) {
891
897
  dataStore.showToaster('error', 'Ошибка подписи документов', 10000);
892
- message.length = 0;
893
898
  break;
894
899
  }
900
+ if (!response) break;
895
901
  }
896
902
  break;
897
903
  default:
898
904
  break;
899
905
  }
900
906
  }
901
- if (message.length) {
902
- // dataStore.showToaster('info', 'Подписывается: ' + message.join(', '), 5000);
903
- await checkIfAllSigned();
904
- }
907
+ await checkIfAllSigned();
905
908
  currentFilePanel.value = [];
906
909
  } catch (err) {
907
910
  ErrorHandler(err);
@@ -909,6 +912,16 @@ export default defineComponent({
909
912
  loading.value = false;
910
913
  };
911
914
 
915
+ const setActualEnpf = useDebounceFn(async () => {
916
+ try {
917
+ await dataStore.api.file.setActualEnpf({ processId: String(formStore.applicationData.processInstanceId), isOnlineEnpfAgreement: isOnlineEnpf.value });
918
+ await dataStore.generateSign(String(route.params.taskId));
919
+ } catch (err) {
920
+ ErrorHandler(err);
921
+ }
922
+ currentFilePanel.value = [];
923
+ }, 1000);
924
+
912
925
  return {
913
926
  // State
914
927
  formStore,
@@ -932,7 +945,7 @@ export default defineComponent({
932
945
  email,
933
946
  signOptions,
934
947
  signingFiles,
935
- allDocumentsSigned,
948
+ isOnlineEnpf,
936
949
  currentFilePanel,
937
950
 
938
951
  // Functions
@@ -951,6 +964,7 @@ export default defineComponent({
951
964
  handlePayAction,
952
965
  payEpay,
953
966
  convertQr,
967
+ setActualEnpf,
954
968
  sendInvoiceToEmail,
955
969
  hasConditionsAction,
956
970
 
@@ -963,6 +977,7 @@ export default defineComponent({
963
977
  affiliateActions,
964
978
  chooseSignActions,
965
979
  paymentPeriod,
980
+ isAllPaperSigned,
966
981
  insurancePremiumPerMonth,
967
982
  requestedSumInsured,
968
983
  affiliationDocument,
@@ -97,6 +97,7 @@ export class IDocument {
97
97
  signed?: boolean | null;
98
98
  signId?: string | null;
99
99
  certificateDate?: string | null;
100
+ signedType?: number;
100
101
 
101
102
  constructor(
102
103
  id?: string,
@@ -113,6 +114,7 @@ export class IDocument {
113
114
  signed?: boolean | null,
114
115
  signId?: string | null,
115
116
  certificateDate?: string | null,
117
+ signedType?: number,
116
118
  ) {
117
119
  this.id = id;
118
120
  this.processInstanceId = processInstanceId;
@@ -128,6 +130,7 @@ export class IDocument {
128
130
  this.signed = signed;
129
131
  this.signId = signId;
130
132
  this.certificateDate = certificateDate;
133
+ this.signedType = signedType;
131
134
  }
132
135
  }
133
136
 
@@ -148,9 +151,10 @@ export class DocumentItem extends IDocument {
148
151
  signed,
149
152
  signId,
150
153
  certificateDate,
154
+ signedType,
151
155
  }: IDocument = new IDocument(),
152
156
  ) {
153
- super(id, processInstanceId, iin, fileTypeId, fileTypeName, fileTypeNameRu, fileId, page, fileName, fileTypeCode, sharedId, signed, signId, certificateDate);
157
+ super(id, processInstanceId, iin, fileTypeId, fileTypeName, fileTypeNameRu, fileId, page, fileName, fileTypeCode, sharedId, signed, signId, certificateDate, signedType);
154
158
  }
155
159
  }
156
160
 
@@ -806,7 +810,6 @@ export class ProductConditions {
806
810
  adbAdditive: string | number | null;
807
811
  disabilityMultiply: string | number | null;
808
812
  disabilityAdditive: string | number | null;
809
- processTariff: Value;
810
813
  riskGroup: Value;
811
814
  riskGroup2: Value;
812
815
  additionalConditionAnnuityPayments: boolean;
@@ -855,7 +858,6 @@ export class ProductConditions {
855
858
  adbAdditive = null,
856
859
  disabilityMultiply = null,
857
860
  disabilityAdditive = null,
858
- processTariff = new Value(),
859
861
  riskGroup = new Value(),
860
862
  riskGroup2 = new Value(),
861
863
  additionalConditionAnnuityPayments = false,
@@ -908,7 +910,6 @@ export class ProductConditions {
908
910
  this.adbAdditive = adbAdditive;
909
911
  this.disabilityMultiply = disabilityMultiply;
910
912
  this.disabilityAdditive = disabilityAdditive;
911
- this.processTariff = processTariff;
912
913
  this.riskGroup = riskGroup;
913
914
  this.riskGroup2 = riskGroup2;
914
915
  this.additionalConditionAnnuityPayments = additionalConditionAnnuityPayments;
@@ -1077,7 +1078,6 @@ export class DataStoreClass {
1077
1078
  relations: Value[];
1078
1079
  banks: Value[];
1079
1080
  transferContractCompanies: Value[];
1080
- processTariff: Value[];
1081
1081
  insurancePay: Value[];
1082
1082
  questionRefs: Value[];
1083
1083
  residents: Value[];
@@ -1259,7 +1259,6 @@ export class DataStoreClass {
1259
1259
  this.familyStatuses = [];
1260
1260
  this.disabilityGroups = [];
1261
1261
  this.relations = [];
1262
- this.processTariff = [];
1263
1262
  this.banks = [];
1264
1263
  this.transferContractCompanies = [];
1265
1264
  this.insurancePay = [];
@@ -1394,6 +1393,7 @@ export class FormStoreClass {
1394
1393
  beneficiaryForm: boolean;
1395
1394
  beneficialOwnerForm: boolean;
1396
1395
  insuredForm: boolean;
1396
+ slaveInsuredForm: boolean;
1397
1397
  policyholdersRepresentativeForm: boolean;
1398
1398
  productConditionsForm: boolean;
1399
1399
  calculatorForm: boolean;
@@ -1429,6 +1429,7 @@ export class FormStoreClass {
1429
1429
  parentPolicyDto?: Types.ParentPolicyDto | null;
1430
1430
  insisWorkDataApp?: Types.InsisWorkDataApp;
1431
1431
  addCoverDto?: Types.AddCover[];
1432
+ slave?: any;
1432
1433
  };
1433
1434
  policyholderForm: Member;
1434
1435
  policyholderFormKey: StoreMembers.policyholderForm;
@@ -1441,14 +1442,17 @@ export class FormStoreClass {
1441
1442
  beneficialOwnerFormIndex: number;
1442
1443
  beneficialOwnerFormKey: StoreMembers.beneficialOwnerForm;
1443
1444
  insuredForm: Member[];
1445
+ slaveInsuredForm: Member;
1444
1446
  insuredFormKey: StoreMembers.insuredForm;
1445
1447
  insuredFormIndex: number;
1446
1448
  productConditionsForm: ProductConditions;
1447
1449
  productConditionsFormKey: string;
1450
+ pensionApp: any;
1448
1451
  questionnaireByHealth: any;
1449
1452
  questionnaireByCritical: any[];
1450
1453
  canBeClaimed: boolean | null;
1451
1454
  applicationTaskId: string | null;
1455
+ requiredDocuments: RequiredDocument[];
1452
1456
 
1453
1457
  constructor() {
1454
1458
  this.regNumber = null;
@@ -1519,6 +1523,7 @@ export class FormStoreClass {
1519
1523
  beneficiaryForm: true,
1520
1524
  beneficialOwnerForm: true,
1521
1525
  insuredForm: true,
1526
+ slaveInsuredForm: true,
1522
1527
  policyholdersRepresentativeForm: true,
1523
1528
  productConditionsForm: true,
1524
1529
  calculatorForm: true,
@@ -1547,6 +1552,7 @@ export class FormStoreClass {
1547
1552
  this.beneficialOwnerFormIndex = 0;
1548
1553
  this.beneficialOwnerFormKey = StoreMembers.beneficialOwnerForm;
1549
1554
  this.insuredForm = [new Member()];
1555
+ this.slaveInsuredForm = new Member();
1550
1556
  this.insuredFormKey = StoreMembers.insuredForm;
1551
1557
  this.insuredFormIndex = 0;
1552
1558
  this.productConditionsForm = new ProductConditions();
@@ -1555,6 +1561,7 @@ export class FormStoreClass {
1555
1561
  this.questionnaireByCritical = [];
1556
1562
  this.canBeClaimed = null;
1557
1563
  this.applicationTaskId = null;
1564
+ this.requiredDocuments = [];
1558
1565
  }
1559
1566
  }
1560
1567
 
@@ -1788,13 +1795,13 @@ export class TransferContract {
1788
1795
  id: string | null;
1789
1796
  transferContractIsOppv: boolean;
1790
1797
  transferContractFirstPaymentDate: string;
1791
- transferContractAmount: number;
1798
+ transferContractAmount: number | string;
1792
1799
  transferContractDate: string;
1793
1800
  transferContractNumber: string;
1794
1801
  transferContractRegNumber: string;
1795
1802
  transferContract: boolean;
1796
1803
  transferContractCompany: Value;
1797
- transferContractMonthCount: number;
1804
+ transferContractMonthCount: number | null;
1798
1805
 
1799
1806
  constructor() {
1800
1807
  this.id = null;
@@ -1806,6 +1813,10 @@ export class TransferContract {
1806
1813
  this.transferContract = false;
1807
1814
  this.transferContractRegNumber = '';
1808
1815
  this.transferContractCompany = new Value();
1809
- this.transferContractMonthCount = 0;
1816
+ this.transferContractMonthCount = null;
1810
1817
  }
1811
1818
  }
1819
+
1820
+ export class RequiredDocument extends Value {
1821
+ iin: string = '';
1822
+ }
@@ -21,6 +21,8 @@ export const constants = Object.freeze({
21
21
  halykkazynaap: 20,
22
22
  balam: 21,
23
23
  halykkazynaapsms: 23,
24
+ pensionannuityrefundnew: 24,
25
+ pensionannuityjointnew: 25,
24
26
  },
25
27
  amlProducts: {
26
28
  checkcontragent: 1,
@@ -39,6 +41,7 @@ export const constants = Object.freeze({
39
41
  returnStatementStatuses: [
40
42
  Statuses.ApproveForm,
41
43
  Statuses.ActuaryForm,
44
+ Statuses.JuristForm,
42
45
  Statuses.DsoUsnsForm,
43
46
  Statuses.AccountantForm,
44
47
  Statuses.UnderwriterForm,
@@ -78,8 +81,8 @@ export const constants = Object.freeze({
78
81
  usd: '$',
79
82
  },
80
83
  pensionAge: {
81
- man: 63,
82
- woman: 61,
84
+ man: 68,
85
+ woman: 68,
83
86
  },
84
87
  genderByIIN: {
85
88
  '0': 'Ж',
@@ -104,6 +107,11 @@ export const constants = Object.freeze({
104
107
  questionnaireInsured: 35,
105
108
  invoicePayment: 36,
106
109
  },
110
+ fileTypes: {
111
+ pdf: 'application/pdf',
112
+ docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
113
+ doc: 'application/msword',
114
+ },
107
115
  regex: {
108
116
  isoDate: /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)((-(\d{2}):(\d{2})|Z)?)$/,
109
117
  },
@@ -158,6 +158,8 @@ export const parseProcents = (val: string | number) => (val ? Number(((val as nu
158
158
 
159
159
  export const formatProcents = (val: string | number) => (val ? Number(((val as number) / 100).toFixed(2)) : Number(val));
160
160
 
161
+ export const formatSpacedNumber = (val: any) => ((!isNaN(val) && val !== null) || typeof val === 'string' ? Number(String(val).replace(/\s/g, '')) : 0);
162
+
161
163
  export const sanitizeURL = (text: string) => (text ? text.replace(/\r?\n|\r|\\|"/g, '') : '');
162
164
 
163
165
  export const sanitize = (text: string) =>
@@ -707,7 +709,7 @@ export class RoleController {
707
709
  const dataStore = useDataStore();
708
710
  const hasAccessByProduct = (() => {
709
711
  const product = productFromExternal as Projects;
710
- if (dataStore.isLifetrip || product === 'lifetrip' || (!env.isProduction && (dataStore.isPension || product === 'pensionannuitynew'))) return this.isBranchDirector();
712
+ if (dataStore.isLifetrip || product === 'lifetrip' || dataStore.isPension || product === 'pensionannuitynew') return this.isBranchDirector();
711
713
  return false;
712
714
  })();
713
715
  return this.isManager() || this.isAgent() || this.isAgentMycar() || this.isManagerHalykBank() || this.isServiceManager() || this.isAgentAuletti() || hasAccessByProduct;
@@ -733,6 +735,9 @@ export class RoleController {
733
735
  isServiceManager = () => {
734
736
  return this.isRole(constants.roles.ServiceManager);
735
737
  };
738
+ isUSNSsanctioner = () => {
739
+ return this.isRole(constants.roles.USNSsanctioner);
740
+ };
736
741
  isUnderwriter = () => {
737
742
  return this.isRole(constants.roles.Underwriter);
738
743
  };
@@ -808,7 +813,7 @@ export class RoleController {
808
813
  hasAccess = () => {
809
814
  const baseAccessRoles = this.isAdmin() || this.isSupport() || this.isAnalyst() || this.isDrn();
810
815
  return {
811
- invoiceInfo: this.isAdmin(),
816
+ invoiceInfo: this.isAdmin() || this.isSupport(),
812
817
  toLKA: this.isAgent() || this.isManagerHalykBank() || baseAccessRoles,
813
818
  toAML: this.isCompliance() || baseAccessRoles,
814
819
  toAULETTI: this.isAgentAuletti() || this.isManagerAuletti() || baseAccessRoles,
@@ -820,6 +825,7 @@ export class RoleController {
820
825
  this.isManagerHalykBank() ||
821
826
  this.isHeadManager() ||
822
827
  this.isServiceManager() ||
828
+ this.isUSNSsanctioner() ||
823
829
  this.isUnderwriter() ||
824
830
  this.isActuary() ||
825
831
  this.isAdmin() ||
@@ -832,6 +838,7 @@ export class RoleController {
832
838
  this.isDrn() ||
833
839
  this.isUrp() ||
834
840
  this.isUsns() ||
841
+ this.isJurist() ||
835
842
  this.isAccountant() ||
836
843
  this.isBranchDirector() ||
837
844
  this.isUSNSACCINS() ||
package/locales/ru.json CHANGED
@@ -135,14 +135,17 @@
135
135
  "templateDownloaded": "Шаблон скачан",
136
136
  "templateSentToEmail": "Шаблона отправлен на почту",
137
137
  "fileOnlyBelow5mb": "Максимальный размер документа для загрузки - 5 МБ.",
138
+ "fileOnlyBelow10mb": "Максимальный размер документа для загрузки - 10 МБ.",
138
139
  "fileOnlyBelow20mb": "Максимальный размер документа для загрузки - 20 МБ.",
139
140
  "onlyPDF": "Загружать документы можно только в формате PDF",
141
+ "onlyWithFormat": "Загружать документы можно только в формате {format}",
140
142
  "notAllDocumentsAttached": "Не все документы вложены",
141
143
  "needAttachQuestionnaire": "Нужно вложить анкету для клиентов",
142
144
  "notZeroPremium": "Общая страховая премия не должен быть 0",
143
- "requiredFieldsLB": "Обязательные поля: №, Ф.И.О, Пол, Должность, Дата рождения, ИИН, Страховая сумма",
145
+ "requiredFieldsLB": "Обязательные поля: №, Ф.И.О, Пол, Должность, Дата рождения, ИИН, Страховая сумма, Сектор экономики, Признак резеденства",
144
146
  "duplicateClient": "В списке присутствуют повторяющиеся клиенты",
145
147
  "notParsedDocument": "Не удалось получить данные",
148
+ "successProfile": "Профиль успешно обновлен",
146
149
  "errorOsns": "По данному БИН на дату заключения заявления не найден договор ОСНС. Просим проверить БИН Страхователя.",
147
150
  "needDigDoc": "Нужно получить цифровой документ {text}",
148
151
  "notDigDoc": "Выданный документ не найден"
@@ -391,7 +394,6 @@
391
394
  "additional": "Дополнительные условия страхования",
392
395
  "possibilityToChange": "Возможность изменения страховой суммы и страховых взносов (индексация)",
393
396
  "conditions": "Условия оплаты страховой премии",
394
- "processTariff": "Тариф",
395
397
  "riskGroup": "Группа риска",
396
398
  "requestedProductConditions": "Запрашиваемые условия страхования",
397
399
  "coverPeriodFrom3to20": "Срок страхования (от 3-х до 20 лет)",
@@ -564,8 +566,8 @@
564
566
  "frequencyPayments": "Периодичность аннуитетной выплаты",
565
567
  "paymentPeriod": "Период осуществления страховых выплат",
566
568
  "insuranceProgramType": "Вид программы страхования",
567
- "pensionAmount": "Аннуитетная страховая премия",
568
- "pensionPayment": "Периодичная аннуитетная выплата",
569
+ "pensionAmount": "Страховая премия",
570
+ "pensionPayment": "Аннуитетная выплата, тенге:",
569
571
  "male": "Мужской",
570
572
  "female": "Женский",
571
573
  "parentContractID": "Идентификатор родительского контракта",
@@ -576,7 +578,7 @@
576
578
  "KSJagreement": "Договор с другой КСЖ",
577
579
  "ENPFnote": "Выписка из ЕНПФ",
578
580
  "getDataENPF": "Получить данные с ЕНПФ",
579
- "compulsoryProfMonthCount": "Количество месяцев уплаты ОППВ (не менее 2 месяцев)",
581
+ "compulsoryProfMonthCount": "Количество месяцев уплаты ОППВ (не менее 60 месяцев)",
580
582
  "insuredIIN": "ИИН «Страхователя»",
581
583
  "ifHasRelationBeneficiary": "Включите, если у Страхователя есть Родственные связи с Выгодоприобретателем",
582
584
  "complianceFinMonitoring": "Приложение 6/ПОДФТ",
@@ -587,13 +589,15 @@
587
589
  "transferContractFirstPaymentDate": "Дата начала выплат по договору с КСЖ",
588
590
  "companyName": "Наименование компании по страхованию жизни",
589
591
  "bankInvalid": "Некорректные банковские данные",
590
- "globalId": "Уникальный номер договора (globalId)",
592
+ "globalId": "Уникальный номер договора с ЕСБД (globalId)",
591
593
  "oppvMonthsCheck": "ВНИМАНИЕ! НЕОБХОДИМО ПРОВЕРИТЬ НАЛИЧИЕ ОТЧИСЛЕНИЙ 60 МЕСЯЦЕВ ПО ПРИЗНАКУ 'ОППВ'",
592
- "signInProcess": "После подписания всех документов данная заявка перейдет к Подписанту вашего Региона",
593
594
  "signInProcessManager": "Договор будет подписан в течение минуты",
594
- "transferRegNumber": "Номер и серия договора",
595
+ "transferRegNumber": "Номер и серия договора с КСЖ",
595
596
  "contragentSelect": "Выбор контрагента",
596
- "fileError": "Ошибка прикрепления файла"
597
+ "fileError": "Ошибка прикрепления файла",
598
+ "parentContractNextPay": "Возврат с учетом очередной выплаты",
599
+ "parentContractNextPayDate": "Очередная выплата по графику",
600
+ "oppvPaymentCertificate": "Справка о количество взносов за счет ОППВ"
597
601
  },
598
602
  "agent": {
599
603
  "currency": "Валюта",
@@ -1049,6 +1053,7 @@
1049
1053
  "attachScansSignDocs": "Вложить сканы подписанных документов",
1050
1054
  "declarationHealthInsured": "Декларация о здоровье Застрахованных",
1051
1055
  "uploadInsured": "Загрузите застрахованных",
1056
+ "isDisability": "Является ли инвалидом",
1052
1057
  "form": {
1053
1058
  "calculation": "Расчеты",
1054
1059
  "paymentAmount": "Размер выплаты",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hl-core",
3
- "version": "0.0.10-beta.30",
3
+ "version": "0.0.10-beta.32",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "main": "nuxt.config.ts",