@topconsultnpm/sdkui-react 6.21.0-dev3.2 → 6.21.0-dev3.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/NewComponents/ContextMenu/styles.d.ts +4 -4
- package/lib/components/NewComponents/FloatingMenuBar/styles.d.ts +2 -2
- package/lib/components/base/TMDataGrid.js +12 -2
- package/lib/components/base/TMDataGridExportForm.js +19 -8
- package/lib/components/base/TMFileManagerDataGridView.js +4 -4
- package/lib/components/base/TMFileManagerThumbnailItems.js +3 -3
- package/lib/components/base/TMFileManagerUtils.d.ts +7 -0
- package/lib/components/base/TMFileManagerUtils.js +14 -1
- package/lib/components/base/TMModal.js +2 -2
- package/lib/components/base/TMTreeView.js +12 -15
- package/lib/components/choosers/TMDynDataListItemChooser.js +6 -1
- package/lib/components/editors/TMEditorStyled.d.ts +6 -6
- package/lib/components/editors/TMMetadataEditor.js +6 -2
- package/lib/components/editors/TMMetadataValues.js +10 -2
- package/lib/components/features/blog/TMBlogCommentForm.js +5 -2
- package/lib/components/features/documents/TMCopyToFolderForm.js +2 -2
- package/lib/components/features/documents/TMDcmtIcon.js +1 -1
- package/lib/components/features/documents/TMMergeToPdfForm.js +2 -2
- package/lib/components/features/documents/TMRelationViewer.js +6 -1
- package/lib/components/features/documents/copyAndMergeDcmtsShared.d.ts +0 -13
- package/lib/components/features/documents/copyAndMergeDcmtsShared.js +1 -39
- package/lib/components/features/search/TMMetadataOutputForm.d.ts +17 -0
- package/lib/components/features/search/TMMetadataOutputForm.js +225 -0
- package/lib/components/features/search/TMMetadataSorterForm.d.ts +17 -0
- package/lib/components/features/search/TMMetadataSorterForm.js +243 -0
- package/lib/components/features/search/TMSearchQueryEditor.js +14 -8
- package/lib/components/features/search/TMSearchQueryPanel.js +249 -58
- package/lib/components/features/search/TMSearchResult.js +2 -3
- package/lib/components/features/search/TMViewHistoryDcmt.js +1 -1
- package/lib/components/features/search/metadataFormHelper.d.ts +16 -0
- package/lib/components/features/search/metadataFormHelper.js +77 -0
- package/lib/components/grids/TMBlogAttachments.js +2 -2
- package/lib/components/grids/TMBlogsPost.js +5 -3
- package/lib/components/grids/TMBlogsPostUtils.d.ts +1 -0
- package/lib/components/grids/TMBlogsPostUtils.js +3 -1
- package/lib/helper/MergePdfManager.js +7 -4
- package/lib/helper/SDKUI_Globals.js +2 -1
- package/lib/helper/SDKUI_Localizator.d.ts +4 -0
- package/lib/helper/SDKUI_Localizator.js +40 -0
- package/lib/helper/TMUtils.d.ts +23 -0
- package/lib/helper/TMUtils.js +55 -0
- package/lib/helper/checkinCheckoutManager.d.ts +4 -3
- package/lib/helper/checkinCheckoutManager.js +29 -11
- package/lib/hooks/useCheckInOutOperations.d.ts +4 -3
- package/lib/hooks/useDataUserIdItem.js +1 -1
- package/lib/hooks/useDcmtOperations.d.ts +18 -1
- package/lib/hooks/useDcmtOperations.js +67 -21
- package/lib/hooks/useDocumentOperations.js +3 -3
- package/lib/hooks/useRelatedDocuments.js +4 -4
- package/lib/services/platform_services.d.ts +4 -4
- package/package.json +10 -7
|
@@ -487,6 +487,8 @@ export declare class SDKUI_Localizator {
|
|
|
487
487
|
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
488
|
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
489
|
static get NoDcmtSelected(): string;
|
|
490
|
+
static get NoSortingApplied(): string;
|
|
491
|
+
static get NoOutputMetadata(): string;
|
|
490
492
|
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
493
|
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
494
|
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.";
|
|
@@ -652,6 +654,7 @@ export declare class SDKUI_Localizator {
|
|
|
652
654
|
static get RenameFile(): "Datei erfolgreich umbenannt" | "File renamed successfully" | "Archivo renombrada exitosamente" | "Fichier renommé avec succès" | "Arquivo renomeada com sucesso" | "File rinominata con successo";
|
|
653
655
|
static get Restore(): "Wiederherstellen" | "Restore" | "Restablecer" | "Restaure" | "Restauração" | "Ripristina";
|
|
654
656
|
static get RestoreComment(): "Kommentar wiederherstellen?" | "Restore the comment?" | "¿Restaurar el comentario?" | "Restaurer le commentaire ?" | "Restaurar o comentário?" | "Ripristinare il commento?";
|
|
657
|
+
static get Result(): string;
|
|
655
658
|
static get ResultDetails(): string;
|
|
656
659
|
static get RestoreDownload(): string;
|
|
657
660
|
static get ResultsPerPage(): string;
|
|
@@ -737,6 +740,7 @@ export declare class SDKUI_Localizator {
|
|
|
737
740
|
static get SignatureType(): string;
|
|
738
741
|
static get Size(): "Größe" | "Size" | "Dimensión" | "Dimension" | "Tamanho" | "Dimensione";
|
|
739
742
|
static get SortBy(): "Sortieren nach" | "Sort by" | "Ordenar por" | "Trier par" | "Ordinamento";
|
|
743
|
+
static get SortByPlural(): "Sortierungen" | "Sortings" | "Ordenaciones" | "Tris" | "Ordenações" | "Ordinamenti";
|
|
740
744
|
static get Source(): "Ursprung" | "Source" | "Origen" | "Origem" | "Origine";
|
|
741
745
|
static get SpecialOperators(): "Spezielle Operatoren" | "Special operators" | "Operadores especiales" | "Opérateurs spéciaux" | "Os operadores especiais" | "Operatori speciali";
|
|
742
746
|
static get StandardMode(): "Standardmodus" | "Standard mode" | "Modo estándar" | "Mode standard" | "Modo padrão" | "Modalità standard";
|
|
@@ -4830,6 +4830,26 @@ export class SDKUI_Localizator {
|
|
|
4830
4830
|
default: return "Nessun documento selezionato";
|
|
4831
4831
|
}
|
|
4832
4832
|
}
|
|
4833
|
+
static get NoSortingApplied() {
|
|
4834
|
+
switch (this._cultureID) {
|
|
4835
|
+
case CultureIDs.De_DE: return "Keine Sortierung angewendet";
|
|
4836
|
+
case CultureIDs.En_US: return "No sorting applied";
|
|
4837
|
+
case CultureIDs.Es_ES: return "Ningún ordenamiento aplicado";
|
|
4838
|
+
case CultureIDs.Fr_FR: return "Aucun tri appliqué";
|
|
4839
|
+
case CultureIDs.Pt_PT: return "Nenhuma ordenação aplicada";
|
|
4840
|
+
default: return "Nessun ordinamento applicato";
|
|
4841
|
+
}
|
|
4842
|
+
}
|
|
4843
|
+
static get NoOutputMetadata() {
|
|
4844
|
+
switch (this._cultureID) {
|
|
4845
|
+
case CultureIDs.De_DE: return "Keine Ausgabemetadaten ausgewählt";
|
|
4846
|
+
case CultureIDs.En_US: return "No output metadata selected";
|
|
4847
|
+
case CultureIDs.Es_ES: return "Ningún metadato de salida seleccionado";
|
|
4848
|
+
case CultureIDs.Fr_FR: return "Aucune métadonnée de sortie sélectionnée";
|
|
4849
|
+
case CultureIDs.Pt_PT: return "Nenhum metadado de saída selecionado";
|
|
4850
|
+
default: return "Nessun metadato di output selezionato";
|
|
4851
|
+
}
|
|
4852
|
+
}
|
|
4833
4853
|
static get NoDetailDocumentFoundForArchiving() {
|
|
4834
4854
|
switch (this._cultureID) {
|
|
4835
4855
|
case CultureIDs.De_DE: return "Kein Detaildokument zur Archivierung gefunden.";
|
|
@@ -6499,6 +6519,16 @@ export class SDKUI_Localizator {
|
|
|
6499
6519
|
default: return "Ripristinare il commento?";
|
|
6500
6520
|
}
|
|
6501
6521
|
}
|
|
6522
|
+
static get Result() {
|
|
6523
|
+
switch (this._cultureID) {
|
|
6524
|
+
case CultureIDs.De_DE: return "Ergebnis";
|
|
6525
|
+
case CultureIDs.En_US: return "Result";
|
|
6526
|
+
case CultureIDs.Es_ES: return "Resultado";
|
|
6527
|
+
case CultureIDs.Fr_FR: return "Résultat";
|
|
6528
|
+
case CultureIDs.Pt_PT: return "Resultado";
|
|
6529
|
+
default: return "Risultato";
|
|
6530
|
+
}
|
|
6531
|
+
}
|
|
6502
6532
|
static get ResultDetails() {
|
|
6503
6533
|
switch (this._cultureID) {
|
|
6504
6534
|
case CultureIDs.De_DE: return "Ergebnisdetails";
|
|
@@ -7350,6 +7380,16 @@ export class SDKUI_Localizator {
|
|
|
7350
7380
|
default: return "Ordinamento";
|
|
7351
7381
|
}
|
|
7352
7382
|
}
|
|
7383
|
+
static get SortByPlural() {
|
|
7384
|
+
switch (this._cultureID) {
|
|
7385
|
+
case CultureIDs.De_DE: return "Sortierungen";
|
|
7386
|
+
case CultureIDs.En_US: return "Sortings";
|
|
7387
|
+
case CultureIDs.Es_ES: return "Ordenaciones";
|
|
7388
|
+
case CultureIDs.Fr_FR: return "Tris";
|
|
7389
|
+
case CultureIDs.Pt_PT: return "Ordenações";
|
|
7390
|
+
default: return "Ordinamenti";
|
|
7391
|
+
}
|
|
7392
|
+
}
|
|
7353
7393
|
static get Source() {
|
|
7354
7394
|
switch (this._cultureID) {
|
|
7355
7395
|
case CultureIDs.De_DE: return "Ursprung";
|
package/lib/helper/TMUtils.d.ts
CHANGED
|
@@ -1,6 +1,29 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { FileItem } from '../components';
|
|
3
3
|
import { AppModules, DataColumnDescriptor, DcmtTypeDescriptor, PdGs, SearchResultDescriptor } from '@topconsultnpm/sdk-ts';
|
|
4
|
+
/**
|
|
5
|
+
* Estensioni di firma/marca temporale note che possono avvolgere altre estensioni.
|
|
6
|
+
* Es: file.pdf.p7m, file.xml.p7m, file.docx.p7m, file.xml.p7m.ts
|
|
7
|
+
*/
|
|
8
|
+
export declare const SIGNATURE_EXTENSIONS: Set<string>;
|
|
9
|
+
/**
|
|
10
|
+
* Estrae l'estensione completa da un nome file, gestendo estensioni composite
|
|
11
|
+
* a più livelli come .PDF.P7M, .XML.P7M.TS, etc.
|
|
12
|
+
*
|
|
13
|
+
* Esempi:
|
|
14
|
+
* - "documento.pdf" -> ".pdf"
|
|
15
|
+
* - "DCMT_123.PDF.P7M" -> ".PDF.P7M"
|
|
16
|
+
* - "fattura.xml.p7m" -> ".xml.p7m"
|
|
17
|
+
* - "example.XML.P7M.TS" -> ".XML.P7M.TS"
|
|
18
|
+
* - "file.tar.gz" -> ".gz" (tar.gz non è gestito come firma)
|
|
19
|
+
* - "file" -> ""
|
|
20
|
+
*/
|
|
21
|
+
export declare const getFullFileExtension: (fileName: string, depth?: number) => string;
|
|
22
|
+
/**
|
|
23
|
+
* Estrae l'estensione base da un'estensione che può includere firme digitali.
|
|
24
|
+
* Es: pdf.p7m.tsd → pdf, pdf.p7m → pdf, pdf → pdf
|
|
25
|
+
*/
|
|
26
|
+
export declare const getBaseExtension: (ext: string) => string;
|
|
4
27
|
export declare const getFileIcon: (fileExtension: string | undefined, fileCount: number | undefined, tooltipContent?: JSX.Element | string) => import("react/jsx-runtime").JSX.Element;
|
|
5
28
|
export declare function formatBytes(bytes: number | undefined, decimalPlaces?: number): string;
|
|
6
29
|
export interface RowData {
|
package/lib/helper/TMUtils.js
CHANGED
|
@@ -4,6 +4,61 @@ import { TMTooltip } from '../components';
|
|
|
4
4
|
import { IconCADossier, IconKey, IconMenuCAWorkingGroups } from './TMIcons';
|
|
5
5
|
import { AppModules, DataListCacheService, LicenseModuleStatus, MetadataDataDomains, PdGs, SDK_Globals } from '@topconsultnpm/sdk-ts';
|
|
6
6
|
import { SDKUI_Localizator } from './SDKUI_Localizator';
|
|
7
|
+
/**
|
|
8
|
+
* Estensioni di firma/marca temporale note che possono avvolgere altre estensioni.
|
|
9
|
+
* Es: file.pdf.p7m, file.xml.p7m, file.docx.p7m, file.xml.p7m.ts
|
|
10
|
+
*/
|
|
11
|
+
export const SIGNATURE_EXTENSIONS = new Set(['p7m', 'p7s', 'm7m', 'tsd', 'tsr', 'ts']);
|
|
12
|
+
/** Profondità massima di ricorsione per la ricerca di estensioni composite */
|
|
13
|
+
const MAX_EXTENSION_DEPTH = 5;
|
|
14
|
+
/**
|
|
15
|
+
* Estrae l'estensione completa da un nome file, gestendo estensioni composite
|
|
16
|
+
* a più livelli come .PDF.P7M, .XML.P7M.TS, etc.
|
|
17
|
+
*
|
|
18
|
+
* Esempi:
|
|
19
|
+
* - "documento.pdf" -> ".pdf"
|
|
20
|
+
* - "DCMT_123.PDF.P7M" -> ".PDF.P7M"
|
|
21
|
+
* - "fattura.xml.p7m" -> ".xml.p7m"
|
|
22
|
+
* - "example.XML.P7M.TS" -> ".XML.P7M.TS"
|
|
23
|
+
* - "file.tar.gz" -> ".gz" (tar.gz non è gestito come firma)
|
|
24
|
+
* - "file" -> ""
|
|
25
|
+
*/
|
|
26
|
+
export const getFullFileExtension = (fileName, depth = 0) => {
|
|
27
|
+
if (!fileName || depth > MAX_EXTENSION_DEPTH)
|
|
28
|
+
return '';
|
|
29
|
+
const lastDotIndex = fileName.lastIndexOf('.');
|
|
30
|
+
if (lastDotIndex <= 0)
|
|
31
|
+
return '';
|
|
32
|
+
const lastExtension = fileName.substring(lastDotIndex + 1).toLowerCase();
|
|
33
|
+
// Se l'ultima estensione è una firma/marca, cerca ricorsivamente le estensioni precedenti
|
|
34
|
+
if (SIGNATURE_EXTENSIONS.has(lastExtension)) {
|
|
35
|
+
const nameWithoutLastExt = fileName.substring(0, lastDotIndex);
|
|
36
|
+
const innerExtension = getFullFileExtension(nameWithoutLastExt, depth + 1);
|
|
37
|
+
if (innerExtension) {
|
|
38
|
+
// Concatena l'estensione interna con quella corrente
|
|
39
|
+
return innerExtension + fileName.substring(lastDotIndex);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Estensione singola (o estensione base dopo le firme)
|
|
43
|
+
return fileName.substring(lastDotIndex);
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Estrae l'estensione base da un'estensione che può includere firme digitali.
|
|
47
|
+
* Es: pdf.p7m.tsd → pdf, pdf.p7m → pdf, pdf → pdf
|
|
48
|
+
*/
|
|
49
|
+
export const getBaseExtension = (ext) => {
|
|
50
|
+
if (!ext)
|
|
51
|
+
return '';
|
|
52
|
+
const parts = ext.toLowerCase().split('.');
|
|
53
|
+
// Trova la prima parte che non è un'estensione di firma
|
|
54
|
+
for (const part of parts) {
|
|
55
|
+
if (!SIGNATURE_EXTENSIONS.has(part)) {
|
|
56
|
+
return part;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Se tutte sono firme, ritorna la prima
|
|
60
|
+
return parts[0] || '';
|
|
61
|
+
};
|
|
7
62
|
const StyledIconFileContainer = styled.div `
|
|
8
63
|
height: 22px;
|
|
9
64
|
width: 18px;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { AccessLevels, DcmtTypeDescriptor,
|
|
3
|
-
import { DcmtInfo
|
|
2
|
+
import { AccessLevels, DcmtTypeDescriptor, UserDescriptor } from "@topconsultnpm/sdk-ts";
|
|
3
|
+
import { DcmtInfo } from "../ts/types";
|
|
4
4
|
import { FileItem } from "../components";
|
|
5
|
+
import { DownloadDcmtsAsyncParams } from "../hooks/useDcmtOperations";
|
|
5
6
|
/**
|
|
6
7
|
* Check-in/Check-out Manager
|
|
7
8
|
* Questo modulo gestisce tutte le operazioni di check-in e check-out
|
|
@@ -42,7 +43,7 @@ export type DownloadSource = {
|
|
|
42
43
|
originalFileName: string;
|
|
43
44
|
};
|
|
44
45
|
export declare const getCicoDownloadFileName: (source: DownloadSource, checkout: boolean, withTimestampAndExt: boolean) => string;
|
|
45
|
-
export declare const cicoDownloadFilesCallback: (sources: Array<DownloadSource>, checkout: boolean, downloadDcmtsAsync: (
|
|
46
|
+
export declare const cicoDownloadFilesCallback: (sources: Array<DownloadSource>, checkout: boolean, downloadDcmtsAsync: (params: DownloadDcmtsAsyncParams) => Promise<void>) => Promise<void>;
|
|
46
47
|
export declare const updateCicoCheckoutStorageItem: (item: CheckoutInfo, type: "fileItem" | "dcmtInfo", action?: "addOrUpdate" | "remove") => void;
|
|
47
48
|
export declare const validateCicoFileName: (source: DownloadSource, fileName: string, checkoutDate?: string | null) => FileNameValidation;
|
|
48
49
|
type ValidationResult = {
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { AccessLevels, CICO_MetadataNames, SDK_Globals, SystemMIDsAsNumber } from "@topconsultnpm/sdk-ts";
|
|
3
3
|
import TMTooltip from "../components/base/TMTooltip";
|
|
4
4
|
import { dcmtsFileCachePreview, Globalization, removeDcmtsFileCache, SDKUI_Globals, SDKUI_Localizator } from "./index";
|
|
5
|
+
import { getBaseExtension, getFullFileExtension } from "./TMUtils";
|
|
5
6
|
import { DownloadTypes } from "../ts/types";
|
|
6
7
|
const findCheckOutUserName = (users, checkoutUserId) => {
|
|
7
8
|
let checkOutUser = users.find(user => user.id === checkoutUserId);
|
|
@@ -74,7 +75,7 @@ export const cicoDownloadFilesCallback = async (sources, checkout, downloadDcmts
|
|
|
74
75
|
}
|
|
75
76
|
});
|
|
76
77
|
if (files.length > 0) {
|
|
77
|
-
await downloadDcmtsAsync(files, DownloadTypes.Dcmt, "download");
|
|
78
|
+
await downloadDcmtsAsync({ inputDcmts: files, downloadType: DownloadTypes.Dcmt, downloadMode: "download", skipConfirmation: true, useInputFileName: true });
|
|
78
79
|
}
|
|
79
80
|
};
|
|
80
81
|
export const updateCicoCheckoutStorageItem = (item, type, action = "addOrUpdate") => {
|
|
@@ -128,13 +129,22 @@ export const validateCicoFileName = (source, fileName, checkoutDate) => {
|
|
|
128
129
|
did = DID;
|
|
129
130
|
ext = FILEEXT;
|
|
130
131
|
}
|
|
131
|
-
// Ensure originalName has the extension
|
|
132
|
-
const
|
|
133
|
-
const name = baseName.toLowerCase().endsWith(`.${
|
|
132
|
+
// Ensure originalName has the extension (use base extension for comparison)
|
|
133
|
+
const sourceBaseExt = getBaseExtension(ext ?? '');
|
|
134
|
+
const name = baseName.toLowerCase().endsWith(`.${sourceBaseExt}`) ? baseName : `${baseName}.${sourceBaseExt}`;
|
|
134
135
|
let fileNameToValidate = fileName;
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
136
|
+
// Estrai l'estensione completa (incluse eventuali firme digitali ricorsive es. pdf.p7m.tsd)
|
|
137
|
+
const fullExtension = getFullFileExtension(fileNameToValidate);
|
|
138
|
+
let fileExtensionCheck;
|
|
139
|
+
if (fullExtension) {
|
|
140
|
+
// Rimuovi l'estensione completa dal nome
|
|
141
|
+
fileNameToValidate = fileNameToValidate.slice(0, -fullExtension.length);
|
|
142
|
+
// L'estensione base è la prima parte (es. da ".pdf.p7m.tsd" prendi "pdf")
|
|
143
|
+
fileExtensionCheck = fullExtension.substring(1).split('.')[0];
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
fileExtensionCheck = '';
|
|
147
|
+
}
|
|
138
148
|
// Check and remove 'checkout~' prefix if present
|
|
139
149
|
const hasCheckoutPrefix = fileNameToValidate.startsWith('checkout~');
|
|
140
150
|
if (hasCheckoutPrefix) {
|
|
@@ -159,7 +169,7 @@ export const validateCicoFileName = (source, fileName, checkoutDate) => {
|
|
|
159
169
|
const isValidDid = didCheck ? did.toString() === parseInt(didCheck, 10).toString() : false;
|
|
160
170
|
const isValidTid = tidCheck ? tid.toString() === parseInt(tidCheck, 10).toString() : false;
|
|
161
171
|
const isValidArchive = archiveCheck ? archiveCheck === archiveID : false;
|
|
162
|
-
const isValidExt =
|
|
172
|
+
const isValidExt = sourceBaseExt ? sourceBaseExt === fileExtensionCheck.toLowerCase() : false;
|
|
163
173
|
// First phase validation result
|
|
164
174
|
const isFirstPhaseValid = !!(isValidName && isValidArchive && isValidDid && isValidTid && isValidExt);
|
|
165
175
|
// Second phase: validate checkoutDate timestamp (only if first phase passed and checkoutDate is a valid string)
|
|
@@ -177,11 +187,11 @@ export const validateCicoFileName = (source, fileName, checkoutDate) => {
|
|
|
177
187
|
else {
|
|
178
188
|
const pad = (n) => n.toString().padStart(2, '0');
|
|
179
189
|
const expectedTimestamp = `${dt.getFullYear()}${pad(dt.getMonth() + 1)}${pad(dt.getDate())}${pad(dt.getHours())}${pad(dt.getMinutes())}${pad(dt.getSeconds())}`;
|
|
180
|
-
isSecondPhaseValid = timestampCheck === expectedTimestamp;
|
|
181
190
|
// Format dates for display: readable date + (raw timestamp)
|
|
182
191
|
const expectedDisplayDate = Globalization.getDateTimeDisplayValue(dt);
|
|
183
192
|
// Parse timestampCheck to readable format (YYYYMMDDHHmmss -> Date)
|
|
184
193
|
let currentDisplayDate = timestampCheck;
|
|
194
|
+
let parsedDate = null;
|
|
185
195
|
if (timestampCheck && timestampCheck.length === 14) {
|
|
186
196
|
const year = parseInt(timestampCheck.substring(0, 4), 10);
|
|
187
197
|
const month = parseInt(timestampCheck.substring(4, 6), 10) - 1;
|
|
@@ -189,9 +199,17 @@ export const validateCicoFileName = (source, fileName, checkoutDate) => {
|
|
|
189
199
|
const hours = parseInt(timestampCheck.substring(8, 10), 10);
|
|
190
200
|
const minutes = parseInt(timestampCheck.substring(10, 12), 10);
|
|
191
201
|
const seconds = parseInt(timestampCheck.substring(12, 14), 10);
|
|
192
|
-
|
|
202
|
+
parsedDate = new Date(year, month, day, hours, minutes, seconds);
|
|
193
203
|
currentDisplayDate = Globalization.getDateTimeDisplayValue(parsedDate);
|
|
194
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
|
+
}
|
|
195
213
|
checkoutDateValidation = {
|
|
196
214
|
expected: `${expectedDisplayDate} (${expectedTimestamp})`,
|
|
197
215
|
current: `${currentDisplayDate} (${timestampCheck})`,
|
|
@@ -229,7 +247,7 @@ export const validateCicoFileName = (source, fileName, checkoutDate) => {
|
|
|
229
247
|
isValid: isValidTid
|
|
230
248
|
},
|
|
231
249
|
fileExtension: {
|
|
232
|
-
expected:
|
|
250
|
+
expected: sourceBaseExt,
|
|
233
251
|
current: fileExtensionCheck.toLowerCase(),
|
|
234
252
|
isValid: isValidExt
|
|
235
253
|
},
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { DcmtInfo
|
|
2
|
-
import {
|
|
1
|
+
import { DcmtInfo } from '../ts';
|
|
2
|
+
import { SearchResultDescriptor } from '@topconsultnpm/sdk-ts';
|
|
3
|
+
import { DownloadDcmtsAsyncParams } from './useDcmtOperations';
|
|
3
4
|
export interface UseCheckInOutOperationsProps {
|
|
4
5
|
onRefreshPreview: () => Promise<void>;
|
|
5
6
|
}
|
|
@@ -17,7 +18,7 @@ export interface UseCheckInOutOperationsReturn {
|
|
|
17
18
|
};
|
|
18
19
|
hideCommentFormCallback: () => void;
|
|
19
20
|
copyCheckoutPathToClipboardCallback: (dcmt: DcmtInfo, filename: string) => void;
|
|
20
|
-
handleCheckOutCallback: (dcmt: DcmtInfo, checkout: boolean, filename: string, downloadDcmtsAsync: (
|
|
21
|
+
handleCheckOutCallback: (dcmt: DcmtInfo, checkout: boolean, filename: string, downloadDcmtsAsync: (params: DownloadDcmtsAsyncParams) => Promise<void>, onRefreshAsync?: (tid: number | undefined, did: number | undefined, refreshUI?: boolean, metadataResult?: SearchResultDescriptor | null) => Promise<void>) => Promise<void>;
|
|
21
22
|
handleCheckInCallback: (dcmt: DcmtInfo, checkoutDate?: string | null, onRefreshAsync?: (tid: number | undefined, did: number | undefined, refreshUI?: boolean, metadataResult?: SearchResultDescriptor | null) => Promise<void>) => Promise<void>;
|
|
22
23
|
showCicoWaitPanel: boolean;
|
|
23
24
|
cicoWaitPanelTitle: string;
|
|
@@ -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
|
};
|
|
@@ -7,6 +7,23 @@ export interface RetrieveFormatOptions {
|
|
|
7
7
|
invoiceRetrieveFormat?: InvoiceRetrieveFormats;
|
|
8
8
|
orderRetrieveFormat?: OrderRetrieveFormats;
|
|
9
9
|
}
|
|
10
|
+
export interface DownloadDcmtsAsyncParams {
|
|
11
|
+
inputDcmts: DcmtInfo[] | undefined;
|
|
12
|
+
downloadType?: DownloadTypes;
|
|
13
|
+
downloadMode?: DownloadModes;
|
|
14
|
+
onFileDownloaded?: (dcmtFile: File, dcmtInfo: DcmtInfo) => void | Promise<void>;
|
|
15
|
+
confirmAttachments?: (list: FileDescriptor[]) => Promise<string[] | undefined>;
|
|
16
|
+
skipConfirmation?: boolean;
|
|
17
|
+
retrieveOptions?: RetrieveFormatOptions;
|
|
18
|
+
useCache?: boolean;
|
|
19
|
+
showSuccessAlert?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Controlla la priorità del nome file per il download:
|
|
22
|
+
* - true: usa il fileName da inputDcmts (dcmtInfo.fileName) come priorità
|
|
23
|
+
* - false (default): usa il nome file recuperato dal backend (file.name) come priorità
|
|
24
|
+
*/
|
|
25
|
+
useInputFileName?: boolean;
|
|
26
|
+
}
|
|
10
27
|
export interface UseDcmtOperationsReturn {
|
|
11
28
|
abortController: AbortController;
|
|
12
29
|
showWaitPanel: boolean;
|
|
@@ -19,7 +36,7 @@ export interface UseDcmtOperationsReturn {
|
|
|
19
36
|
waitPanelTextSecondary: string;
|
|
20
37
|
waitPanelValueSecondary: number;
|
|
21
38
|
waitPanelMaxValueSecondary: number;
|
|
22
|
-
downloadDcmtsAsync: (
|
|
39
|
+
downloadDcmtsAsync: (params: DownloadDcmtsAsyncParams) => Promise<void>;
|
|
23
40
|
getDcmtFileAsync: (inputDcmt: DcmtInfo | undefined, rfo: RetrieveFileOptions, operationTitle: string, keepWaitPanelPrimary: boolean, bypassCache?: boolean) => Promise<{
|
|
24
41
|
file: File | undefined;
|
|
25
42
|
isFromCache: boolean;
|
|
@@ -19,30 +19,72 @@ const isScannerLicenseConfigured = () => {
|
|
|
19
19
|
let abortController = new AbortController();
|
|
20
20
|
const downloadCountMap = new Map();
|
|
21
21
|
/**
|
|
22
|
-
* Genera il nome file per il download con
|
|
23
|
-
*
|
|
22
|
+
* Genera il nome file per il download con logica di priorità configurabile.
|
|
23
|
+
*
|
|
24
|
+
* @param file - File recuperato dal backend (può contenere il nome originale)
|
|
25
|
+
* @param dcmtInfo - Informazioni del documento (fileName, DID, FILEEXT)
|
|
26
|
+
* @param useInputFileName - Controlla la priorità del nome:
|
|
27
|
+
* - true: priorità a dcmtInfo.fileName → file.name → DID
|
|
28
|
+
* - false (default): priorità a file.name → dcmtInfo.fileName → DID
|
|
29
|
+
*
|
|
30
|
+
* Gestisce anche:
|
|
31
|
+
* - Aggiunta automatica dell'estensione se mancante
|
|
32
|
+
* - Duplicati per file con estensioni multiple (es: file.pdf.p7m)
|
|
24
33
|
*/
|
|
25
|
-
const getDownloadFileName = (file, dcmtInfo) => {
|
|
34
|
+
const getDownloadFileName = (file, dcmtInfo, useInputFileName = false) => {
|
|
26
35
|
// === FASE 1: Costruzione nome base con fallback ===
|
|
27
|
-
// Determina l'estensione con fallback
|
|
36
|
+
// Determina l'estensione con fallback: prima dal backend, poi dal documento
|
|
28
37
|
const fileExtFromBackend = file?.name?.split('.').pop()?.toLowerCase();
|
|
29
38
|
const fileExtFromDcmt = dcmtInfo.FILEEXT?.toLowerCase();
|
|
30
39
|
const fileExtension = fileExtFromBackend ?? fileExtFromDcmt ?? '';
|
|
31
40
|
let baseFileName;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Logica di priorità per il nome file:
|
|
43
|
+
*
|
|
44
|
+
* Se useInputFileName = true:
|
|
45
|
+
* 1. Usa dcmtInfo.fileName (nome passato nell'input)
|
|
46
|
+
* 2. Fallback a file.name (nome dal backend)
|
|
47
|
+
* 3. Fallback finale a DID
|
|
48
|
+
*
|
|
49
|
+
* Se useInputFileName = false (default):
|
|
50
|
+
* 1. Usa file.name (nome recuperato dal backend)
|
|
51
|
+
* 2. Fallback a dcmtInfo.fileName (nome salvato nel documento)
|
|
52
|
+
* 3. Fallback finale a DID
|
|
53
|
+
*/
|
|
54
|
+
if (useInputFileName) {
|
|
55
|
+
// Priorità al nome da inputDcmts (dcmtInfo.fileName)
|
|
56
|
+
if (dcmtInfo.fileName) {
|
|
57
|
+
const hasExtension = dcmtInfo.fileName.includes('.');
|
|
58
|
+
baseFileName = hasExtension
|
|
59
|
+
? dcmtInfo.fileName
|
|
60
|
+
: (fileExtension ? `${dcmtInfo.fileName}.${fileExtension}` : dcmtInfo.fileName);
|
|
61
|
+
}
|
|
62
|
+
// Seconda priorità: nome dal backend
|
|
63
|
+
else if (file?.name) {
|
|
64
|
+
baseFileName = file.name;
|
|
65
|
+
}
|
|
66
|
+
// Fallback finale: ID documento con estensione
|
|
67
|
+
else {
|
|
68
|
+
baseFileName = fileExtension ? `${dcmtInfo.DID}.${fileExtension}` : `${dcmtInfo.DID}`;
|
|
69
|
+
}
|
|
42
70
|
}
|
|
43
|
-
// 3. Fallback finale: ID documento con estensione
|
|
44
71
|
else {
|
|
45
|
-
|
|
72
|
+
// Comportamento default: priorità al nome dal backend
|
|
73
|
+
// 1. Priorità massima: nome dal backend
|
|
74
|
+
if (file?.name) {
|
|
75
|
+
baseFileName = file.name;
|
|
76
|
+
}
|
|
77
|
+
// 2. Seconda priorità: nome salvato nel documento
|
|
78
|
+
else if (dcmtInfo.fileName) {
|
|
79
|
+
const hasExtension = dcmtInfo.fileName.includes('.');
|
|
80
|
+
baseFileName = hasExtension
|
|
81
|
+
? dcmtInfo.fileName
|
|
82
|
+
: (fileExtension ? `${dcmtInfo.fileName}.${fileExtension}` : dcmtInfo.fileName);
|
|
83
|
+
}
|
|
84
|
+
// 3. Fallback finale: ID documento con estensione
|
|
85
|
+
else {
|
|
86
|
+
baseFileName = fileExtension ? `${dcmtInfo.DID}.${fileExtension}` : `${dcmtInfo.DID}`;
|
|
87
|
+
}
|
|
46
88
|
}
|
|
47
89
|
// === FASE 2: Gestione duplicati per file con estensioni multiple ===
|
|
48
90
|
const firstDot = baseFileName.indexOf('.');
|
|
@@ -75,7 +117,7 @@ export const useDcmtOperations = () => {
|
|
|
75
117
|
const [waitPanelMaxValueSecondary, setWaitPanelMaxValueSecondary] = useState(0);
|
|
76
118
|
const { OpenFileDialog } = useFileDialog();
|
|
77
119
|
const [selectFileSource, FileSourceDialog] = useFileSourceDialog();
|
|
78
|
-
const _downloadDcmtsAsync = async (inputDcmts, downloadMode = "download", onFileDownloaded, skipConfirmation = false, retrieveOptions, useCache = true, showSuccessAlert = true) => {
|
|
120
|
+
const _downloadDcmtsAsync = async (inputDcmts, downloadMode = "download", onFileDownloaded, skipConfirmation = false, retrieveOptions, useCache = true, showSuccessAlert = true, useInputFileName = false) => {
|
|
79
121
|
if (inputDcmts === undefined)
|
|
80
122
|
return;
|
|
81
123
|
if (inputDcmts.length <= 0)
|
|
@@ -159,7 +201,8 @@ export const useDcmtOperations = () => {
|
|
|
159
201
|
else {
|
|
160
202
|
const alink2 = document.createElement('a');
|
|
161
203
|
alink2.href = fileURL;
|
|
162
|
-
|
|
204
|
+
// Usa useInputFileName per determinare la priorità del nome file
|
|
205
|
+
alink2.download = getDownloadFileName(file, inputDcmts[i], useInputFileName);
|
|
163
206
|
alink2.target = "_blank";
|
|
164
207
|
alink2.rel = "noreferrer";
|
|
165
208
|
alink2.click();
|
|
@@ -251,11 +294,14 @@ export const useDcmtOperations = () => {
|
|
|
251
294
|
TMExceptionBoxManager.show({ exception: err });
|
|
252
295
|
}
|
|
253
296
|
};
|
|
254
|
-
const downloadDcmtsAsync = async (
|
|
297
|
+
const downloadDcmtsAsync = async (params) => {
|
|
298
|
+
const { inputDcmts, downloadType = DownloadTypes.Attachment, downloadMode = "download", onFileDownloaded, confirmAttachments, skipConfirmation = false, retrieveOptions, useCache = true, showSuccessAlert = true, useInputFileName = false, // Default: usa il nome dal backend
|
|
299
|
+
} = params;
|
|
255
300
|
switch (downloadType) {
|
|
256
|
-
|
|
301
|
+
// Per il download di documenti, passa useInputFileName per controllare la priorità del nome
|
|
302
|
+
case DownloadTypes.Dcmt: return await _downloadDcmtsAsync(inputDcmts, downloadMode, onFileDownloaded, skipConfirmation, retrieveOptions, useCache, showSuccessAlert, useInputFileName);
|
|
257
303
|
case DownloadTypes.Attachment: return await _downloadAttachmentsAsync(inputDcmts, confirmAttachments, showSuccessAlert);
|
|
258
|
-
default: return await _downloadDcmtsAsync(inputDcmts, undefined, undefined, skipConfirmation, retrieveOptions, useCache, showSuccessAlert);
|
|
304
|
+
default: return await _downloadDcmtsAsync(inputDcmts, undefined, undefined, skipConfirmation, retrieveOptions, useCache, showSuccessAlert, useInputFileName);
|
|
259
305
|
}
|
|
260
306
|
};
|
|
261
307
|
const uploadDcmtsAsync = async (inputDcmts, operationTitle, operType, actionAfterOperationAsync) => {
|
|
@@ -475,7 +475,7 @@ export const useDocumentOperations = (props) => {
|
|
|
475
475
|
icon: _jsx(IconDownload, {}),
|
|
476
476
|
operationType: 'multiRow',
|
|
477
477
|
disabled: dtd?.perm?.canRetrieveFile !== AccessLevels.Yes ? true : isDisabledForMultiRow(),
|
|
478
|
-
name: SDKUI_Localizator.DownloadFile, onClick: () => downloadDcmtsAsync(selectedDcmtInfos, DownloadTypes.Dcmt, "download",
|
|
478
|
+
name: SDKUI_Localizator.DownloadFile, onClick: () => downloadDcmtsAsync({ inputDcmts: selectedDcmtInfos, downloadType: DownloadTypes.Dcmt, downloadMode: "download", skipConfirmation: true })
|
|
479
479
|
};
|
|
480
480
|
};
|
|
481
481
|
const downloadXMLAttachmentsMenuItem = () => {
|
|
@@ -484,7 +484,7 @@ export const useDocumentOperations = (props) => {
|
|
|
484
484
|
icon: _jsx(IconDownload, {}),
|
|
485
485
|
operationType: 'singleRow',
|
|
486
486
|
disabled: !isXMLFileExt(selectedDcmtInfos?.[0]?.FILEEXT) ? true : isDisabledForSingleRow(),
|
|
487
|
-
name: SDKUI_Localizator.DownloadXMLAttachments, onClick: () => downloadDcmtsAsync(selectedDcmtInfos, DownloadTypes.Attachment, "download",
|
|
487
|
+
name: SDKUI_Localizator.DownloadXMLAttachments, onClick: () => downloadDcmtsAsync({ inputDcmts: selectedDcmtInfos, downloadType: DownloadTypes.Attachment, downloadMode: "download", confirmAttachments: openConfirmAttachmentsDialog, skipConfirmation: true })
|
|
488
488
|
};
|
|
489
489
|
};
|
|
490
490
|
const duplicateDocumentMenuItem = () => {
|
|
@@ -691,7 +691,7 @@ export const useDocumentOperations = (props) => {
|
|
|
691
691
|
rfo.cvtFormat = FileFormats.PDF;
|
|
692
692
|
rfo.invoiceRetrieveFormat = SDKUI_Globals.userSettings?.searchSettings.invoiceRetrieveFormat;
|
|
693
693
|
rfo.orderRetrieveFormat = SDKUI_Globals.userSettings?.searchSettings.orderRetrieveFormat;
|
|
694
|
-
await downloadDcmtsAsync(selectedDcmtInfos, DownloadTypes.Dcmt, "download", handlePrint,
|
|
694
|
+
await downloadDcmtsAsync({ inputDcmts: selectedDcmtInfos, downloadType: DownloadTypes.Dcmt, downloadMode: "download", onFileDownloaded: handlePrint, skipConfirmation: true, retrieveOptions: rfo, useCache: true, showSuccessAlert: false });
|
|
695
695
|
};
|
|
696
696
|
return {
|
|
697
697
|
id: 'print',
|
|
@@ -160,10 +160,10 @@ export const useRelatedDocuments = ({ selectedSearchResult, focusedItem, current
|
|
|
160
160
|
setCanArchiveDetailRelation(false);
|
|
161
161
|
return;
|
|
162
162
|
}
|
|
163
|
-
const detailRelations = relations.filter(r => r.detailTID === tid);
|
|
163
|
+
const detailRelations = relations.filter(r => r.detailTID === tid && r.relationType !== RelationTypes.ManyToMany);
|
|
164
164
|
const hasMasterWithAssociations = detailRelations.some(rel => rel.associations && rel.associations.length > 0);
|
|
165
165
|
setCanArchiveMasterRelation(hasMasterWithAssociations);
|
|
166
|
-
const masterRelations = relations.filter(r => r.masterTID === tid);
|
|
166
|
+
const masterRelations = relations.filter(r => r.masterTID === tid && r.relationType !== RelationTypes.ManyToMany);
|
|
167
167
|
const hasDetailWithAssociations = masterRelations.some(rel => rel.associations && rel.associations.length > 0);
|
|
168
168
|
setCanArchiveDetailRelation(hasDetailWithAssociations);
|
|
169
169
|
}
|
|
@@ -196,8 +196,8 @@ export const useRelatedDocuments = ({ selectedSearchResult, focusedItem, current
|
|
|
196
196
|
}, [selectedSearchResult?.fromTID]);
|
|
197
197
|
const filterRelationsByType = (relations, tid, type) => {
|
|
198
198
|
return type === 'detail'
|
|
199
|
-
? relations.filter(r => r.masterTID == tid)
|
|
200
|
-
: relations.filter(r => r.detailTID == tid);
|
|
199
|
+
? relations.filter(r => r.masterTID == tid && r.relationType !== RelationTypes.ManyToMany)
|
|
200
|
+
: relations.filter(r => r.detailTID == tid && r.relationType !== RelationTypes.ManyToMany);
|
|
201
201
|
};
|
|
202
202
|
const filterRelationsWithAssociations = (relations) => {
|
|
203
203
|
return relations.filter(rel => rel.associations && rel.associations.length > 0);
|
|
@@ -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").
|
|
4
|
-
static readonly retrieveAsync: (objClass: ObjectClasses, id: number) => Promise<import("@topconsultnpm/sdk-ts").
|
|
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>;
|
|
5
5
|
private static readonly retrieveAllAdminJobsAsync;
|
|
6
|
-
static readonly retrieveAllAdminAsync: (objClass: ObjectClasses, jobType?: JobTypes) => Promise<import("@topconsultnpm/sdk-ts").UserDescriptor[] |
|
|
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>;
|
|
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").
|
|
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>;
|
|
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;
|