@projectcaluma/ember-distribution 11.0.0-beta.27 → 11.0.0-beta.29

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,6 +7,7 @@ const hasStatus = (status) => (edge) => edge.node.status === status;
7
7
 
8
8
  export default class DistributionAbility extends Ability {
9
9
  @service distribution;
10
+ @service calumaOptions;
10
11
 
11
12
  @config config;
12
13
 
@@ -43,6 +44,9 @@ export default class DistributionAbility extends Ability {
43
44
  return (
44
45
  !this.config.ui.readonly &&
45
46
  (this.config.permissions.reopenDistribution?.() ?? true) &&
47
+ this.distribution.controls.value?.case.edges[0]?.node.parentWorkItem.addressedGroups
48
+ .map(String)
49
+ .includes(String(this.calumaOptions.currentGroupId)) &&
46
50
  this.distribution.controls.value?.case.edges[0]?.node.parentWorkItem
47
51
  .isRedoable
48
52
  );
@@ -1,5 +1,6 @@
1
1
  import { inject as service } from "@ember/service";
2
2
  import { Ability } from "ember-can";
3
+ import { DateTime } from "luxon";
3
4
 
4
5
  import config from "@projectcaluma/ember-distribution/config";
5
6
 
@@ -60,10 +61,28 @@ export default class InquiryAbility extends Ability {
60
61
  get canReopen() {
61
62
  return (
62
63
  this.model.isRedoable &&
63
- this.model?.addressedGroups
64
+ this.model?.controllingGroups
64
65
  .map(String)
65
66
  .includes(String(this.calumaOptions.currentGroupId)) &&
66
67
  (this.config.permissions.reopenInquiry?.(this.model) ?? true)
67
68
  );
68
69
  }
70
+
71
+ get canSendReminder() {
72
+ const deadline = DateTime.fromISO(
73
+ this.model.document?.deadline.edges[0]?.node.value
74
+ );
75
+
76
+ return (
77
+ !this.config.ui.readonly &&
78
+ this.config.enableReminders &&
79
+ this.model?.task.slug === this.config.inquiry.task &&
80
+ this.model?.status === "READY" &&
81
+ this.model?.controllingGroups
82
+ .map(String)
83
+ .includes(String(this.calumaOptions.currentGroupId)) &&
84
+ deadline.diffNow("days").days <= 0 &&
85
+ (this.config.permissions.sendReminder?.(this.model) ?? true)
86
+ );
87
+ }
69
88
  }
@@ -1,6 +1,9 @@
1
1
  <p class="uk-text-large uk-margin-remove uk-flex uk-flex-middle">
2
2
  <div class="uk-width-expand">
3
3
  {{@name}}
4
+ {{#if @group}}
5
+ ({{group-name @group}})
6
+ {{/if}}
4
7
  {{#if @status}}
5
8
  <UkLabel @label={{@status}} class="uk-margin-left" />
6
9
  {{/if}}
@@ -85,6 +85,39 @@
85
85
  </li>
86
86
  {{/if}}
87
87
  {{/unless}}
88
+ {{#if (can "send reminder inquiry" @inquiry)}}
89
+ <li>
90
+ <a
91
+ data-test-send-reminder
92
+ href=""
93
+ {{on "click" (perform this.sendReminder)}}
94
+ >
95
+ {{t "caluma.distribution.reminder.link"}}
96
+ </a>
97
+ <div
98
+ uk-dropdown="mode: hover; pos: bottom"
99
+ class="uk-padding-small uk-width-small"
100
+ >
101
+ <div class="uk-text-center uk-text-bold uk-margin-small-bottom">
102
+ {{t "caluma.distribution.reminder.title"}}
103
+ </div>
104
+ {{#if @inquiry.meta.reminders}}
105
+ <div class="uk-height-max-small uk-overflow-auto">
106
+ {{#each @inquiry.meta.reminders as |reminder|}}
107
+ <div class="uk-text-center uk-text-small uk-text-muted">
108
+ {{format-date reminder}}
109
+ {{format-time reminder hour="2-digit" minute="2-digit"}}
110
+ </div>
111
+ {{/each}}
112
+ </div>
113
+ {{else}}
114
+ <div class="uk-text-center">
115
+ {{t "caluma.distribution.reminder.no-reminders"}}
116
+ </div>
117
+ {{/if}}
118
+ </div>
119
+ </li>
120
+ {{/if}}
88
121
  </ul>
89
122
 
90
123
  {{#if this.requestInfo}}
@@ -4,10 +4,12 @@ import Component from "@glimmer/component";
4
4
  import { queryManager } from "ember-apollo-client";
5
5
  import { dropTask } from "ember-concurrency";
6
6
  import { confirm } from "ember-uikit";
7
+ import { DateTime } from "luxon";
7
8
 
8
9
  import { decodeId } from "@projectcaluma/ember-core/helpers/decode-id";
9
10
  import config from "@projectcaluma/ember-distribution/config";
10
11
  import reopenInquiryMutation from "@projectcaluma/ember-distribution/gql/mutations/reopen-inquiry.graphql";
12
+ import updateInquiryMetaMutation from "@projectcaluma/ember-distribution/gql/mutations/update-inquiry-meta.graphql";
11
13
  import withdrawInquiryMutation from "@projectcaluma/ember-distribution/gql/mutations/withdraw-inquiry.graphql";
12
14
  import inquiryAnswerStatus from "@projectcaluma/ember-distribution/utils/inquiry-answer-status";
13
15
 
@@ -15,6 +17,7 @@ export default class CdInquiryDialogInquiryPartComponent extends Component {
15
17
  @service notification;
16
18
  @service router;
17
19
  @service intl;
20
+ @service calumaOptions;
18
21
 
19
22
  @queryManager apollo;
20
23
 
@@ -103,4 +106,41 @@ export default class CdInquiryDialogInquiryPartComponent extends Component {
103
106
  );
104
107
  }
105
108
  }
109
+
110
+ @dropTask
111
+ *sendReminder(e) {
112
+ e.preventDefault();
113
+
114
+ if (!(yield confirm(this.intl.t("caluma.distribution.reminder.confirm")))) {
115
+ return;
116
+ }
117
+
118
+ try {
119
+ yield this.calumaOptions.sendReminderDistributionInquiry(
120
+ decodeId(this.args.inquiry.id)
121
+ );
122
+
123
+ this.notification.success(
124
+ this.intl.t("caluma.distribution.reminder.success")
125
+ );
126
+
127
+ yield this.apollo.mutate({
128
+ mutation: updateInquiryMetaMutation,
129
+ variables: {
130
+ inquiry: decodeId(this.args.inquiry.id),
131
+ meta: JSON.stringify({
132
+ ...this.args.inquiry.meta,
133
+ reminders: [
134
+ DateTime.now().toISO(),
135
+ ...(this.args.inquiry.meta.reminders ?? []),
136
+ ],
137
+ }),
138
+ },
139
+ });
140
+ } catch (error) {
141
+ this.notification.danger(
142
+ this.intl.t("caluma.distribution.reminder.error")
143
+ );
144
+ }
145
+ }
106
146
  }
@@ -52,8 +52,6 @@ export default class CdInquiryDialogComponent extends Component {
52
52
  },
53
53
  });
54
54
 
55
- this._setRedoableStates(response.allWorkItems);
56
-
57
55
  /**
58
56
  * Sadly this is necessary to handle what happens after the withdraw task in
59
57
  * the inquiry part component because the mutation triggers a refresh of the
@@ -70,39 +68,11 @@ export default class CdInquiryDialogComponent extends Component {
70
68
  if (allWorkItems.edges.every((edge) => edge.node.status === "CANCELED")) {
71
69
  this.router.transitionTo("index");
72
70
  }
73
-
74
- /**
75
- * Get work item that was redoable in the previous calulation and is now
76
- * not anymore. This indicates that the work item was redone which should
77
- * result in a transition to the answer view.
78
- */
79
- const redoneWorkItem = this._redoableStates.find((stateObj) => {
80
- const updatedWorkItem = allWorkItems.edges.find(
81
- (edge) => decodeId(edge.node.id) === stateObj.id
82
- );
83
-
84
- return (
85
- stateObj.isRedoable && !(updatedWorkItem?.node.isRedoable ?? true)
86
- );
87
- });
88
-
89
- if (redoneWorkItem) {
90
- this.router.transitionTo("inquiry.detail.answer", redoneWorkItem.id);
91
- }
92
-
93
- this._setRedoableStates(allWorkItems);
94
71
  });
95
72
 
96
73
  return response;
97
74
  }
98
75
 
99
- _setRedoableStates(allWorkItems) {
100
- this._redoableStates = allWorkItems.edges.map((edge) => ({
101
- id: decodeId(edge.node.id),
102
- isRedoable: edge.node.isRedoable,
103
- }));
104
- }
105
-
106
76
  @dropTask
107
77
  *createInquiry(e) {
108
78
  e.preventDefault();
@@ -6,6 +6,7 @@
6
6
  <:default as |content|>
7
7
  <CdDocumentHeader
8
8
  @name={{content.document.rootForm.raw.name}}
9
+ @group={{this.inquiry.addressedGroups}}
9
10
  @status={{if
10
11
  (eq this.inquiry.status "SUSPENDED")
11
12
  (t "caluma.distribution.status.draft")
@@ -43,6 +44,14 @@
43
44
  >{{t "caluma.distribution.edit.send"}}</UkButton>
44
45
  </DocumentValidity>
45
46
  {{/if}}
47
+ {{#if (can "answer inquiry" this.inquiry)}}
48
+ <LinkTo
49
+ @route="inquiry.detail.answer"
50
+ class="uk-button uk-button-primary"
51
+ >
52
+ {{t "caluma.distribution.answer.link"}}
53
+ </LinkTo>
54
+ {{/if}}
46
55
  </:default>
47
56
  <:notfound><CdNotfound /></:notfound>
48
57
  </CfContent>
@@ -1,18 +1,8 @@
1
1
  <div class="uk-text-center uk-margin-small-top">
2
- {{#if (can "create inquiry of distribution")}}
3
- <LinkTo
4
- @route="new"
5
- class="uk-icon-button"
6
- {{uk-tooltip (t "caluma.distribution.new.title")}}
7
- data-test-new-inquiry
8
- >
9
- <UkIcon @icon="plus" />
10
- </LinkTo>
11
- {{/if}}
12
2
  {{#if (can "send inquiries of distribution")}}
13
3
  <button
14
4
  type="button"
15
- class="uk-icon-button"
5
+ class="uk-icon-button uk-button-primary"
16
6
  {{uk-tooltip (t "caluma.distribution.send")}}
17
7
  data-test-send-pending-inquiries
18
8
  {{on "click" (perform this.sendInquiries)}}
@@ -24,18 +14,38 @@
24
14
  {{/if}}
25
15
  </button>
26
16
  {{/if}}
17
+ {{#if (can "create inquiry of distribution")}}
18
+ <LinkTo
19
+ @route="new"
20
+ class="uk-icon-button"
21
+ {{uk-tooltip (t "caluma.distribution.new.title")}}
22
+ data-test-new-inquiry
23
+ >
24
+ <UkIcon @icon="plus" />
25
+ </LinkTo>
26
+ {{/if}}
27
27
  {{#if (can "complete distribution")}}
28
28
  <button
29
29
  type="button"
30
30
  class="uk-icon-button"
31
- {{uk-tooltip (t "caluma.distribution.complete")}}
31
+ {{uk-tooltip
32
+ (t
33
+ (if
34
+ this.hasInquiries
35
+ "caluma.distribution.complete"
36
+ "caluma.distribution.skip"
37
+ )
38
+ )
39
+ }}
32
40
  data-test-complete-distribution
33
41
  {{on "click" (perform this.completeDistribution)}}
34
42
  >
35
43
  {{#if this.completeDistribution.isRunning}}
36
44
  <UkSpinner @ratio={{0.6}} />
37
- {{else}}
45
+ {{else if this.hasInquiries}}
38
46
  <UkIcon @icon="lock" />
47
+ {{else}}
48
+ <UkIcon @icon="forward" />
39
49
  {{/if}}
40
50
  </button>
41
51
  {{/if}}
@@ -20,26 +20,38 @@ export default class CdNavigationControlsComponent extends Component {
20
20
  @queryManager apollo;
21
21
  @config config;
22
22
 
23
+ get hasInquiries() {
24
+ return (
25
+ this.distribution.navigation.value?.addressed.edges.length > 0 ||
26
+ this.distribution.navigation.value?.controlling.edges.length > 0 ||
27
+ this.distribution.navigation.value?.more.edges.length > 0
28
+ );
29
+ }
30
+
23
31
  @dropTask
24
32
  *completeDistribution() {
25
33
  try {
26
- const incompleteInquiries = yield this.apollo.query(
27
- {
28
- query: incompleteInquiriesQuery,
29
- variables: {
30
- caseId: this.distribution.caseId,
31
- task: this.config.inquiry.task,
34
+ let confirmText = this.intl.t("caluma.distribution.skip-confirm");
35
+
36
+ if (this.hasInquiries) {
37
+ const incompleteInquiries = yield this.apollo.query(
38
+ {
39
+ query: incompleteInquiriesQuery,
40
+ variables: {
41
+ caseId: this.distribution.caseId,
42
+ task: this.config.inquiry.task,
43
+ },
32
44
  },
33
- },
34
- "allWorkItems.totalCount"
35
- );
36
-
37
- const confirmText =
38
- incompleteInquiries === 0
39
- ? this.intl.t("caluma.distribution.complete-confirm-empty")
40
- : this.intl.t("caluma.distribution.complete-confirm", {
41
- count: incompleteInquiries,
42
- });
45
+ "allWorkItems.totalCount"
46
+ );
47
+
48
+ confirmText =
49
+ incompleteInquiries === 0
50
+ ? this.intl.t("caluma.distribution.complete-confirm-empty")
51
+ : this.intl.t("caluma.distribution.complete-confirm", {
52
+ count: incompleteInquiries,
53
+ });
54
+ }
43
55
 
44
56
  if (!(yield confirm(confirmText))) {
45
57
  return;
@@ -55,6 +67,8 @@ export default class CdNavigationControlsComponent extends Component {
55
67
  },
56
68
  });
57
69
 
70
+ yield this.config.hooks.postCompleteDistribution?.();
71
+
58
72
  yield this.distribution.refetch();
59
73
  this.router.transitionTo("index");
60
74
  } catch (e) {
@@ -1,4 +1,6 @@
1
- <li class="uk-margin-small-bottom uk-width-auto">
1
+ <li
2
+ class="uk-margin-small-bottom uk-width-auto {{if this.isActive 'uk-active'}}"
3
+ >
2
4
  <a href="" {{on "click" this.toggle}}>
3
5
  <span class="uk-width-expand">
4
6
  {{t (concat "caluma.distribution.types." @type)}}
@@ -1,10 +1,24 @@
1
1
  import { action } from "@ember/object";
2
+ import { inject as service } from "@ember/service";
2
3
  import Component from "@glimmer/component";
3
4
  import { tracked } from "@glimmer/tracking";
4
5
 
5
6
  export default class CdNavigationSectionComponent extends Component {
7
+ @service router;
8
+
6
9
  @tracked expanded = true;
7
10
 
11
+ get isActive() {
12
+ return (
13
+ this.inquiries.find((inquiry) =>
14
+ this.router.isActive("inquiry", {
15
+ to: inquiry.addressedGroups[0],
16
+ from: inquiry.controllingGroups[0],
17
+ })
18
+ ) !== undefined
19
+ );
20
+ }
21
+
8
22
  @action
9
23
  toggle(e) {
10
24
  e.preventDefault();
@@ -18,8 +32,10 @@ export default class CdNavigationSectionComponent extends Component {
18
32
  ? "controllingGroupName"
19
33
  : "addressedGroupName";
20
34
 
21
- return this.args.inquiries.sort((a, b) =>
22
- a[sortProperty].localeCompare(b[sortProperty])
35
+ return (
36
+ this.args.inquiries?.sort((a, b) =>
37
+ a[sortProperty].localeCompare(b[sortProperty])
38
+ ) ?? []
23
39
  );
24
40
  }
25
41
  }
@@ -2,12 +2,15 @@
2
2
  <UkIcon
3
3
  @icon="clock"
4
4
  class="uk-margin-small-right uk-text-{{this.deadline.color}}"
5
- {{uk-tooltip (format-date this.deadline.value)}}
5
+ {{uk-tooltip
6
+ (format-date this.deadline.value)
7
+ pos=(if this.config.ui.stack "left" "top")
8
+ }}
6
9
  />
7
10
  {{/if}}
8
11
 
9
12
  <UkIcon
10
13
  @icon={{this.status.icon}}
11
14
  class="uk-text-{{this.status.color}}"
12
- {{uk-tooltip this.status.label}}
15
+ {{uk-tooltip this.status.label pos=(if this.config.ui.stack "left" "top")}}
13
16
  />
package/addon/config.js CHANGED
@@ -69,6 +69,8 @@ export default function config(target, property) {
69
69
  },
70
70
  },
71
71
  permissions: {},
72
+ hooks: {},
73
+ enableReminders: true,
72
74
  },
73
75
  getOwner(this).lookup("service:calumaOptions")?.distribution ?? {}
74
76
  );
@@ -72,6 +72,7 @@ fragment InquiryDialog on WorkItem {
72
72
  id
73
73
  slug
74
74
  }
75
+ meta
75
76
  document {
76
77
  ...InquiryRequest
77
78
  }
@@ -0,0 +1,8 @@
1
+ mutation UpdateInquiryMeta($inquiry: ID!, $meta: JSONString!) {
2
+ saveWorkItem(input: { workItem: $inquiry, meta: $meta }) {
3
+ workItem {
4
+ id
5
+ meta
6
+ }
7
+ }
8
+ }
@@ -57,6 +57,7 @@ query ControlWorkItems(
57
57
  parentWorkItem {
58
58
  id
59
59
  isRedoable
60
+ addressedGroups
60
61
  }
61
62
  }
62
63
  }
@@ -4,6 +4,7 @@ query InquiryEdit($inquiry: ID!) {
4
4
  node {
5
5
  id
6
6
  status
7
+ addressedGroups
7
8
  controllingGroups
8
9
  task {
9
10
  id
@@ -21,7 +21,7 @@ function decorator(
21
21
  const value = inquiry.document?.deadline.edges[0]?.node.value;
22
22
  const isDone = ["COMPLETED", "SKIPPED"].includes(inquiry.status);
23
23
 
24
- const { days: diff } = DateTime.fromISO(value).diffNow("days").toObject();
24
+ const diff = DateTime.fromISO(value).diffNow("days").days;
25
25
 
26
26
  const isOverdue = !isDone && diff <= 0;
27
27
  const isWarning = !isDone && diff <= this.config.warningPeriod;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcaluma/ember-distribution",
3
- "version": "11.0.0-beta.27",
3
+ "version": "11.0.0-beta.29",
4
4
  "description": "Ember engine for the Caluma distribution module.",
5
5
  "keywords": [
6
6
  "ember-addon",
@@ -18,27 +18,28 @@
18
18
  "ember-engines": ">= 0.8"
19
19
  },
20
20
  "dependencies": {
21
+ "@ember/legacy-built-in-components": "^0.4.1",
21
22
  "@ember/string": "^3.0.0",
22
23
  "@embroider/macros": "^1.8.3",
23
24
  "@glimmer/component": "^1.1.2",
24
25
  "@glimmer/tracking": "^1.1.2",
25
- "@projectcaluma/ember-core": "^11.0.0-beta.27",
26
- "@projectcaluma/ember-form": "^11.0.0-beta.27",
27
- "@projectcaluma/ember-workflow": "^11.0.0-beta.27",
26
+ "@projectcaluma/ember-core": "^11.0.0-beta.29",
27
+ "@projectcaluma/ember-form": "^11.0.0-beta.29",
28
+ "@projectcaluma/ember-workflow": "^11.0.0-beta.29",
28
29
  "ember-apollo-client": "~4.0.2",
29
30
  "ember-auto-import": "^2.4.2",
30
31
  "ember-can": "^4.2.0",
31
32
  "ember-cli-babel": "^7.26.11",
32
- "ember-cli-htmlbars": "^6.1.0",
33
- "ember-concurrency": "^2.3.2",
33
+ "ember-cli-htmlbars": "^6.1.1",
34
+ "ember-concurrency": "^2.3.7",
34
35
  "ember-engines-router-service": "^0.3.0",
35
36
  "ember-fetch": "^8.1.2",
36
37
  "ember-intl": "^5.7.2",
37
38
  "ember-pikaday": "^4.0.0",
38
- "ember-resources": "^5.3.0",
39
+ "ember-resources": "^5.4.0",
39
40
  "ember-svg-jar": "^2.3.4",
40
41
  "ember-test-selectors": "^6.0.0",
41
- "ember-uikit": "^6.0.0",
42
+ "ember-uikit": "^6.1.0",
42
43
  "graphql": "^15.8.0",
43
44
  "graphql-tag": "^2.12.6",
44
45
  "lodash.merge": "^4.6.2",
@@ -47,12 +48,12 @@
47
48
  },
48
49
  "devDependencies": {
49
50
  "@ember/optional-features": "2.0.0",
50
- "@ember/test-helpers": "2.8.1",
51
+ "@ember/test-helpers": "2.7.0",
51
52
  "@embroider/test-setup": "1.8.3",
52
53
  "@faker-js/faker": "7.5.0",
53
- "@projectcaluma/ember-testing": "11.0.0-beta.27",
54
+ "@projectcaluma/ember-testing": "11.0.0-beta.29",
54
55
  "broccoli-asset-rev": "3.0.0",
55
- "ember-cli": "3.28.5",
56
+ "ember-cli": "4.7.0",
56
57
  "ember-cli-code-coverage": "1.0.3",
57
58
  "ember-cli-dependency-checker": "3.3.1",
58
59
  "ember-cli-inject-live-reload": "2.1.0",
@@ -62,12 +63,10 @@
62
63
  "ember-cli-terser": "4.0.2",
63
64
  "ember-disable-prototype-extensions": "1.1.3",
64
65
  "ember-engines": "0.8.23",
65
- "ember-export-application-global": "2.0.1",
66
66
  "ember-load-initializers": "2.1.2",
67
- "ember-maybe-import-regenerator": "1.0.0",
68
67
  "ember-qunit": "5.1.5",
69
68
  "ember-resolver": "8.0.3",
70
- "ember-source": "3.28.9",
69
+ "ember-source": "4.7.0",
71
70
  "ember-source-channel-url": "3.0.0",
72
71
  "ember-try": "2.0.0",
73
72
  "loader.js": "4.7.0",
@@ -75,11 +74,11 @@
75
74
  "npm-run-all": "4.1.5",
76
75
  "qunit": "2.19.1",
77
76
  "qunit-dom": "2.0.0",
78
- "sass": "1.54.6",
77
+ "sass": "1.55.0",
79
78
  "webpack": "5.74.0"
80
79
  },
81
80
  "engines": {
82
- "node": "12.* || 14.* || >= 16"
81
+ "node": "14.* || >= 16"
83
82
  },
84
83
  "ember": {
85
84
  "edition": "octane"
@@ -4,6 +4,7 @@ caluma:
4
4
  start: "Starten"
5
5
  send: "Offene Anfragen versenden"
6
6
  complete: "Zirkulation abschliessen"
7
+ skip: "Zirkulation überspringen"
7
8
  reopen: "Zirkulation wiedereröffnen"
8
9
  send-confirm: "Wollen Sie wirklich alle offenen Anfragen versenden?"
9
10
  complete-confirm:
@@ -11,9 +12,11 @@ caluma:
11
12
  in der aktuellen Zirkulation. Wenn Sie die Zirkulation abschliessen, werden
12
13
  alle verbleibenden offenen Anfragen abgebrochen. Möchten Sie fortfahren?"
13
14
  complete-confirm-empty: "Möchten Sie die Zirkulation wirklich abschliessen?"
15
+ skip-confirm: "Wollen Sie die Zirkulation wirklich überspringen?"
14
16
  reopen-confirm: "Wollen Sie die Zirkulation wirklich wiedereröffnen?"
15
17
  send-error: "Fehler beim Versenden der offenen Anfragen"
16
18
  complete-error: "Fehler beim Abschliessen der Zirkulation"
19
+ skip-error: "Fehler beim Überspringen der Zirkulation"
17
20
  reopen-error: "Fehler beim Wiedereröffnen der Zirkulation"
18
21
 
19
22
  more: "mehr"
@@ -27,7 +30,7 @@ caluma:
27
30
 
28
31
  edit:
29
32
  link: "Bearbeiten"
30
- send: "Senden"
33
+ send: "Aktuelle Anfrage versenden"
31
34
  send-error: "Fehler beim Senden der Anfrage"
32
35
  send-not-allowed: "Sie sind nicht berechtigt diese Anfrage zu versenden."
33
36
 
@@ -61,6 +64,14 @@ caluma:
61
64
  create-draft: "Entwurf erstellen"
62
65
  error: "Fehler beim Erstellen der {count, plural, =1 {Anfragen} other {Anfrage}}"
63
66
 
67
+ reminder:
68
+ link: "Erinnerung versenden"
69
+ confirm: "Wollen Sie wirklich eine Erinnerung für diese Anfrage versenden?"
70
+ title: "Versendete Erinnerungen"
71
+ no-reminders: "Es wurden noch keine Erinnerungen für diese Anfrage versendet."
72
+ success: "Die Erinnerung wurde erfolgreich versendet"
73
+ error: "Fehler beim Versenden der Erinnerung"
74
+
64
75
  types:
65
76
  controlling: "Angefordert"
66
77
  addressed: "Zu beantworten"
@@ -4,6 +4,7 @@ caluma:
4
4
  start: "Start"
5
5
  send: "Send pending inquiries"
6
6
  complete: "Complete circulation"
7
+ skip: "Skip circulation"
7
8
  send-confirm: "Do you really want to send all pending inquiries?"
8
9
  reopen: "Reopen circulation"
9
10
  complete-confirm:
@@ -12,9 +13,11 @@ caluma:
12
13
  distribution. Completing the distribution will cause all remaining
13
14
  pending inquiries to be canceled. Would you like to continue?"
14
15
  complete-confirm-empty: "Do you really want to complete the distribution?"
16
+ skip-confirm: "Do you really want to skip the distribution?"
15
17
  reopen-confirm: "Do you really want to reopen the distribution?"
16
18
  send-error: "Error while sending pending inquiries"
17
19
  complete-error: "Error while completing the distribution"
20
+ skip-error: "Error while skipping the distribution"
18
21
  reopen-error: "Error while reopening the distribution"
19
22
 
20
23
  more: "more"
@@ -28,7 +31,7 @@ caluma:
28
31
 
29
32
  edit:
30
33
  link: "Edit"
31
- send: "Send"
34
+ send: "Send current inquiry"
32
35
  send-error: "Error while sending the inquiry"
33
36
  send-not-allowed: "You are not allowed to send this inquiry."
34
37
 
@@ -62,6 +65,14 @@ caluma:
62
65
  create-draft: "Create draft"
63
66
  error: "Error while creating the {count, plural, =1 {inquiry} other {inquiries}}"
64
67
 
68
+ reminder:
69
+ link: "Send reminder"
70
+ confirm: "Do you really want to send a reminder for this inquiry?"
71
+ title: "Sent reminders"
72
+ no-reminders: "No reminders have been sent for this inquiry yet."
73
+ success: "The reminder has been sent successfully"
74
+ error: "Error while sending the reminder"
75
+
65
76
  types:
66
77
  controlling: "Requested"
67
78
  addressed: "To answer"
@@ -3,7 +3,8 @@ caluma:
3
3
  empty: "Aucune demande n'a encore été créée."
4
4
  start: "Lancer"
5
5
  send: "Envoyer les demandes ouvertes"
6
- complete: "Terminer la circulation"
6
+ complete: "Clore la circulation"
7
+ skip: "Sauter la procédure de circulation"
7
8
  send-confirm: "Voulez-vous vraiment envoyer toutes les demandes ouvertes ?"
8
9
  reopen: "Rouvrir la procédure de circulation"
9
10
  complete-confirm:
@@ -11,9 +12,11 @@ caluma:
11
12
  attente</b> sur la distribution actuelle. Si vous terminez la distribution,
12
13
  toutes les demandes en attente seront annulées. Voulez-vous continuer ?"
13
14
  complete-confirm-empty: "Vous voulez vraiment fermer la circulation ?"
15
+ skip-confirm: "Vous voulez vraiment sauter la circulation ?"
14
16
  reopen-confirm: "Vous voulez vraiment rouvrir la circulation ?"
15
17
  send-error: "Erreur lors de l'envoi des demandes ouvertes"
16
- complete-error: "Erreur lors de la terminaison de la circulation"
18
+ complete-error: "Erreur lors de la clôture de la circulation"
19
+ skip-error: "Erreur lors du saut de la circulation"
17
20
  reopen-error: "Erreur lors de la réouverture de la circulation"
18
21
 
19
22
  more: "plus"
@@ -27,7 +30,7 @@ caluma:
27
30
 
28
31
  edit:
29
32
  link: "Modifier"
30
- send: "Envoyer"
33
+ send: "Envoyer la demande actuelle"
31
34
  send-error: "Erreur lors de l'envoi de la demande"
32
35
  send-not-allowed: "Vous n'êtes pas autorisé à envoyer cette demande."
33
36
 
@@ -61,6 +64,14 @@ caluma:
61
64
  create-draft: "Créer un brouillon"
62
65
  error: "Error lors de la création {count, plural, =1 {de la demande} other {des demandes}}"
63
66
 
67
+ reminder:
68
+ link: "Envoyer un rappel"
69
+ confirm: "Voulez-vous vraiment envoyer un rappel pour cette demande ?"
70
+ title: "Rappels envoyés"
71
+ no-reminders: Aucun rappel n'a encore été envoyé pour cette demande.
72
+ success: "Le rappel a été envoyé avec succès"
73
+ error: "Erreur lors de l'envoi du rappel"
74
+
64
75
  types:
65
76
  controlling: "Demandé"
66
77
  addressed: "A répondre"