@topconsultnpm/sdkui-react 6.21.0-dev3.9 → 6.21.0-dev4.3

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 (43) hide show
  1. package/lib/components/NewComponents/ContextMenu/TMContextMenu.js +22 -1
  2. package/lib/components/NewComponents/FloatingMenuBar/styles.d.ts +6 -6
  3. package/lib/components/base/TMAreaManager.js +11 -0
  4. package/lib/components/base/TMDataGrid.js +12 -2
  5. package/lib/components/base/TMDataGridExportForm.js +19 -8
  6. package/lib/components/base/TMModal.js +2 -2
  7. package/lib/components/base/TMPopUp.d.ts +1 -0
  8. package/lib/components/base/TMPopUp.js +59 -2
  9. package/lib/components/base/TMSpinner.d.ts +4 -2
  10. package/lib/components/base/TMSpinner.js +33 -6
  11. package/lib/components/choosers/TMDistinctValues.js +1 -1
  12. package/lib/components/choosers/TMGroupChooser.js +1 -1
  13. package/lib/components/editors/TMEditorStyled.d.ts +4 -4
  14. package/lib/components/editors/TMFormulaEditor.d.ts +1 -0
  15. package/lib/components/editors/TMFormulaEditor.js +98 -49
  16. package/lib/components/editors/TMMetadataValues.js +23 -6
  17. package/lib/components/features/documents/TMMasterDetailDcmts.js +1 -1
  18. package/lib/components/features/documents/TMRelationViewer.js +3 -3
  19. package/lib/components/features/search/TMMetadataOutputForm.d.ts +17 -0
  20. package/lib/components/features/search/TMMetadataOutputForm.js +225 -0
  21. package/lib/components/features/search/TMMetadataSorterForm.d.ts +17 -0
  22. package/lib/components/features/search/TMMetadataSorterForm.js +243 -0
  23. package/lib/components/features/search/TMSearchQueryPanel.js +249 -58
  24. package/lib/components/features/search/TMSearchResult.d.ts +1 -0
  25. package/lib/components/features/search/TMSearchResult.js +39 -18
  26. package/lib/components/features/search/metadataFormHelper.d.ts +16 -0
  27. package/lib/components/features/search/metadataFormHelper.js +77 -0
  28. package/lib/components/forms/Login/TMLoginForm.js +15 -3
  29. package/lib/components/wizard/TMWizard.d.ts +1 -0
  30. package/lib/components/wizard/TMWizard.js +5 -3
  31. package/lib/helper/Enum_Localizator.js +1 -0
  32. package/lib/helper/SDKUI_Localizator.d.ts +4 -0
  33. package/lib/helper/SDKUI_Localizator.js +40 -0
  34. package/lib/helper/checkinCheckoutManager.js +10 -2
  35. package/lib/helper/helpers.d.ts +2 -1
  36. package/lib/helper/helpers.js +1 -0
  37. package/lib/hooks/useDataUserIdItem.js +1 -1
  38. package/lib/hooks/useDcmtOperations.js +168 -3
  39. package/lib/hooks/useDocumentOperations.js +19 -0
  40. package/lib/services/platform_services.d.ts +4 -4
  41. package/lib/ts/types.d.ts +2 -1
  42. package/lib/ts/types.js +1 -0
  43. package/package.json +62 -56
@@ -0,0 +1,77 @@
1
+ import { DcmtTypeDescriptor, DcmtTypeListCacheService, SDK_Localizator } from "@topconsultnpm/sdk-ts";
2
+ import { getTIDsByQd } from "../../../helper/queryHelper";
3
+ import { SDKUI_Localizator } from "../../../helper";
4
+ import TMSpinner from "../../base/TMSpinner";
5
+ // =============================================================================
6
+ // HELPER: Rimuove duplicati dalla lista (basato su tid + mid)
7
+ // =============================================================================
8
+ export function removeDuplicatesByTidMid(items) {
9
+ const seen = new Set();
10
+ return items.filter(item => {
11
+ const key = `${item.tid}_${item.mid}`;
12
+ if (seen.has(key))
13
+ return false;
14
+ seen.add(key);
15
+ return true;
16
+ });
17
+ }
18
+ // =============================================================================
19
+ // FUNZIONE PRINCIPALE: Estrae i metadati dal QueryDescriptor
20
+ // =============================================================================
21
+ export async function loadMetadataFromQd(qd, filterMetadata) {
22
+ if (!qd)
23
+ return { metadata: [], dcmtTypes: [] };
24
+ const dtdList = [];
25
+ const metadata = [];
26
+ try {
27
+ const tidsFromQd = getTIDsByQd(qd);
28
+ const inputTIDs = tidsFromQd.map((item) => item.tid);
29
+ if (inputTIDs.length === 0)
30
+ return { metadata: [], dcmtTypes: [] };
31
+ TMSpinner.show({ description: `${SDKUI_Localizator.Loading} - ${SDK_Localizator.DcmtType} ...` });
32
+ const dtds = await DcmtTypeListCacheService.GetFromTIDsAsync(inputTIDs, true, undefined, false, false);
33
+ for (let i = 0; i < dtds.length; i++) {
34
+ const dtd = new DcmtTypeDescriptor();
35
+ dtd.init({ ...dtds[i] });
36
+ const alias = tidsFromQd?.[i]?.alias ?? '';
37
+ dtd.customData2 = alias;
38
+ dtd.metadata?.forEach((md) => {
39
+ const mdWithKey = md;
40
+ mdWithKey.customData1 = dtd.id;
41
+ mdWithKey.customData2 = alias;
42
+ mdWithKey.uniqueKey = `${dtd.id}_${md.id}_${alias}`;
43
+ });
44
+ const filteredMetadata = filterMetadata
45
+ ? dtd.metadata?.filter(filterMetadata)
46
+ : dtd.metadata;
47
+ dtdList.push({ ...dtd, metadata: filteredMetadata });
48
+ }
49
+ for (const dtd of dtdList) {
50
+ if (!dtd.metadata)
51
+ continue;
52
+ for (const md of dtd.metadata) {
53
+ metadata.push(md);
54
+ }
55
+ }
56
+ return { metadata, dcmtTypes: dtdList };
57
+ }
58
+ finally {
59
+ TMSpinner.hide();
60
+ }
61
+ }
62
+ // =============================================================================
63
+ // HELPER: Confronta due array per determinare se sono stati modificati
64
+ // =============================================================================
65
+ export function areArraysEqual(arr1, arr2, additionalCompare) {
66
+ if (arr1.length !== arr2.length)
67
+ return false;
68
+ for (let i = 0; i < arr1.length; i++) {
69
+ const a = arr1[i];
70
+ const b = arr2[i];
71
+ if (a.tid !== b.tid || a.mid !== b.mid)
72
+ return false;
73
+ if (additionalCompare && !additionalCompare(a, b))
74
+ return false;
75
+ }
76
+ return true;
77
+ }
@@ -33,7 +33,7 @@ import { TMColors } from "../../../utils/theme";
33
33
  import ShowAlert from "../../base/TMAlert";
34
34
  import TMButton from "../../base/TMButton";
35
35
  import { useDeviceType, DeviceType } from "../../base/TMDeviceProvider";
36
- import { TMExceptionBoxManager, TMMessageBoxManager, ButtonNames } from "../../base/TMPopUp";
36
+ import { TMExceptionBoxManager, TMMessageBoxManager, ButtonNames, sanitizeException } from "../../base/TMPopUp";
37
37
  import TMSpinner from "../../base/TMSpinner";
38
38
  import TMTooltip from "../../base/TMTooltip";
39
39
  import TMCheckBox from "../../editors/TMCheckBox";
@@ -457,6 +457,18 @@ const TMLoginForm = (props) => {
457
457
  // Skip auto-selection when defaultLoginValues provides an archiveId (external link)
458
458
  if (props.defaultLoginValues?.archiveId)
459
459
  return;
460
+ // Se dcmtArchive è già impostato (es. da rapid access), gestisci manualArchiveID
461
+ if (dcmtArchive) {
462
+ // Se la lista archivi è vuota, serve accesso manuale
463
+ if (archives.length === 0) {
464
+ setManualArchiveID(dcmtArchive.id ?? '');
465
+ }
466
+ else {
467
+ // Se l'archivio esiste nella lista, pulisci manualArchiveID
468
+ setManualArchiveID('');
469
+ }
470
+ return;
471
+ }
460
472
  if (archives.length === 1) {
461
473
  setDcmtArchive(archives[0]);
462
474
  return;
@@ -522,7 +534,7 @@ const TMLoginForm = (props) => {
522
534
  return true;
523
535
  }
524
536
  catch (e) {
525
- TMExceptionBoxManager.show({ exception: e });
537
+ TMExceptionBoxManager.show({ exception: sanitizeException(e) });
526
538
  return false;
527
539
  }
528
540
  finally {
@@ -558,7 +570,7 @@ const TMLoginForm = (props) => {
558
570
  }
559
571
  }
560
572
  catch (e) {
561
- TMExceptionBoxManager.show({ exception: e });
573
+ TMExceptionBoxManager.show({ exception: sanitizeException(e) });
562
574
  }
563
575
  finally {
564
576
  TMSpinner.hide();
@@ -10,6 +10,7 @@ interface TMWizardProps {
10
10
  initialData: any;
11
11
  title: string;
12
12
  description: string;
13
+ initialStep?: number;
13
14
  validateOnlyCurrentStep?: boolean;
14
15
  onClose: () => void;
15
16
  onFinish: (data: any) => void;
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // TMWizard.tsx
3
- import React, { useState } from 'react';
3
+ import React, { useState, useEffect } from 'react';
4
4
  import styled from 'styled-components';
5
5
  import { ResultTypes } from '@topconsultnpm/sdk-ts';
6
6
  import TMButton from '../base/TMButton';
@@ -40,9 +40,11 @@ const ControlsContainer = styled.div `
40
40
  padding: 15px 20px;
41
41
  border-top: 1px solid #eee;
42
42
  `;
43
- const TMWizard = ({ steps, validateOnlyCurrentStep = true, onClose, onFinish, initialData, title, description }) => {
44
- const [currentStep, setCurrentStep] = useState(0);
43
+ const TMWizard = ({ steps, validateOnlyCurrentStep = true, onClose, onFinish, initialData, title, description, initialStep = 0 }) => {
44
+ const [currentStep, setCurrentStep] = useState(initialStep);
45
45
  const [formData, setFormData] = useState(initialData);
46
+ useEffect(() => { setCurrentStep(initialStep); }, [initialStep]);
47
+ useEffect(() => { setFormData(initialData); }, [initialData]);
46
48
  const stepValidationErrors = steps.map((step, index) => {
47
49
  if (validateOnlyCurrentStep) {
48
50
  if (index <= currentStep) {
@@ -23,6 +23,7 @@ export function LocalizeDcmtOperationTypes(value) {
23
23
  case DcmtOperationTypes.CheckFile: return SDKUI_Localizator.FileCheck;
24
24
  case DcmtOperationTypes.ConvertFile: return SDKUI_Localizator.FileConversion;
25
25
  case DcmtOperationTypes.VerifySign: return SDKUI_Localizator.VerifySignature;
26
+ case DcmtOperationTypes.CopyCompliant: return SDKUI_Localizator.CopyCompliant;
26
27
  case DcmtOperationTypes.SubstituteFile: return SDKUI_Localizator.AddOrSubstFile;
27
28
  case DcmtOperationTypes.FreeSearchReindex: return SDKUI_Localizator.IndexOrReindex;
28
29
  case DcmtOperationTypes.FreeSearchPurge: return SDKUI_Localizator.IndexingDelete;
@@ -137,6 +137,7 @@ export declare class SDKUI_Localizator {
137
137
  static get CopyAndReplace(): string;
138
138
  static get CopyButRename(): string;
139
139
  static get CopyCheckoutPath(): string;
140
+ static get CopyCompliant(): string;
140
141
  static get CopyToArchived(): string;
141
142
  static get CopyToArchivedDocuments(): string;
142
143
  static get CopyToClipboard(): "Erfolgreich in die Zwischenablage kopiert" | "Copy in clipboard" | "Copiar en portapapeles" | "Copier dans le presse-papier" | "Copiar na área de transferência" | "Copia negli appunti";
@@ -487,6 +488,8 @@ export declare class SDKUI_Localizator {
487
488
  static get NoDataToDisplay(): "Keine Daten zum Anzeigen" | "No data to display" | "No hay datos para mostrar" | "Aucune donnée à afficher" | "Sem dados para exibir" | "Nessun dato da visualizzare";
488
489
  static get NoDcmtFound(): "Kein Dokument gefunden" | "No documents found" | "Ningún documento encontrado" | "Pas de documents trouvés" | "Nenhum documento encontrado" | "Nessun documento trovato";
489
490
  static get NoDcmtSelected(): string;
491
+ static get NoSortingApplied(): string;
492
+ static get NoOutputMetadata(): string;
490
493
  static get NoDetailDocumentFoundForArchiving(): "Kein Detaildokument zur Archivierung gefunden." | "No detail document found for archiving." | "No se encontró ningún documento de detalle para archivar." | "Aucun document détail trouvé pour l'archivage." | "Nenhum documento de detalhe encontrado para arquivamento." | "Nessun documento di dettaglio trovato per l'archiviazione.";
491
494
  static get NoDocumentMatchFound(): "Kein zugeordnetes Dokument gefunden." | "No document match found." | "No se encontró ningún documento emparejado." | "Aucun document associé trouvé." | "Nenhum documento correspondente encontrado." | "Nessun documento abbinato trovato.";
492
495
  static get NoDocumentSelectedForManyToManyMatching(): "Kein Dokument für die Mehrfach-Zuordnung ausgewählt." | "No document selected for many-to-many matching." | "Ningún documento seleccionado para el emparejamiento de muchos a muchos." | "Aucun document sélectionné pour l'association plusieurs à plusieurs." | "Nenhum documento selecionado para correspondência de muitos para muitos." | "Nessun documento selezionato per l'abbinamento molti a molti.";
@@ -738,6 +741,7 @@ export declare class SDKUI_Localizator {
738
741
  static get SignatureType(): string;
739
742
  static get Size(): "Größe" | "Size" | "Dimensión" | "Dimension" | "Tamanho" | "Dimensione";
740
743
  static get SortBy(): "Sortieren nach" | "Sort by" | "Ordenar por" | "Trier par" | "Ordinamento";
744
+ static get SortByPlural(): "Sortierungen" | "Sortings" | "Ordenaciones" | "Tris" | "Ordenações" | "Ordinamenti";
741
745
  static get Source(): "Ursprung" | "Source" | "Origen" | "Origem" | "Origine";
742
746
  static get SpecialOperators(): "Spezielle Operatoren" | "Special operators" | "Operadores especiales" | "Opérateurs spéciaux" | "Os operadores especiais" | "Operatori speciali";
743
747
  static get StandardMode(): "Standardmodus" | "Standard mode" | "Modo estándar" | "Mode standard" | "Modo padrão" | "Modalità standard";
@@ -1356,6 +1356,16 @@ export class SDKUI_Localizator {
1356
1356
  default: return "Copia path di check out";
1357
1357
  }
1358
1358
  }
1359
+ static get CopyCompliant() {
1360
+ switch (this._cultureID) {
1361
+ case CultureIDs.De_DE: return "Elektronisches Duplikat";
1362
+ case CultureIDs.En_US: return "Compliant copy";
1363
+ case CultureIDs.Es_ES: return "Duplicado electrónico";
1364
+ case CultureIDs.Fr_FR: return "Duplicata électronique";
1365
+ case CultureIDs.Pt_PT: return "Duplicado eletrónico";
1366
+ default: return "Duplicato informatico";
1367
+ }
1368
+ }
1359
1369
  static get CopyToArchived() {
1360
1370
  switch (this._cultureID) {
1361
1371
  case CultureIDs.De_DE: return "In Archivierte kopieren";
@@ -4830,6 +4840,26 @@ export class SDKUI_Localizator {
4830
4840
  default: return "Nessun documento selezionato";
4831
4841
  }
4832
4842
  }
4843
+ static get NoSortingApplied() {
4844
+ switch (this._cultureID) {
4845
+ case CultureIDs.De_DE: return "Keine Sortierung angewendet";
4846
+ case CultureIDs.En_US: return "No sorting applied";
4847
+ case CultureIDs.Es_ES: return "Ningún ordenamiento aplicado";
4848
+ case CultureIDs.Fr_FR: return "Aucun tri appliqué";
4849
+ case CultureIDs.Pt_PT: return "Nenhuma ordenação aplicada";
4850
+ default: return "Nessun ordinamento applicato";
4851
+ }
4852
+ }
4853
+ static get NoOutputMetadata() {
4854
+ switch (this._cultureID) {
4855
+ case CultureIDs.De_DE: return "Keine Ausgabemetadaten ausgewählt";
4856
+ case CultureIDs.En_US: return "No output metadata selected";
4857
+ case CultureIDs.Es_ES: return "Ningún metadato de salida seleccionado";
4858
+ case CultureIDs.Fr_FR: return "Aucune métadonnée de sortie sélectionnée";
4859
+ case CultureIDs.Pt_PT: return "Nenhum metadado de saída selecionado";
4860
+ default: return "Nessun metadato di output selezionato";
4861
+ }
4862
+ }
4833
4863
  static get NoDetailDocumentFoundForArchiving() {
4834
4864
  switch (this._cultureID) {
4835
4865
  case CultureIDs.De_DE: return "Kein Detaildokument zur Archivierung gefunden.";
@@ -7360,6 +7390,16 @@ export class SDKUI_Localizator {
7360
7390
  default: return "Ordinamento";
7361
7391
  }
7362
7392
  }
7393
+ static get SortByPlural() {
7394
+ switch (this._cultureID) {
7395
+ case CultureIDs.De_DE: return "Sortierungen";
7396
+ case CultureIDs.En_US: return "Sortings";
7397
+ case CultureIDs.Es_ES: return "Ordenaciones";
7398
+ case CultureIDs.Fr_FR: return "Tris";
7399
+ case CultureIDs.Pt_PT: return "Ordenações";
7400
+ default: return "Ordinamenti";
7401
+ }
7402
+ }
7363
7403
  static get Source() {
7364
7404
  switch (this._cultureID) {
7365
7405
  case CultureIDs.De_DE: return "Ursprung";
@@ -187,11 +187,11 @@ export const validateCicoFileName = (source, fileName, checkoutDate) => {
187
187
  else {
188
188
  const pad = (n) => n.toString().padStart(2, '0');
189
189
  const expectedTimestamp = `${dt.getFullYear()}${pad(dt.getMonth() + 1)}${pad(dt.getDate())}${pad(dt.getHours())}${pad(dt.getMinutes())}${pad(dt.getSeconds())}`;
190
- isSecondPhaseValid = timestampCheck === expectedTimestamp;
191
190
  // Format dates for display: readable date + (raw timestamp)
192
191
  const expectedDisplayDate = Globalization.getDateTimeDisplayValue(dt);
193
192
  // Parse timestampCheck to readable format (YYYYMMDDHHmmss -> Date)
194
193
  let currentDisplayDate = timestampCheck;
194
+ let parsedDate = null;
195
195
  if (timestampCheck && timestampCheck.length === 14) {
196
196
  const year = parseInt(timestampCheck.substring(0, 4), 10);
197
197
  const month = parseInt(timestampCheck.substring(4, 6), 10) - 1;
@@ -199,9 +199,17 @@ export const validateCicoFileName = (source, fileName, checkoutDate) => {
199
199
  const hours = parseInt(timestampCheck.substring(8, 10), 10);
200
200
  const minutes = parseInt(timestampCheck.substring(10, 12), 10);
201
201
  const seconds = parseInt(timestampCheck.substring(12, 14), 10);
202
- const parsedDate = new Date(year, month, day, hours, minutes, seconds);
202
+ parsedDate = new Date(year, month, day, hours, minutes, seconds);
203
203
  currentDisplayDate = Globalization.getDateTimeDisplayValue(parsedDate);
204
204
  }
205
+ // Validate with ±10 seconds tolerance
206
+ if (parsedDate && !isNaN(parsedDate.getTime())) {
207
+ const diffInSeconds = Math.abs((dt.getTime() - parsedDate.getTime()) / 1000);
208
+ isSecondPhaseValid = diffInSeconds <= 10;
209
+ }
210
+ else {
211
+ isSecondPhaseValid = timestampCheck === expectedTimestamp;
212
+ }
205
213
  checkoutDateValidation = {
206
214
  expected: `${expectedDisplayDate} (${expectedTimestamp})`,
207
215
  current: `${currentDisplayDate} (${timestampCheck})`,
@@ -72,7 +72,8 @@ export declare enum LandingPages {
72
72
  AREA_MANAGER = "areaManager",
73
73
  NOTIFICATIONS = "notifications",
74
74
  ACTIVITIES = "activities",
75
- WORKFLOW_CTRL = "workflowCtrl"
75
+ WORKFLOW_CTRL = "workflowCtrl",
76
+ CASEFLOW = "caseflow"
76
77
  }
77
78
  export declare function getExceptionMessage(ex: any): string;
78
79
  export declare function getContrastColor(inputColor: string): {
@@ -747,6 +747,7 @@ export var LandingPages;
747
747
  LandingPages["NOTIFICATIONS"] = "notifications";
748
748
  LandingPages["ACTIVITIES"] = "activities";
749
749
  LandingPages["WORKFLOW_CTRL"] = "workflowCtrl";
750
+ LandingPages["CASEFLOW"] = "caseflow";
750
751
  })(LandingPages || (LandingPages = {}));
751
752
  // #endregion
752
753
  // #region Exception
@@ -74,7 +74,7 @@ export const useDataUserIdItem = () => {
74
74
  const getIcon = () => {
75
75
  if (!showIcon)
76
76
  return null;
77
- if (userId === undefined)
77
+ if (userId === undefined || userId === null)
78
78
  return null;
79
79
  return ud ? _jsx(TMUserIcon, { ud: ud }) : _jsx("span", { title: showTitile ? SDKUI_Localizator.ValueNotPresent : undefined, style: { display: 'inline-flex', alignItems: 'center' }, children: _jsx(IconWarning, { color: TMColors.warning }) });
80
80
  };
@@ -1,12 +1,13 @@
1
1
  import { useState } from 'react';
2
2
  import { LocalizeDcmtOperationTypes } from '../helper/Enum_Localizator';
3
- import { SDK_Globals, RetrieveFileOptions, DcmtOpers, ResultTypes, RecentCategories, MetadataDataTypes, MetadataDataDomains, DataListCacheService } from '@topconsultnpm/sdk-ts';
3
+ import { SDK_Globals, RetrieveFileOptions, DcmtOpers, ResultTypes, RecentCategories, MetadataDataTypes, MetadataDataDomains, DataListCacheService, DcmtTypeListCacheService, TemplateTIDs } from '@topconsultnpm/sdk-ts';
4
4
  import { ShowAlert, TMResultManager, FormulaHelper, TMExceptionBoxManager, TMSpinner } from '../components';
5
- import { Globalization, getExceptionMessage, dialogConfirmOperation, extensionHandler, downloadBase64File, SDKUI_Globals, dcmtsFileCacheDownload, CACHE_SIZE_LIMIT, clearDcmtsFileCache, dcmtsFileCachePreview, isDcmtFileInCache, removeDcmtsFileCache, SDKUI_Localizator } from '../helper';
5
+ import { Globalization, getExceptionMessage, dialogConfirmOperation, extensionHandler, downloadBase64File, SDKUI_Globals, dcmtsFileCacheDownload, CACHE_SIZE_LIMIT, clearDcmtsFileCache, dcmtsFileCachePreview, isDcmtFileInCache, removeDcmtsFileCache, SDKUI_Localizator, ZipManager } from '../helper';
6
6
  import { DcmtOperationTypes, DownloadTypes, FileExtensionHandler } from '../ts';
7
7
  import { useFileDialog, useFileSourceDialog } from './useInputDialog';
8
8
  import { isXMLFileExt } from '../helper/dcmtsHelper';
9
9
  import { ShowConfirm } from '../components/base/TMConfirm';
10
+ import { generateTargetFileName } from '../components/features/documents/copyAndMergeDcmtsShared';
10
11
  const isScannerLicenseConfigured = () => {
11
12
  try {
12
13
  const scannerLicense = SDKUI_Globals.userSettings.advancedSettings.scannerLicense;
@@ -117,6 +118,144 @@ export const useDcmtOperations = () => {
117
118
  const [waitPanelMaxValueSecondary, setWaitPanelMaxValueSecondary] = useState(0);
118
119
  const { OpenFileDialog } = useFileDialog();
119
120
  const [selectFileSource, FileSourceDialog] = useFileSourceDialog();
121
+ const copyCompliantDcmtsAsync = async (inputDcmt, onFileDownloaded) => {
122
+ return await _copyCompliantDcmtsAsync(inputDcmt, onFileDownloaded);
123
+ };
124
+ const _copyCompliantDcmtsAsync = async (inputDcmt, onFileDownloaded) => {
125
+ if (inputDcmt === undefined)
126
+ return;
127
+ let returnDcmtFiles = [];
128
+ let returnDcmtInfos = [];
129
+ const rfo = new RetrieveFileOptions();
130
+ rfo.retrieveReason = DcmtOpers.ShowFile;
131
+ let firstBlock = true;
132
+ let maxFileSize = 0;
133
+ let signerInfoDescriptor = undefined;
134
+ if (inputDcmt?.FILEEXT == undefined || inputDcmt.FILEEXT == '') {
135
+ throw new Error('WARNING#Documento di soli metadati');
136
+ }
137
+ let ue = SDK_Globals.tmSession?.NewUpdateEngineByID();
138
+ if (ue) {
139
+ ue.TID = inputDcmt?.TID;
140
+ ue.DID = inputDcmt?.DID;
141
+ //Verifichiamo la nostra firma che nel Lex è sempre CadES
142
+ if (inputDcmt?.FILEEXT && inputDcmt.FILEEXT?.toLowerCase().includes('p7m')) {
143
+ //Verifica firma e recupero informazioni firmatari
144
+ await ue.VerifySignAsync();
145
+ //Recuperiamo le impronte
146
+ signerInfoDescriptor = await ue.GetSignersAsync();
147
+ }
148
+ }
149
+ //Documenti master
150
+ let dsRes = await SDK_Globals.tmSession?.NewSearchEngine().GetAllMasterDcmtsAsync(inputDcmt?.TID, inputDcmt?.DID);
151
+ if (dsRes == undefined || dsRes.length === 0) {
152
+ throw new Error('Nessun documento master trovato');
153
+ }
154
+ //Cerchiamo quello con modello IdC
155
+ let serachResultIdC = null;
156
+ for (const dtRes of dsRes) {
157
+ let dtdCur = await DcmtTypeListCacheService.GetAsync(dtRes.fromTID);
158
+ if (dtdCur?.templateTID === TemplateTIDs.IDC_DcmtType && dtRes.dcmtsFound && dtRes.dcmtsFound > 0) {
159
+ serachResultIdC = { ...dtRes };
160
+ }
161
+ }
162
+ if (serachResultIdC == null || serachResultIdC.dcmtsFound !== 1) {
163
+ throw new Error('Nessun IdC correlato al documento');
164
+ }
165
+ if (ue) {
166
+ ue.Metadata_ClearAll();
167
+ ue.TID = serachResultIdC.dtdResult.rows[0][0];
168
+ ue.DID = serachResultIdC.dtdResult.rows[0][1];
169
+ //Verifica dell'IdC
170
+ await ue.VerifySignAsync();
171
+ const signerInfoDescriptorIdC = await ue.GetSignersAsync();
172
+ //Controllo se marcato temporalmente
173
+ if (signerInfoDescriptorIdC) {
174
+ if (signerInfoDescriptorIdC.signers?.filter(s => s.isTimeStamp === true).length === 0) {
175
+ throw new Error('IdC non marcato temporalmente!');
176
+ }
177
+ }
178
+ else
179
+ throw new Error('IdC non firmato e non marcato temporalmente!');
180
+ //Ricerca dell'impronta SHA256 nel contenuto dell'IdC
181
+ let fileIdC = await SDK_Globals.tmSession?.NewSearchEngine().RetrieveFileAsync(serachResultIdC.dtdResult.rows[0][0], serachResultIdC.dtdResult.rows[0][1], rfo, abortController.signal, (pd) => {
182
+ if (firstBlock) {
183
+ maxFileSize = pd.ProgressBarMaximum ?? 0;
184
+ setWaitPanelMaxValueSecondary(maxFileSize);
185
+ firstBlock = false;
186
+ }
187
+ setWaitPanelValueSecondary(pd.ProgressBarValue);
188
+ setWaitPanelTextSecondary(`Downloading IdC... ${Globalization.getNumberDisplayValue(pd.ProgressBarValue, true)} / ${Globalization.getNumberDisplayValue(maxFileSize, true)}`);
189
+ if (pd.ProgressBarValue === pd.ProgressBarMaximum) {
190
+ setWaitPanelMaxValueSecondary(0);
191
+ setWaitPanelValueSecondary(0);
192
+ setWaitPanelTextSecondary('');
193
+ firstBlock = true;
194
+ }
195
+ });
196
+ let hashOk = false;
197
+ if (fileIdC) {
198
+ try {
199
+ const contenuto = await fileIdC.text();
200
+ if (contenuto && signerInfoDescriptor?.shA256) {
201
+ hashOk = contenuto.toLocaleUpperCase().includes(signerInfoDescriptor.shA256.toLocaleUpperCase());
202
+ }
203
+ }
204
+ catch (errDebug) {
205
+ throw new Error(`Errore nella lettura del file IdC: ${errDebug}`);
206
+ }
207
+ }
208
+ if (!hashOk) {
209
+ throw new Error('Impronta non trovata nel file IdC o non corrispondente a quella del documento');
210
+ }
211
+ let file;
212
+ file = await SDK_Globals.tmSession?.NewSearchEngine().RetrieveFileAsync(inputDcmt.TID, inputDcmt.DID, rfo, abortController.signal, (pd) => {
213
+ if (firstBlock) {
214
+ maxFileSize = pd.ProgressBarMaximum ?? 0;
215
+ setWaitPanelMaxValueSecondary(maxFileSize);
216
+ firstBlock = false;
217
+ }
218
+ setWaitPanelValueSecondary(pd.ProgressBarValue);
219
+ setWaitPanelTextSecondary(`Downloading... ${Globalization.getNumberDisplayValue(pd.ProgressBarValue, true)} / ${Globalization.getNumberDisplayValue(maxFileSize, true)}`);
220
+ if (pd.ProgressBarValue === pd.ProgressBarMaximum) {
221
+ setWaitPanelMaxValueSecondary(0);
222
+ setWaitPanelValueSecondary(0);
223
+ setWaitPanelTextSecondary('');
224
+ firstBlock = true;
225
+ }
226
+ });
227
+ if (file && fileIdC) {
228
+ returnDcmtFiles.push(file);
229
+ returnDcmtInfos.push(inputDcmt);
230
+ returnDcmtFiles.push(fileIdC);
231
+ returnDcmtInfos.push({ ...inputDcmt, fileName: inputDcmt.fileName + "_IdC", FILEEXT: 'TXT.P7M.TSD' });
232
+ }
233
+ onFileDownloaded && await onFileDownloaded(returnDcmtFiles, returnDcmtInfos);
234
+ }
235
+ };
236
+ const zipGetName = async (operation, tid) => {
237
+ let nameZip = tid ? tid.toString() + ".zip" : operation.toString() + ".zip";
238
+ switch (operation) {
239
+ case DcmtOperationTypes.CopyCompliant:
240
+ nameZip = `Duplicato_Informatico_${tid ?? '1'}`;
241
+ break;
242
+ }
243
+ return nameZip.trim().toLowerCase().endsWith('.zip')
244
+ ? nameZip.trim() : nameZip.trim() + '.zip';
245
+ };
246
+ const zipDocuments = async (zipEntries, typeOperation, tid, passwordZip) => {
247
+ if (zipEntries.length > 0) {
248
+ const zipFileName = await zipGetName(typeOperation, tid);
249
+ // Crea il blob ZIP
250
+ const zipBlob = await ZipManager.createZip(zipEntries, {
251
+ compressionLevel: 6,
252
+ password: passwordZip || undefined,
253
+ });
254
+ // Download zip nella cartella Downloads del browser
255
+ ZipManager.downloadBlob(zipBlob, zipFileName);
256
+ ShowAlert({ message: SDKUI_Localizator.ZipCreatedSavedInFolder.replaceParams(zipFileName, "Zip creato con successo"), mode: 'success', duration: 5000, title: SDKUI_Localizator.CompressToZipFile });
257
+ }
258
+ };
120
259
  const _downloadDcmtsAsync = async (inputDcmts, downloadMode = "download", onFileDownloaded, skipConfirmation = false, retrieveOptions, useCache = true, showSuccessAlert = true, useInputFileName = false) => {
121
260
  if (inputDcmts === undefined)
122
261
  return;
@@ -527,6 +666,7 @@ export const useDcmtOperations = () => {
527
666
  await uploadDcmtsAsync(inputDcmts, operationTitle, undefined, actionAfterOperationAsync);
528
667
  return;
529
668
  }
669
+ let zipEntries = [];
530
670
  setShowWaitPanel(true);
531
671
  setShowPrimary(true);
532
672
  setShowSecondary(false);
@@ -575,6 +715,23 @@ export const useDcmtOperations = () => {
575
715
  }
576
716
  break;
577
717
  }
718
+ case DcmtOperationTypes.CopyCompliant:
719
+ const collectFileForZip = async (file, dcmtInfo) => {
720
+ if (file.length !== dcmtInfo.length) {
721
+ console.warn(`Numero di file (${file.length}) e documenti (${dcmtInfo.length}) non corrispondono. Impossibile associare correttamente i file ai documenti per la creazione dello zip.`);
722
+ return;
723
+ }
724
+ for (let j = 0; j < file.length; j++) {
725
+ let targetFileName = await generateTargetFileName(file[j], dcmtInfo[j], {
726
+ fileNamingMode: 'documentTypeAndDid',
727
+ separatorChar: '_',
728
+ });
729
+ targetFileName = targetFileName.replace(/\.xml\.p7m\.tsd$/i, '_IdC.XML.P7M.TSD');
730
+ zipEntries.push({ filename: targetFileName, data: file[j] });
731
+ }
732
+ };
733
+ await copyCompliantDcmtsAsync(inputDcmts[i], collectFileForZip);
734
+ break;
578
735
  case DcmtOperationTypes.CheckFile:
579
736
  await SDK_Globals.tmSession?.NewSearchEngine().CheckFileAsync(inputDcmts[i].TID, inputDcmts[i].DID);
580
737
  break;
@@ -627,7 +784,12 @@ export const useDcmtOperations = () => {
627
784
  result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.SUCCESS });
628
785
  }
629
786
  catch (ex) {
630
- result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.ERROR, description: getExceptionMessage(ex) });
787
+ let msg = getExceptionMessage(ex);
788
+ if (msg.startsWith('WARNING#')) {
789
+ result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.WARNING, description: msg.replace('WARNING#', '') });
790
+ }
791
+ else
792
+ result.push({ rowIndex: i, id1: inputDcmts[i].TID, id2: inputDcmts[i].DID, resultType: ResultTypes.ERROR, description: msg });
631
793
  const err = ex;
632
794
  if (err.name === 'CanceledError') {
633
795
  ShowAlert({ message: err.message, mode: 'warning', duration: 3000, title: 'Abort' });
@@ -635,6 +797,9 @@ export const useDcmtOperations = () => {
635
797
  }
636
798
  setWaitPanelValuePrimary(i + 1);
637
799
  }
800
+ if (zipEntries.length > 0) {
801
+ await zipDocuments(zipEntries, dcmtOperationType, inputDcmts[0].TID);
802
+ }
638
803
  setWaitPanelMaxValuePrimary(0);
639
804
  setWaitPanelValuePrimary(0);
640
805
  setWaitPanelTextPrimary('');
@@ -210,6 +210,14 @@ export const useDocumentOperations = (props) => {
210
210
  const isDisabledForMultiRow = () => {
211
211
  return selectedDcmtInfos.length === 0 || selectedDcmtInfos.every(d => d.TID === undefined || d.DID === undefined);
212
212
  };
213
+ const isDisabledForMultiRowCopyCompliant = () => {
214
+ let isNotSeletced = selectedDcmtInfos.length === 0 || selectedDcmtInfos.every(d => d.TID === undefined || d.DID === undefined);
215
+ if (isNotSeletced)
216
+ return true;
217
+ let isOnlyMetadata = selectedDcmtInfos.filter(d => d.FILEEXT === null).length === selectedDcmtInfos.length;
218
+ let isAllNotIsLex = selectedItemsFull.filter(d => d.ISLEX === null).length === selectedDcmtInfos.length;
219
+ return isOnlyMetadata || isAllNotIsLex;
220
+ };
213
221
  const onRefreshBlog = async () => {
214
222
  await onRefreshBlogForm?.();
215
223
  await onRefreshBlogDatagrid?.();
@@ -807,6 +815,16 @@ export const useDocumentOperations = (props) => {
807
815
  ],
808
816
  };
809
817
  };
818
+ const copyCompliantMenuItem = () => {
819
+ return {
820
+ id: 'copy-compliant',
821
+ icon: _jsx(IconCopy, {}),
822
+ name: SDKUI_Localizator.CopyCompliant,
823
+ operationType: 'multiRow',
824
+ disabled: isDisabledForMultiRowCopyCompliant(),
825
+ onClick: async () => { await runOperationAsync(selectedDcmtInfos, DcmtOperationTypes.CopyCompliant); }
826
+ };
827
+ };
810
828
  const copyToFolderMenuItem = () => {
811
829
  return {
812
830
  id: 'copy-to-folder',
@@ -1153,6 +1171,7 @@ export const useDocumentOperations = (props) => {
1153
1171
  downloadFileMenuItem(),
1154
1172
  downloadXMLAttachmentsMenuItem(),
1155
1173
  duplicateDocumentMenuItem(),
1174
+ copyCompliantMenuItem(),
1156
1175
  batchUpdateMenuItem(),
1157
1176
  passToArchive(),
1158
1177
  ...(selectedDcmtInfos.length > 0 && isPdfEditorAvailable(dtd, selectedDcmtInfos[0]?.FILEEXT) && onOpenPdfEditorRequest ? [pdfEditorMenuItem(onOpenPdfEditorRequest)] : []),
@@ -1,12 +1,12 @@
1
1
  import { JobTypes, ObjectClasses, ProcessDescriptor, DcmtTypeDescriptor } from "@topconsultnpm/sdk-ts";
2
2
  export declare class PlatformObjectService {
3
- static readonly retrieveAllAsync: (objClass: ObjectClasses, refreshCache?: boolean) => Promise<import("@topconsultnpm/sdk-ts").RelationDescriptor[] | import("@topconsultnpm/sdk-ts").TaskDescriptor[] | import("@topconsultnpm/sdk-ts").AreaDescriptor[] | import("@topconsultnpm/sdk-ts").NotificationDescriptor[] | import("@topconsultnpm/sdk-ts").WorkingGroupDescriptor[] | undefined>;
4
- static readonly retrieveAsync: (objClass: ObjectClasses, id: number) => Promise<import("@topconsultnpm/sdk-ts").RelationDescriptor | import("@topconsultnpm/sdk-ts").WorkingGroupDescriptor | import("@topconsultnpm/sdk-ts").TaskDescriptor | import("@topconsultnpm/sdk-ts").AreaDescriptor | import("@topconsultnpm/sdk-ts").BasketTypeDescriptor | import("@topconsultnpm/sdk-ts").NotificationDescriptor | undefined>;
3
+ static readonly retrieveAllAsync: (objClass: ObjectClasses, refreshCache?: boolean) => Promise<import("@topconsultnpm/sdk-ts").RelationDescriptor[] | import("@topconsultnpm/sdk-ts").AreaDescriptor[] | import("@topconsultnpm/sdk-ts").NotificationDescriptor[] | import("@topconsultnpm/sdk-ts").TaskDescriptor[] | import("@topconsultnpm/sdk-ts").WorkingGroupDescriptor[] | undefined>;
4
+ static readonly retrieveAsync: (objClass: ObjectClasses, id: number) => Promise<import("@topconsultnpm/sdk-ts").RelationDescriptor | import("@topconsultnpm/sdk-ts").AreaDescriptor | import("@topconsultnpm/sdk-ts").BasketTypeDescriptor | import("@topconsultnpm/sdk-ts").NotificationDescriptor | import("@topconsultnpm/sdk-ts").TaskDescriptor | import("@topconsultnpm/sdk-ts").WorkingGroupDescriptor | undefined>;
5
5
  private static readonly retrieveAllAdminJobsAsync;
6
- static readonly retrieveAllAdminAsync: (objClass: ObjectClasses, jobType?: JobTypes) => Promise<import("@topconsultnpm/sdk-ts").UserDescriptor[] | import("@topconsultnpm/sdk-ts").RelationDescriptor[] | DcmtTypeDescriptor[] | import("@topconsultnpm/sdk-ts").AreaDescriptor[] | import("@topconsultnpm/sdk-ts").FEDistillerJobDescriptor[] | import("@topconsultnpm/sdk-ts").DataListDescriptor[] | import("@topconsultnpm/sdk-ts").DiskDescriptor[] | import("@topconsultnpm/sdk-ts").GroupDescriptor[] | import("@topconsultnpm/sdk-ts").LDAPDescriptor[] | import("@topconsultnpm/sdk-ts").NumeratorDescriptor[] | ProcessDescriptor[] | import("@topconsultnpm/sdk-ts").SAPLoginDescriptor[] | import("@topconsultnpm/sdk-ts").SignCertDescriptor[] | import("@topconsultnpm/sdk-ts").SignServerDescriptor[] | import("@topconsultnpm/sdk-ts").TreeDescriptor[] | import("@topconsultnpm/sdk-ts").TSADescriptor[] | import("@topconsultnpm/sdk-ts").WFDescriptor[] | undefined>;
6
+ static readonly retrieveAllAdminAsync: (objClass: ObjectClasses, jobType?: JobTypes) => Promise<import("@topconsultnpm/sdk-ts").UserDescriptor[] | import("@topconsultnpm/sdk-ts").RelationDescriptor[] | import("@topconsultnpm/sdk-ts").GroupDescriptor[] | DcmtTypeDescriptor[] | import("@topconsultnpm/sdk-ts").AreaDescriptor[] | import("@topconsultnpm/sdk-ts").FEDistillerJobDescriptor[] | import("@topconsultnpm/sdk-ts").DataListDescriptor[] | import("@topconsultnpm/sdk-ts").DiskDescriptor[] | import("@topconsultnpm/sdk-ts").LDAPDescriptor[] | import("@topconsultnpm/sdk-ts").NumeratorDescriptor[] | ProcessDescriptor[] | import("@topconsultnpm/sdk-ts").SAPLoginDescriptor[] | import("@topconsultnpm/sdk-ts").SignCertDescriptor[] | import("@topconsultnpm/sdk-ts").SignServerDescriptor[] | import("@topconsultnpm/sdk-ts").TreeDescriptor[] | import("@topconsultnpm/sdk-ts").TSADescriptor[] | import("@topconsultnpm/sdk-ts").WFDescriptor[] | undefined>;
7
7
  private static readonly loadCacheForJobAsync;
8
8
  private static readonly retrieveAdminJobAsync;
9
- static readonly retrieveAdminAsync: (objClass: ObjectClasses, jobType: JobTypes, id: number) => Promise<import("@topconsultnpm/sdk-ts").UserDescriptor | import("@topconsultnpm/sdk-ts").WFDescriptor | DcmtTypeDescriptor | import("@topconsultnpm/sdk-ts").DataListDescriptor | import("@topconsultnpm/sdk-ts").RelationDescriptor | import("@topconsultnpm/sdk-ts").WorkingGroupDescriptor | import("@topconsultnpm/sdk-ts").MailSenderJobDescriptor | import("@topconsultnpm/sdk-ts").TaskDescriptor | import("@topconsultnpm/sdk-ts").SavedQueryDescriptor | import("@topconsultnpm/sdk-ts").AreaDescriptor | import("@topconsultnpm/sdk-ts").BasketTypeDescriptor | import("@topconsultnpm/sdk-ts").BarcodeArchiverJobDescriptor | import("@topconsultnpm/sdk-ts").BatchUpdaterJobDescriptor | import("@topconsultnpm/sdk-ts").CassettoDoganaleJobDescriptor | import("@topconsultnpm/sdk-ts").CassettoDoganalePlusJobDescriptor | import("@topconsultnpm/sdk-ts").CassettoDoganaleDistillerJobDescriptor | import("@topconsultnpm/sdk-ts").CassettoFiscaleQueryJobDescriptor | import("@topconsultnpm/sdk-ts").CassettoFiscaleSenderJobDescriptor | import("@topconsultnpm/sdk-ts").CheckSequenceJobDescriptor | import("@topconsultnpm/sdk-ts").COSCheckerJobDescriptor | import("@topconsultnpm/sdk-ts").DcmtConverterJobDescriptor | import("@topconsultnpm/sdk-ts").DcmtCreatorJobDescriptor | import("@topconsultnpm/sdk-ts").DcmtDeleterJobDescriptor | import("@topconsultnpm/sdk-ts").DcmtNoteJobDescriptor | import("@topconsultnpm/sdk-ts").DcmtPrinterJobDescriptor | import("@topconsultnpm/sdk-ts").FEAttacherJobDescriptor | import("@topconsultnpm/sdk-ts").FECreatorTxtJobDescriptor | import("@topconsultnpm/sdk-ts").FEDetacherJobDescriptor | import("@topconsultnpm/sdk-ts").FEDistillerJobDescriptor | import("@topconsultnpm/sdk-ts").FESenderWsJobDescriptor | import("@topconsultnpm/sdk-ts").FESplitterJobDescriptor | import("@topconsultnpm/sdk-ts").FEValidatorJobDescriptor | import("@topconsultnpm/sdk-ts").FileArchiverJobDescriptor | import("@topconsultnpm/sdk-ts").FileCheckerJobDescriptor | import("@topconsultnpm/sdk-ts").FileExecJobDescriptor | import("@topconsultnpm/sdk-ts").FileExportJobDescriptor | import("@topconsultnpm/sdk-ts").FileMoverJobDescriptor | import("@topconsultnpm/sdk-ts").LexJobDescriptor | import("@topconsultnpm/sdk-ts").LinkerJobDescriptor | import("@topconsultnpm/sdk-ts").MailArchiverJobDescriptor | import("@topconsultnpm/sdk-ts").MailQueryJobDescriptor | import("@topconsultnpm/sdk-ts").MigrationJobDescriptor | import("@topconsultnpm/sdk-ts").OcrSixJobDescriptor | import("@topconsultnpm/sdk-ts").PdDCreatorJobDescriptor | import("@topconsultnpm/sdk-ts").PDFArchiverJobDescriptor | import("@topconsultnpm/sdk-ts").PdVArchiverJobDescriptor | import("@topconsultnpm/sdk-ts").PdVQueryJobDescriptor | import("@topconsultnpm/sdk-ts").PdVSenderJobDescriptor | import("@topconsultnpm/sdk-ts").PeppolQueryJobDescriptor | import("@topconsultnpm/sdk-ts").PeppolSenderJobDescriptor | import("@topconsultnpm/sdk-ts").PostelQueryJobDescriptor | import("@topconsultnpm/sdk-ts").PostelSenderJobDescriptor | import("@topconsultnpm/sdk-ts").ReplicatorJobDescriptor | import("@topconsultnpm/sdk-ts").SAPAlignerJobDescriptor | import("@topconsultnpm/sdk-ts").SAPBarcodeJobDescriptor | import("@topconsultnpm/sdk-ts").SAPDataReaderJobDescriptor | import("@topconsultnpm/sdk-ts").SAPDataWriterJobDescriptor | import("@topconsultnpm/sdk-ts").SignerJobDescriptor | import("@topconsultnpm/sdk-ts").SpoolArchiverJobDescriptor | import("@topconsultnpm/sdk-ts").UpdaterJobDescriptor | import("@topconsultnpm/sdk-ts").DiskDescriptor | import("@topconsultnpm/sdk-ts").GroupDescriptor | import("@topconsultnpm/sdk-ts").LDAPDescriptor | import("@topconsultnpm/sdk-ts").NumeratorDescriptor | ProcessDescriptor | import("@topconsultnpm/sdk-ts").SAPLoginDescriptor | import("@topconsultnpm/sdk-ts").SignCertDescriptor | import("@topconsultnpm/sdk-ts").SignServerDescriptor | import("@topconsultnpm/sdk-ts").TreeDescriptor | import("@topconsultnpm/sdk-ts").TSADescriptor | undefined>;
9
+ static readonly retrieveAdminAsync: (objClass: ObjectClasses, jobType: JobTypes, id: number) => Promise<import("@topconsultnpm/sdk-ts").UserDescriptor | import("@topconsultnpm/sdk-ts").WFDescriptor | DcmtTypeDescriptor | import("@topconsultnpm/sdk-ts").DataListDescriptor | import("@topconsultnpm/sdk-ts").RelationDescriptor | import("@topconsultnpm/sdk-ts").GroupDescriptor | import("@topconsultnpm/sdk-ts").SavedQueryDescriptor | import("@topconsultnpm/sdk-ts").AreaDescriptor | import("@topconsultnpm/sdk-ts").BasketTypeDescriptor | import("@topconsultnpm/sdk-ts").TaskDescriptor | import("@topconsultnpm/sdk-ts").WorkingGroupDescriptor | import("@topconsultnpm/sdk-ts").BarcodeArchiverJobDescriptor | import("@topconsultnpm/sdk-ts").BatchUpdaterJobDescriptor | import("@topconsultnpm/sdk-ts").CassettoDoganaleJobDescriptor | import("@topconsultnpm/sdk-ts").CassettoDoganalePlusJobDescriptor | import("@topconsultnpm/sdk-ts").CassettoDoganaleDistillerJobDescriptor | import("@topconsultnpm/sdk-ts").CassettoFiscaleQueryJobDescriptor | import("@topconsultnpm/sdk-ts").CassettoFiscaleSenderJobDescriptor | import("@topconsultnpm/sdk-ts").CheckSequenceJobDescriptor | import("@topconsultnpm/sdk-ts").COSCheckerJobDescriptor | import("@topconsultnpm/sdk-ts").DcmtConverterJobDescriptor | import("@topconsultnpm/sdk-ts").DcmtCreatorJobDescriptor | import("@topconsultnpm/sdk-ts").DcmtDeleterJobDescriptor | import("@topconsultnpm/sdk-ts").DcmtNoteJobDescriptor | import("@topconsultnpm/sdk-ts").DcmtPrinterJobDescriptor | import("@topconsultnpm/sdk-ts").FEAttacherJobDescriptor | import("@topconsultnpm/sdk-ts").FECreatorTxtJobDescriptor | import("@topconsultnpm/sdk-ts").FEDetacherJobDescriptor | import("@topconsultnpm/sdk-ts").FEDistillerJobDescriptor | import("@topconsultnpm/sdk-ts").FESenderWsJobDescriptor | import("@topconsultnpm/sdk-ts").FESplitterJobDescriptor | import("@topconsultnpm/sdk-ts").FEValidatorJobDescriptor | import("@topconsultnpm/sdk-ts").FileArchiverJobDescriptor | import("@topconsultnpm/sdk-ts").FileCheckerJobDescriptor | import("@topconsultnpm/sdk-ts").FileExecJobDescriptor | import("@topconsultnpm/sdk-ts").FileExportJobDescriptor | import("@topconsultnpm/sdk-ts").FileMoverJobDescriptor | import("@topconsultnpm/sdk-ts").LexJobDescriptor | import("@topconsultnpm/sdk-ts").LinkerJobDescriptor | import("@topconsultnpm/sdk-ts").MailArchiverJobDescriptor | import("@topconsultnpm/sdk-ts").MailQueryJobDescriptor | import("@topconsultnpm/sdk-ts").MailSenderJobDescriptor | import("@topconsultnpm/sdk-ts").MigrationJobDescriptor | import("@topconsultnpm/sdk-ts").OcrSixJobDescriptor | import("@topconsultnpm/sdk-ts").PdDCreatorJobDescriptor | import("@topconsultnpm/sdk-ts").PDFArchiverJobDescriptor | import("@topconsultnpm/sdk-ts").PdVArchiverJobDescriptor | import("@topconsultnpm/sdk-ts").PdVQueryJobDescriptor | import("@topconsultnpm/sdk-ts").PdVSenderJobDescriptor | import("@topconsultnpm/sdk-ts").PeppolQueryJobDescriptor | import("@topconsultnpm/sdk-ts").PeppolSenderJobDescriptor | import("@topconsultnpm/sdk-ts").PostelQueryJobDescriptor | import("@topconsultnpm/sdk-ts").PostelSenderJobDescriptor | import("@topconsultnpm/sdk-ts").ReplicatorJobDescriptor | import("@topconsultnpm/sdk-ts").SAPAlignerJobDescriptor | import("@topconsultnpm/sdk-ts").SAPBarcodeJobDescriptor | import("@topconsultnpm/sdk-ts").SAPDataReaderJobDescriptor | import("@topconsultnpm/sdk-ts").SAPDataWriterJobDescriptor | import("@topconsultnpm/sdk-ts").SignerJobDescriptor | import("@topconsultnpm/sdk-ts").SpoolArchiverJobDescriptor | import("@topconsultnpm/sdk-ts").UpdaterJobDescriptor | import("@topconsultnpm/sdk-ts").DiskDescriptor | import("@topconsultnpm/sdk-ts").LDAPDescriptor | import("@topconsultnpm/sdk-ts").NumeratorDescriptor | ProcessDescriptor | import("@topconsultnpm/sdk-ts").SAPLoginDescriptor | import("@topconsultnpm/sdk-ts").SignCertDescriptor | import("@topconsultnpm/sdk-ts").SignServerDescriptor | import("@topconsultnpm/sdk-ts").TreeDescriptor | import("@topconsultnpm/sdk-ts").TSADescriptor | undefined>;
10
10
  private static readonly updateJobAsync;
11
11
  static readonly updateAsync: (objClass: ObjectClasses, jobType: JobTypes, d: any, ...args: any[]) => Promise<number | undefined>;
12
12
  private static readonly createJobAsync;
package/lib/ts/types.d.ts CHANGED
@@ -36,7 +36,8 @@ export declare enum DcmtOperationTypes {
36
36
  FreeSearchReindex = 12,
37
37
  FreeSearchPurge = 13,
38
38
  BatchUpdate = 14,
39
- RemoveFromWorkgroup = 15
39
+ RemoveFromWorkgroup = 15,
40
+ CopyCompliant = 16
40
41
  }
41
42
  export declare enum DownloadTypes {
42
43
  Dcmt = "Dcmt",
package/lib/ts/types.js CHANGED
@@ -39,6 +39,7 @@ export var DcmtOperationTypes;
39
39
  DcmtOperationTypes[DcmtOperationTypes["FreeSearchPurge"] = 13] = "FreeSearchPurge";
40
40
  DcmtOperationTypes[DcmtOperationTypes["BatchUpdate"] = 14] = "BatchUpdate";
41
41
  DcmtOperationTypes[DcmtOperationTypes["RemoveFromWorkgroup"] = 15] = "RemoveFromWorkgroup";
42
+ DcmtOperationTypes[DcmtOperationTypes["CopyCompliant"] = 16] = "CopyCompliant";
42
43
  })(DcmtOperationTypes || (DcmtOperationTypes = {}));
43
44
  export var DownloadTypes;
44
45
  (function (DownloadTypes) {