diff --git a/src/frontend/app/actions/actions.service.ts b/src/frontend/app/actions/actions.service.ts index 446a12d83c598fe0d014e18c28172f4df95abaa3..dbb42cfcff22c4b4bb91b3b121f9a56b160c2805 100644 --- a/src/frontend/app/actions/actions.service.ts +++ b/src/frontend/app/actions/actions.service.ts @@ -25,6 +25,7 @@ import { SendShippingActionComponent } from './send-shipping-action/send-shippin import { redirectInitiatorEntityActionComponent } from './redirect-initiator-entity-action/redirect-initiator-entity-action.component'; import { Router } from '@angular/router'; import { SendSignatureBookActionComponent } from './send-signature-book-action/send-signature-book-action.component'; +import { ContinueVisaCircuitActionComponent } from './continue-visa-circuit-action/continue-visa-circuit-action.component'; @Injectable() export class ActionsService { @@ -553,6 +554,29 @@ export class ActionsService { sendSignatureBookAction(options: any = null) { const dialogRef = this.dialog.open(SendSignatureBookActionComponent, { + autoFocus: false, + disableClose: true, + data: this.setDatasActionToSend() + }); + dialogRef.afterClosed().pipe( + tap((data: any) => { + this.unlockResourceAfterActionModal(data); + }), + filter((data: string) => data === 'success'), + tap((result: any) => { + this.endAction(result); + }), + finalize(() => this.loading = false), + catchError((err: any) => { + this.notify.handleErrors(err); + return of(false); + }) + ).subscribe(); + } + + continueVisaCircuitAction(options: any = null) { + const dialogRef = this.dialog.open(ContinueVisaCircuitActionComponent, { + autoFocus: false, disableClose: true, data: this.setDatasActionToSend() }); diff --git a/src/frontend/app/actions/continue-visa-circuit-action/continue-visa-circuit-action.component.html b/src/frontend/app/actions/continue-visa-circuit-action/continue-visa-circuit-action.component.html new file mode 100644 index 0000000000000000000000000000000000000000..7fef51abd2751555822312bce74724b0b2003ab1 --- /dev/null +++ b/src/frontend/app/actions/continue-visa-circuit-action/continue-visa-circuit-action.component.html @@ -0,0 +1,47 @@ +<h1 mat-dialog-title>{{data.action.label}}</h1> +<div mat-dialog-content> + <div *ngIf="loading" class="loading" style="display:flex;height:100%;"> + <mat-spinner style="margin:auto;"></mat-spinner> + </div> + <mat-sidenav-container autosize style="height:100%;"> + <mat-sidenav-content style="background: white;padding:10px;"> + <div> + {{lang.makeActionOn}} + <b *ngIf="data.resIds.length === 0" color="primary" class="highlight">{{lang.currentIndexingMail}}</b> + <b *ngIf="data.resIds.length == 1" color="primary" class="highlight">{{data.resource.chrono}}</b> + <b *ngIf="data.resIds.length > 1" color="primary" class="highlight">{{data.resIds.length}} + {{lang.elements}}</b> ? + </div> + <div class="alert-message alert-message-info" *ngIf="data.resIds.length == 1 && appVisaWorkflow !== undefined && appVisaWorkflow.getNextVisaUser() !== ''" role="alert" style="margin-top: 30px;" + [innerHTML]="lang.sendToDocTo + ' <b>' + appVisaWorkflow.getNextVisaUser().labelToDisplay + '</b>'"></div> + + <div class="alert-message alert-message-info" *ngIf="data.resIds.length == 1 && appVisaWorkflow !== undefined && appVisaWorkflow.getNextVisaUser() === ''" role="alert" style="margin-top: 30px;" + [innerHTML]="lang.endWorkflow"></div> + + <div *ngIf="resourcesError.length > 0" class="alert-message alert-message-danger mailList" role="alert"> + <p> + {{lang.canNotMakeAction}} : + </p> + <ul> + <li *ngFor="let ressource of resourcesError"> + <b>{{ressource.alt_identifier}}</b> : {{lang[ressource.reason]}} + </li> + </ul> + </div> + <app-visa-workflow *ngIf="data.resIds.length == 1" [adminMode]="false" [resId]="data.resIds[0]" #appVisaWorkflow> + </app-visa-workflow> + <div style="padding-top: 10px;"> + <app-note-editor #noteEditor [resIds]="data.resIds"></app-note-editor> + </div> + </mat-sidenav-content> + <mat-sidenav position='end' [opened]="data.resIds.length === 1 && noResourceToProcess" mode="side" style="overflow-x:hidden;" + autoFocus="false" [ngStyle]="{'width': '400px'}"> + <app-attachments-list *ngIf="data.resIds.length === 1 && noResourceToProcess" [resId]="data.resIds[0]" (afterActionAttachment)="checkSignatureBook()"></app-attachments-list> + </mat-sidenav> + </mat-sidenav-container> +</div> +<div mat-dialog-actions class="actions"> + <button mat-raised-button mat-button color="primary" [disabled]="loading || !isValidAction()" + (click)="onSubmit()">{{lang.validate}}</button> + <button mat-raised-button mat-button [disabled]="loading" [mat-dialog-close]="">{{lang.cancel}}</button> +</div> \ No newline at end of file diff --git a/src/frontend/app/actions/continue-visa-circuit-action/continue-visa-circuit-action.component.scss b/src/frontend/app/actions/continue-visa-circuit-action/continue-visa-circuit-action.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..9424211bb4af9027d454165e7417bf86fb23c6eb --- /dev/null +++ b/src/frontend/app/actions/continue-visa-circuit-action/continue-visa-circuit-action.component.scss @@ -0,0 +1,128 @@ +@import '../../../css/vars.scss'; + +.fullHeight { + height: 70vh; +} + +.fullWidth { + width: 70vw; +} + +.highlight { + font-size: 110%; +} + +.loading { + display: flex; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: #ffffffb3; + z-index: 2; + overflow: hidden; +} + +.mailList { + ul { + font-size: 12px; + max-height: 100px; + overflow: auto; + padding-left: 25px; + padding-right: 5px; + padding-bottom: 10px; + margin-top: 10px; + } + + p { + //font-size: 18px; + margin: 0; + text-decoration: underline; + } + + b { + font-size: 120%; + } +} + +.formType { + align-items: center; + display: flex; + margin: 10px; + border-radius: 4px; + border: solid 1px #ccc; + position: relative; + padding: 10px; + + &-title { + white-space: pre; + overflow: hidden; + max-width: 85%; + text-overflow: ellipsis; + z-index: 1; + font-size: 10px; + font-weight: bold; + background: white; + position: absolute; + top: -7px; + left: 10px; + padding: 0px; + margin: 0px; + color: #135f7f; + } + + ::ng-deep.mat-form-field-suffix { + color: $secondary; + font-size: 15px; + top: 0; + } + + ::ng-deep.mat-form-field-wrapper { + padding: 0; + } +} + +.priceContent { + display: flex; + align-items: center; + justify-content: flex-end; + width: 100%; + + &-label { + text-align: right; + color: $primary; + flex: 1; + justify-content: flex-end; + display: flex; + padding-right: 10px; + } + + .mat-form-field { + width: 90px !important; + + input { + font-weight: bold; + user-select: none; + } + } +} + +.priceInfo { + padding-right: 20px; + font-size: 10px; + opacity: 0.5; + width: 100%; +} + +.pjList { + display: flex; + width: 100%; + overflow: auto; + flex-direction: column; + background: #666; + + img { + margin: 10px; + } +} \ No newline at end of file diff --git a/src/frontend/app/actions/continue-visa-circuit-action/continue-visa-circuit-action.component.ts b/src/frontend/app/actions/continue-visa-circuit-action/continue-visa-circuit-action.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..60131cc7c2b3d406d9f088b375e48ac0149c405f --- /dev/null +++ b/src/frontend/app/actions/continue-visa-circuit-action/continue-visa-circuit-action.component.ts @@ -0,0 +1,84 @@ +import { Component, OnInit, Inject, ViewChild } from '@angular/core'; +import { LANG } from '../../translate.component'; +import { NotificationService } from '../../notification.service'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { HttpClient } from '@angular/common/http'; +import { NoteEditorComponent } from '../../notes/note-editor.component'; +import { tap, finalize, catchError } from 'rxjs/operators'; +import { of } from 'rxjs'; +import { FunctionsService } from '../../../service/functions.service'; +import { VisaWorkflowComponent } from '../../visa/visa-workflow.component'; + +@Component({ + templateUrl: "continue-visa-circuit-action.component.html", + styleUrls: ['continue-visa-circuit-action.component.scss'], +}) +export class ContinueVisaCircuitActionComponent implements OnInit { + + lang: any = LANG; + loading: boolean = false; + + resourcesWarnings: any[] = []; + resourcesError: any[] = []; + + noResourceToProcess: boolean = null; + + @ViewChild('noteEditor', { static: true }) noteEditor: NoteEditorComponent; + @ViewChild('appVisaWorkflow', { static: false }) appVisaWorkflow: VisaWorkflowComponent; + + constructor( + public http: HttpClient, + private notify: NotificationService, + public dialogRef: MatDialogRef<ContinueVisaCircuitActionComponent>, + @Inject(MAT_DIALOG_DATA) public data: any, + public functions: FunctionsService) { } + + async ngOnInit(): Promise<void> { + this.loading = true; + await this.checkSignatureBook(); + this.loading = false; + } + + checkSignatureBook() { + this.resourcesError = []; + this.resourcesWarnings = []; + + return new Promise((resolve, reject) => { + this.http.post('../../rest/resourcesList/users/' + this.data.userId + '/groups/' + this.data.groupId + '/baskets/' + this.data.basketId + '/actions/' + this.data.action.id + '/checkContinueVisaCircuit', { resources: this.data.resIds }) + .subscribe((data: any) => { + console.log(data); + resolve(true); + }, (err: any) => { + this.notify.handleSoftErrors(err); + }); + }); + } + + async onSubmit() { + const realResSelected: number[] = this.data.resIds.filter((resId: any) => this.resourcesError.map(resErr => resErr.res_id).indexOf(resId) === -1); + this.executeAction(realResSelected); + } + + executeAction(realResSelected: number[]) { + + this.http.put(this.data.processActionRoute, {resources : realResSelected, note : this.noteEditor.getNoteContent()}).pipe( + tap((data: any) => { + if (!data) { + this.dialogRef.close('success'); + } + if (data && data.errors != null) { + this.notify.error(data.errors); + } + }), + finalize(() => this.loading = false), + catchError((err: any) => { + this.notify.handleErrors(err); + return of(false); + }) + ).subscribe(); + } + + isValidAction() { + return true; + } +} diff --git a/src/frontend/app/actions/send-signature-book-action/send-signature-book-action.component.ts b/src/frontend/app/actions/send-signature-book-action/send-signature-book-action.component.ts index 2e0bb00af9dcbf546af814c741a20d10d85d8475..e3aaa19e548e91b6cf53dc6069b378bcfbdfd375 100644 --- a/src/frontend/app/actions/send-signature-book-action/send-signature-book-action.component.ts +++ b/src/frontend/app/actions/send-signature-book-action/send-signature-book-action.component.ts @@ -26,19 +26,21 @@ export class SendSignatureBookActionComponent implements OnInit { @ViewChild('appVisaWorkflow', { static: false }) appVisaWorkflow: VisaWorkflowComponent; constructor( - public http: HttpClient, - private notify: NotificationService, - public dialogRef: MatDialogRef<SendSignatureBookActionComponent>, + public http: HttpClient, + private notify: NotificationService, + public dialogRef: MatDialogRef<SendSignatureBookActionComponent>, @Inject(MAT_DIALOG_DATA) public data: any, public functions: FunctionsService) { } async ngOnInit(): Promise<void> { - this.loading = true; - await this.checkSignatureBook(); - this.loading = false; - await this.appVisaWorkflow.loadWorkflow(this.data.resIds[0]); - if (this.appVisaWorkflow.emptyWorkflow()) { - this.appVisaWorkflow.loadDefaultWorkflow(this.data.resIds[0]); + if (this.data.resIds.length > 0) { + this.loading = true; + await this.checkSignatureBook(); + this.loading = false; + await this.appVisaWorkflow.loadWorkflow(this.data.resIds[0]); + if (this.appVisaWorkflow.emptyWorkflow()) { + this.appVisaWorkflow.loadDefaultWorkflow(this.data.resIds[0]); + } } } @@ -47,25 +49,31 @@ export class SendSignatureBookActionComponent implements OnInit { return new Promise((resolve, reject) => { this.http.post('../../rest/resourcesList/users/' + this.data.userId + '/groups/' + this.data.groupId + '/baskets/' + this.data.basketId + '/actions/' + this.data.action.id + '/checkSignatureBook', { resources: this.data.resIds }) - .subscribe((data: any) => { - if (!this.functions.empty(data.resourcesInformations.noAttachment)) { - this.resourcesError = data.resourcesInformations.noAttachment; - } - this.noResourceToProcess = this.data.resIds.length === this.resourcesError.length; - resolve(true); - }, (err: any) => { - this.notify.handleSoftErrors(err); - }); + .subscribe((data: any) => { + if (!this.functions.empty(data.resourcesInformations.noAttachment)) { + this.resourcesError = data.resourcesInformations.noAttachment; + } + this.noResourceToProcess = this.data.resIds.length === this.resourcesError.length; + resolve(true); + }, (err: any) => { + this.notify.handleSoftErrors(err); + }); }); } async onSubmit() { this.loading = true; - if ( this.data.resIds.length === 0) { - // this.indexDocumentAndExecuteAction(); + if (this.data.resIds.length === 0) { + let res = await this.indexDocument(); + if (res) { + res = await this.appVisaWorkflow.saveVisaWorkflow(this.data.resIds); + } + if (res) { + this.executeAction(this.data.resIds); + } } else { const realResSelected: number[] = this.data.resIds.filter((resId: any) => this.resourcesError.map(resErr => resErr.res_id).indexOf(resId) === -1); - + const res = await this.appVisaWorkflow.saveVisaWorkflow(realResSelected); if (res) { @@ -75,27 +83,25 @@ export class SendSignatureBookActionComponent implements OnInit { this.loading = false; } - /* indexDocumentAndExecuteAction() { - - this.http.post('../../rest/resources', this.data.resource).pipe( - tap((data: any) => { - this.data.resIds = [data.resId]; - }), - exhaustMap(() => this.http.put(this.data.indexActionRoute, {resource : this.data.resIds[0], note : this.noteEditor.getNoteContent()})), - tap(() => { - this.dialogRef.close('success'); - }), - finalize(() => this.loading = false), - catchError((err: any) => { - this.notify.handleErrors(err); - return of(false); - }) - ).subscribe() - } */ + indexDocument() { + return new Promise((resolve, reject) => { + this.http.post('../../rest/resources', this.data.resource).pipe( + tap((data: any) => { + this.data.resIds = [data.resId]; + resolve(true); + }), + catchError((err: any) => { + this.notify.handleErrors(err); + resolve(false); + return of(false); + }) + ).subscribe(); + }); + } executeAction(realResSelected: number[]) { - this.http.put(this.data.processActionRoute, {resources : realResSelected, note : this.noteEditor.getNoteContent()}).pipe( + this.http.put(this.data.processActionRoute, { resources: realResSelected, note: this.noteEditor.getNoteContent() }).pipe( tap((data: any) => { if (!data) { this.dialogRef.close('success'); diff --git a/src/frontend/app/app.module.ts b/src/frontend/app/app.module.ts index d33d36f3ac7ac9d8708695667e902d529d322d57..b2fcc3dcd1a862e2e12949191435ebedd89ea3c6 100755 --- a/src/frontend/app/app.module.ts +++ b/src/frontend/app/app.module.ts @@ -57,6 +57,7 @@ import { RedirectActionComponent } from './actions/redirect-action import { SendShippingActionComponent } from './actions/send-shipping-action/send-shipping-action.component'; import { redirectInitiatorEntityActionComponent } from './actions/redirect-initiator-entity-action/redirect-initiator-entity-action.component'; import { SendSignatureBookActionComponent } from './actions/send-signature-book-action/send-signature-book-action.component'; +import { ContinueVisaCircuitActionComponent } from './actions/continue-visa-circuit-action/continue-visa-circuit-action.component'; import { FiltersListComponent } from './list/filters/filters-list.component'; import { FiltersToolComponent } from './list/filters/filters-tool.component'; @@ -149,6 +150,7 @@ import { AddAvisModelModalComponent } from './avis/addAvisModel/add-avis-model-m SendShippingActionComponent, redirectInitiatorEntityActionComponent, SendSignatureBookActionComponent, + ContinueVisaCircuitActionComponent, ActionsListComponent, PrintSeparatorComponent, FolderPinnedComponent, @@ -198,6 +200,7 @@ import { AddAvisModelModalComponent } from './avis/addAvisModel/add-avis-model-m UpdateDepartureDateActionComponent, SendExternalSignatoryBookActionComponent, SendExternalNoteBookActionComponent, + ContinueVisaCircuitActionComponent, ProcessActionComponent, RedirectActionComponent, SendShippingActionComponent, diff --git a/src/frontend/app/avis/avis-workflow.component.ts b/src/frontend/app/avis/avis-workflow.component.ts index 2af2852be81bdee928cae15009b4aa8f3fc8052c..f212d19468e497fd0d212048a4cab91cc7b195d4 100644 --- a/src/frontend/app/avis/avis-workflow.component.ts +++ b/src/frontend/app/avis/avis-workflow.component.ts @@ -249,8 +249,8 @@ export class AvisWorkflowComponent implements OnInit { return of(false); }) ).subscribe(); - } else { - this.http.put(`../../rest/listinstances`, [{ resId: this.resId, listInstances: this.avisWorkflow.items }]).pipe( + } else { + this.http.put(`../../rest/listinstances`, {resources: [{ resId: this.resId, listInstances: this.avisWorkflow.items }]} ).pipe( tap((data: any) => { this.avisWorkflowClone = JSON.parse(JSON.stringify(this.avisWorkflow.items)); this.notify.success(this.lang.avisWorkflowUpdated); diff --git a/src/frontend/app/visa/visa-workflow.component.html b/src/frontend/app/visa/visa-workflow.component.html index 4da43987eedbea8ba95405720c4497b7094e829e..dbabf5344ef934dce52374bf24de4288330ef2d9 100644 --- a/src/frontend/app/visa/visa-workflow.component.html +++ b/src/frontend/app/visa/visa-workflow.component.html @@ -54,6 +54,8 @@ [cdkDragDisabled]="!adminMode || !functions.empty(diffusion.process_date)" [class.notDraggable]="!adminMode || !functions.empty(diffusion.process_date)" [class.notEditable]="!adminMode" [class.processed]="diffusion.process_date != null"> + <mat-icon *ngIf="getCurrentVisaUser().item_id === diffusion.item_id" class="fa fa-chevron-right fa-2x" mat-list-icon color="accent"> + </mat-icon> <mat-icon [ngClass]="{'fa fa-user fa-2x': functions.empty(diffusion.picture),'avatar': !functions.empty(diffusion.picture)}" mat-list-icon color="primary" diff --git a/src/frontend/app/visa/visa-workflow.component.ts b/src/frontend/app/visa/visa-workflow.component.ts index d582ec9f34835858fd1d0fd8665bf8d4fefd23d3..c0f98a9c35c840a56fd314744ee95d4b4b207775 100644 --- a/src/frontend/app/visa/visa-workflow.component.ts +++ b/src/frontend/app/visa/visa-workflow.component.ts @@ -177,11 +177,11 @@ export class VisaWorkflowComponent implements OnInit { if (!this.linkedToMaarchParapheur) { if (this.visaModelListNotLoaded) { await this.loadVisaSignUsersList(); - + await this.loadVisaModelListByResource(); - + this.searchVisaSignUser.reset(); - + this.visaModelListNotLoaded = false; } } @@ -220,29 +220,29 @@ export class VisaWorkflowComponent implements OnInit { this.visaWorkflow.items = []; return new Promise((resolve, reject) => { this.http.get("../../rest/resources/" + resId + "/visaCircuit") - .subscribe((data: any) => { - data.forEach((element: any) => { - this.visaWorkflow.items.push( - { - ...element, - difflist_type: 'VISA_CIRCUIT' - }); + .subscribe((data: any) => { + data.forEach((element: any) => { + this.visaWorkflow.items.push( + { + ...element, + difflist_type: 'VISA_CIRCUIT' + }); + }); + this.visaWorkflowClone = JSON.parse(JSON.stringify(this.visaWorkflow.items)) + this.loading = false; + resolve(true); + }, (err: any) => { + this.notify.handleErrors(err); }); - this.visaWorkflowClone = JSON.parse(JSON.stringify(this.visaWorkflow.items)) - this.loading = false; - resolve(true); - }, (err: any) => { - this.notify.handleErrors(err); - }); - }); + }); } loadDefaultWorkflow(resId: number) { this.loading = true; this.visaWorkflow.items = []; - this.http.get("../../rest/resources/" + resId + "/visaCircuit") + this.http.get("../../rest/resources/" + resId + "/defaultCircuit?circuit=visaCircuit") .subscribe((data: any) => { - data.forEach((element: any) => { + data.circuit.items.forEach((element: any) => { this.visaWorkflow.items.push( { ...element, @@ -299,6 +299,26 @@ export class VisaWorkflowComponent implements OnInit { return this.visaWorkflow.items; } + getCurrentVisaUser() { + + const index = this.visaWorkflow.items.map((item: any) => item.listinstance_id).indexOf(this.getLastVisaUser().listinstance_id); + + return !this.functions.empty(this.visaWorkflow.items[index + 1]) ? this.visaWorkflow.items[index + 1] : ''; + } + + getNextVisaUser() { + + const index = this.visaWorkflow.items.map((item: any) => item.listinstance_id).indexOf(this.getLastVisaUser().listinstance_id); + + return !this.functions.empty(this.visaWorkflow.items[index + 2]) ? this.visaWorkflow.items[index + 2] : ''; + } + + getLastVisaUser() { + let arrOnlyProcess = this.visaWorkflow.items.filter((item: any) => !this.functions.empty(item.process_date)); + + return !this.functions.empty(arrOnlyProcess[arrOnlyProcess.length - 1]) ? arrOnlyProcess[arrOnlyProcess.length - 1] : ''; + } + checkExternalSignatoryBook() { return this.visaWorkflow.items.filter((item: any) => this.functions.empty(item.externalId)).map((item: any) => item.labelToDisplay); } @@ -320,11 +340,11 @@ export class VisaWorkflowComponent implements OnInit { } else if (this.isValidWorkflow()) { const arrVisa = resIds.map(resId => { return { - resId : resId, - listInstances : this.visaWorkflow.items + resId: resId, + listInstances: this.visaWorkflow.items } }); - this.http.put(`../../rest/listinstances`, arrVisa).pipe( + this.http.put(`../../rest/circuits/visaCircuit`, { resources: arrVisa }).pipe( tap((data: any) => { this.visaWorkflowClone = JSON.parse(JSON.stringify(this.visaWorkflow.items)); this.notify.success(this.lang.visaWorkflowUpdated); @@ -339,7 +359,7 @@ export class VisaWorkflowComponent implements OnInit { this.notify.error(this.lang.signUserRequired); resolve(false); } - }); + }); } addItemToWorkflow(item: any, maarchParapheurMode = false) { @@ -358,8 +378,8 @@ export class VisaWorkflowComponent implements OnInit { this.getMaarchParapheurUserAvatar(item.externalId.maarchParapheur, this.visaWorkflow.items.length - 1); } } else if (item.type === 'user') { - - + + this.visaWorkflow.items.push({ item_id: item.id, item_type: 'user', @@ -387,7 +407,7 @@ export class VisaWorkflowComponent implements OnInit { item_entity: itemTemplate.descriptionToDisplay, difflist_type: 'VISA_CIRCUIT', signatory: false, - requested_signature: false + requested_signature: itemTemplate.item_mode === 'sign' ? true : false } }) ); diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts index 4a843bf454e047c5d73a6f69b0f734b1c426fa19..e1a43a254932424f5667db5a749367bbbdca26e1 100755 --- a/src/frontend/lang/lang-en.ts +++ b/src/frontend/lang/lang-en.ts @@ -1406,7 +1406,7 @@ export const LANG_EN = { "closeFullscreen" : "Disable fullscreen", "hasNoEntity": "Those mails do not have initiator entity", "destUserSetToDefault": "Assignee will be the assignee of the initiator entity template list", - "resetVisaWorkflow": "Processing date will be reset", "interruptVisaWorkflow": "The following users will not be able to target mail", "rejectVisaBack": "Document will be send to the previous user", + "sendToDocTo": "You will send this document to", }; diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts index 33a119c02619e7a4da5833a1eda86f2531673e5c..2afce0a05ee42d230a24378be22936f6dbc80a50 100755 --- a/src/frontend/lang/lang-fr.ts +++ b/src/frontend/lang/lang-fr.ts @@ -1449,4 +1449,6 @@ export const LANG_FR = { "resetVisaWorkflow": "Les dates de visa et signature seront réinitialisées", "interruptVisaWorkflow": "Les utilisateurs suivants ne pourront pas viser le courrier", "rejectVisaBack": "Le courrier sera envoyé à la dernière personne ayant visé", + "sendToDocTo": "Vous allez transmettre ce document à ", + "endWorkflow": "Vous allez terminer le circuit", }; diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts index 849ef8e846a03fd314001a47a3f7e963eb65fdc6..812923c7e2436d65bf5fd840aee592b59f5650a2 100755 --- a/src/frontend/lang/lang-nl.ts +++ b/src/frontend/lang/lang-nl.ts @@ -1434,4 +1434,6 @@ export const LANG_NL = { "resetVisaWorkflow": "Processing date will be reset", //_TO_TRANSLATE "interruptVisaWorkflow": "The following users will not be able to target mail", //_TO_TRANSLATE "rejectVisaBack": "Document will be send to the previous user", //_TO_TRANSLATE + "sendToDocTo": "You will send this document to", //_TO_TRANSLATE + "endWorkflow": "You will end this workflow", //_TO_TRANSLATE };