@objectstack/plugin-approvals 16.1.0 → 17.0.0-rc.0
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/.turbo/turbo-build.log +10 -10
- package/CHANGELOG.md +1023 -0
- package/dist/index.d.mts +650 -535
- package/dist/index.d.ts +650 -535
- package/dist/index.js +1713 -207
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1711 -197
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -7
- package/scripts/i18n-extract.config.ts +6 -1
- package/src/approval-actor-impersonation.test.ts +330 -0
- package/src/approval-node.test.ts +160 -0
- package/src/approval-node.ts +57 -0
- package/src/approval-revise.test.ts +41 -34
- package/src/approval-service.test.ts +1408 -40
- package/src/approval-service.ts +1364 -107
- package/src/approvals-plugin.ts +36 -5
- package/src/approver-cross-org.integration.test.ts +206 -0
- package/src/approver-org-scope.test.ts +201 -0
- package/src/approver-org-scope.ts +261 -0
- package/src/index.ts +3 -0
- package/src/lifecycle-hooks.ts +22 -0
- package/src/record-lock-schedule-run.integration.test.ts +206 -0
- package/src/status-mirror-cascade.integration.test.ts +224 -0
- package/src/sys-approval-action.object.ts +9 -0
- package/src/sys-approval-delegation.object.test.ts +42 -0
- package/src/sys-approval-delegation.object.ts +3 -3
- package/src/sys-approval-request.object.test.ts +13 -0
- package/src/sys-approval-request.object.ts +17 -5
- package/src/translations/bundle-ownership.test.ts +48 -0
- package/src/translations/en.objects.generated.ts +111 -5
- package/src/translations/es-ES.objects.generated.ts +111 -5
- package/src/translations/ja-JP.objects.generated.ts +111 -5
- package/src/translations/zh-CN.objects.generated.ts +110 -4
|
@@ -44,7 +44,8 @@ export const esESObjects: NonNullable<TranslationData['objects']> = {
|
|
|
44
44
|
pending: "Pendiente",
|
|
45
45
|
approved: "Aprobada",
|
|
46
46
|
rejected: "Rechazada",
|
|
47
|
-
recalled: "Retirada"
|
|
47
|
+
recalled: "Retirada",
|
|
48
|
+
returned: "Devuelta para revisión"
|
|
48
49
|
}
|
|
49
50
|
},
|
|
50
51
|
current_step: {
|
|
@@ -86,7 +87,11 @@ export const esESObjects: NonNullable<TranslationData['objects']> = {
|
|
|
86
87
|
},
|
|
87
88
|
_views: {
|
|
88
89
|
my_pending: {
|
|
89
|
-
label: "Mis pendientes"
|
|
90
|
+
label: "Mis pendientes",
|
|
91
|
+
emptyState: {
|
|
92
|
+
title: "Sin aprobaciones pendientes",
|
|
93
|
+
message: "Estás al día: nada espera tu aprobación."
|
|
94
|
+
}
|
|
90
95
|
},
|
|
91
96
|
submitted_by_me: {
|
|
92
97
|
label: "Enviadas por mí"
|
|
@@ -97,6 +102,92 @@ export const esESObjects: NonNullable<TranslationData['objects']> = {
|
|
|
97
102
|
all_requests: {
|
|
98
103
|
label: "Todas"
|
|
99
104
|
}
|
|
105
|
+
},
|
|
106
|
+
_actions: {
|
|
107
|
+
approval_approve: {
|
|
108
|
+
label: "Aprobar",
|
|
109
|
+
successMessage: "Aprobada.",
|
|
110
|
+
params: {
|
|
111
|
+
comment: {
|
|
112
|
+
label: "Comentario"
|
|
113
|
+
},
|
|
114
|
+
attachments: {
|
|
115
|
+
label: "Adjuntos"
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
approval_reject: {
|
|
120
|
+
label: "Rechazar",
|
|
121
|
+
confirmText: "¿Rechazar esta solicitud? Un rechazo es definitivo para todos los aprobadores.",
|
|
122
|
+
successMessage: "Rechazada.",
|
|
123
|
+
params: {
|
|
124
|
+
comment: {
|
|
125
|
+
label: "Comentario"
|
|
126
|
+
},
|
|
127
|
+
attachments: {
|
|
128
|
+
label: "Adjuntos"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
approval_reassign: {
|
|
133
|
+
label: "Reasignar",
|
|
134
|
+
successMessage: "Reasignada.",
|
|
135
|
+
params: {
|
|
136
|
+
to: {
|
|
137
|
+
label: "Nuevo aprobador",
|
|
138
|
+
helpText: "Usuario al que se entrega este paso"
|
|
139
|
+
},
|
|
140
|
+
comment: {
|
|
141
|
+
label: "Comentario"
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
approval_send_back: {
|
|
146
|
+
label: "Devolver",
|
|
147
|
+
successMessage: "Devuelta para revisión.",
|
|
148
|
+
params: {
|
|
149
|
+
comment: {
|
|
150
|
+
label: "Motivo"
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
approval_request_info: {
|
|
155
|
+
label: "Pedir información",
|
|
156
|
+
successMessage: "Información solicitada.",
|
|
157
|
+
params: {
|
|
158
|
+
comment: {
|
|
159
|
+
label: "¿Qué necesitas?"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
approval_remind: {
|
|
164
|
+
label: "Enviar recordatorio",
|
|
165
|
+
successMessage: "Recordatorio enviado.",
|
|
166
|
+
params: {
|
|
167
|
+
comment: {
|
|
168
|
+
label: "Nota"
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
approval_recall: {
|
|
173
|
+
label: "Retirar",
|
|
174
|
+
confirmText: "¿Retirar esta solicitud? Los aprobadores ya no podrán actuar sobre ella y el registro se desbloqueará.",
|
|
175
|
+
successMessage: "Retirada.",
|
|
176
|
+
params: {
|
|
177
|
+
comment: {
|
|
178
|
+
label: "Comentario"
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
approval_resubmit: {
|
|
183
|
+
label: "Reenviar",
|
|
184
|
+
successMessage: "Reenviada.",
|
|
185
|
+
params: {
|
|
186
|
+
comment: {
|
|
187
|
+
label: "¿Qué ha cambiado?"
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
100
191
|
}
|
|
101
192
|
},
|
|
102
193
|
sys_approval_action: {
|
|
@@ -128,7 +219,14 @@ export const esESObjects: NonNullable<TranslationData['objects']> = {
|
|
|
128
219
|
approve: "Aprobar",
|
|
129
220
|
reject: "Rechazar",
|
|
130
221
|
recall: "Retirar",
|
|
131
|
-
escalate: "Escalar"
|
|
222
|
+
escalate: "Escalar",
|
|
223
|
+
reassign: "Reasignación",
|
|
224
|
+
remind: "Recordatorio",
|
|
225
|
+
request_info: "Petición de información",
|
|
226
|
+
comment: "Comentario",
|
|
227
|
+
revise: "Devolución",
|
|
228
|
+
resubmit: "Reenvío",
|
|
229
|
+
ooo_substitute: "Sustitución por ausencia"
|
|
132
230
|
}
|
|
133
231
|
},
|
|
134
232
|
actor_id: {
|
|
@@ -137,13 +235,21 @@ export const esESObjects: NonNullable<TranslationData['objects']> = {
|
|
|
137
235
|
comment: {
|
|
138
236
|
label: "Comentario"
|
|
139
237
|
},
|
|
238
|
+
attachments: {
|
|
239
|
+
label: "Adjuntos",
|
|
240
|
+
help: "Archivos que respaldan esta acción, p. ej. un contrato firmado o pruebas (#3266)."
|
|
241
|
+
},
|
|
140
242
|
created_at: {
|
|
141
243
|
label: "Creado el"
|
|
142
244
|
}
|
|
143
245
|
},
|
|
144
246
|
_views: {
|
|
145
247
|
recent: {
|
|
146
|
-
label: "Recientes"
|
|
248
|
+
label: "Recientes",
|
|
249
|
+
emptyState: {
|
|
250
|
+
title: "Aún no hay acciones de aprobación",
|
|
251
|
+
message: "Las acciones se registran automáticamente a medida que avanza la aprobación."
|
|
252
|
+
}
|
|
147
253
|
},
|
|
148
254
|
by_actor: {
|
|
149
255
|
label: "Por actor"
|
|
@@ -179,7 +285,7 @@ export const esESObjects: NonNullable<TranslationData['objects']> = {
|
|
|
179
285
|
},
|
|
180
286
|
reason: {
|
|
181
287
|
label: "Reason",
|
|
182
|
-
help: "Why the delegation exists (e.g. \"Annual leave 5/26
|
|
288
|
+
help: "Why the delegation exists (e.g. \"Annual leave 5/26–5/30\"). Recorded on the substitution audit row."
|
|
183
289
|
},
|
|
184
290
|
organization_id: {
|
|
185
291
|
label: "Organization",
|
|
@@ -44,7 +44,8 @@ export const jaJPObjects: NonNullable<TranslationData['objects']> = {
|
|
|
44
44
|
pending: "保留中",
|
|
45
45
|
approved: "承認済み",
|
|
46
46
|
rejected: "却下済み",
|
|
47
|
-
recalled: "取り消し済み"
|
|
47
|
+
recalled: "取り消し済み",
|
|
48
|
+
returned: "差し戻し済み"
|
|
48
49
|
}
|
|
49
50
|
},
|
|
50
51
|
current_step: {
|
|
@@ -86,7 +87,11 @@ export const jaJPObjects: NonNullable<TranslationData['objects']> = {
|
|
|
86
87
|
},
|
|
87
88
|
_views: {
|
|
88
89
|
my_pending: {
|
|
89
|
-
label: "自分の保留中"
|
|
90
|
+
label: "自分の保留中",
|
|
91
|
+
emptyState: {
|
|
92
|
+
title: "承認待ちはありません",
|
|
93
|
+
message: "すべて処理済みです。あなたの承認を待つリクエストはありません。"
|
|
94
|
+
}
|
|
90
95
|
},
|
|
91
96
|
submitted_by_me: {
|
|
92
97
|
label: "自分が送信"
|
|
@@ -97,6 +102,92 @@ export const jaJPObjects: NonNullable<TranslationData['objects']> = {
|
|
|
97
102
|
all_requests: {
|
|
98
103
|
label: "すべて"
|
|
99
104
|
}
|
|
105
|
+
},
|
|
106
|
+
_actions: {
|
|
107
|
+
approval_approve: {
|
|
108
|
+
label: "承認",
|
|
109
|
+
successMessage: "承認しました。",
|
|
110
|
+
params: {
|
|
111
|
+
comment: {
|
|
112
|
+
label: "コメント"
|
|
113
|
+
},
|
|
114
|
+
attachments: {
|
|
115
|
+
label: "添付ファイル"
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
approval_reject: {
|
|
120
|
+
label: "却下",
|
|
121
|
+
confirmText: "このリクエストを却下しますか?却下はすべての承認者に対して最終決定になります。",
|
|
122
|
+
successMessage: "却下しました。",
|
|
123
|
+
params: {
|
|
124
|
+
comment: {
|
|
125
|
+
label: "コメント"
|
|
126
|
+
},
|
|
127
|
+
attachments: {
|
|
128
|
+
label: "添付ファイル"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
approval_reassign: {
|
|
133
|
+
label: "再割り当て",
|
|
134
|
+
successMessage: "再割り当てしました。",
|
|
135
|
+
params: {
|
|
136
|
+
to: {
|
|
137
|
+
label: "新しい承認者",
|
|
138
|
+
helpText: "このステップを引き継ぐユーザー"
|
|
139
|
+
},
|
|
140
|
+
comment: {
|
|
141
|
+
label: "コメント"
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
approval_send_back: {
|
|
146
|
+
label: "差し戻し",
|
|
147
|
+
successMessage: "修正のため差し戻しました。",
|
|
148
|
+
params: {
|
|
149
|
+
comment: {
|
|
150
|
+
label: "理由"
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
approval_request_info: {
|
|
155
|
+
label: "追加情報を依頼",
|
|
156
|
+
successMessage: "追加情報を依頼しました。",
|
|
157
|
+
params: {
|
|
158
|
+
comment: {
|
|
159
|
+
label: "何が必要ですか?"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
approval_remind: {
|
|
164
|
+
label: "リマインダー送信",
|
|
165
|
+
successMessage: "リマインダーを送信しました。",
|
|
166
|
+
params: {
|
|
167
|
+
comment: {
|
|
168
|
+
label: "メモ"
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
approval_recall: {
|
|
173
|
+
label: "取り下げ",
|
|
174
|
+
confirmText: "このリクエストを取り下げますか?承認者は操作できなくなり、レコードのロックが解除されます。",
|
|
175
|
+
successMessage: "取り下げました。",
|
|
176
|
+
params: {
|
|
177
|
+
comment: {
|
|
178
|
+
label: "コメント"
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
approval_resubmit: {
|
|
183
|
+
label: "再提出",
|
|
184
|
+
successMessage: "再提出しました。",
|
|
185
|
+
params: {
|
|
186
|
+
comment: {
|
|
187
|
+
label: "何を変更しましたか?"
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
100
191
|
}
|
|
101
192
|
},
|
|
102
193
|
sys_approval_action: {
|
|
@@ -128,7 +219,14 @@ export const jaJPObjects: NonNullable<TranslationData['objects']> = {
|
|
|
128
219
|
approve: "承認",
|
|
129
220
|
reject: "却下",
|
|
130
221
|
recall: "取消",
|
|
131
|
-
escalate: "エスカレーション"
|
|
222
|
+
escalate: "エスカレーション",
|
|
223
|
+
reassign: "再割り当て",
|
|
224
|
+
remind: "リマインダー",
|
|
225
|
+
request_info: "追加情報依頼",
|
|
226
|
+
comment: "コメント",
|
|
227
|
+
revise: "差し戻し",
|
|
228
|
+
resubmit: "再提出",
|
|
229
|
+
ooo_substitute: "不在時代理"
|
|
132
230
|
}
|
|
133
231
|
},
|
|
134
232
|
actor_id: {
|
|
@@ -137,13 +235,21 @@ export const jaJPObjects: NonNullable<TranslationData['objects']> = {
|
|
|
137
235
|
comment: {
|
|
138
236
|
label: "コメント"
|
|
139
237
|
},
|
|
238
|
+
attachments: {
|
|
239
|
+
label: "添付ファイル",
|
|
240
|
+
help: "この操作を裏付けるファイル——署名済み契約書や証憑など(#3266)。"
|
|
241
|
+
},
|
|
140
242
|
created_at: {
|
|
141
243
|
label: "作成日時"
|
|
142
244
|
}
|
|
143
245
|
},
|
|
144
246
|
_views: {
|
|
145
247
|
recent: {
|
|
146
|
-
label: "最近"
|
|
248
|
+
label: "最近",
|
|
249
|
+
emptyState: {
|
|
250
|
+
title: "承認操作はまだありません",
|
|
251
|
+
message: "承認が進むと操作は自動的に記録されます。"
|
|
252
|
+
}
|
|
147
253
|
},
|
|
148
254
|
by_actor: {
|
|
149
255
|
label: "操作者別"
|
|
@@ -179,7 +285,7 @@ export const jaJPObjects: NonNullable<TranslationData['objects']> = {
|
|
|
179
285
|
},
|
|
180
286
|
reason: {
|
|
181
287
|
label: "Reason",
|
|
182
|
-
help: "Why the delegation exists (e.g. \"Annual leave 5/26
|
|
288
|
+
help: "Why the delegation exists (e.g. \"Annual leave 5/26–5/30\"). Recorded on the substitution audit row."
|
|
183
289
|
},
|
|
184
290
|
organization_id: {
|
|
185
291
|
label: "Organization",
|
|
@@ -44,7 +44,8 @@ export const zhCNObjects: NonNullable<TranslationData['objects']> = {
|
|
|
44
44
|
pending: "待处理",
|
|
45
45
|
approved: "已批准",
|
|
46
46
|
rejected: "已拒绝",
|
|
47
|
-
recalled: "已撤回"
|
|
47
|
+
recalled: "已撤回",
|
|
48
|
+
returned: "已退回修改"
|
|
48
49
|
}
|
|
49
50
|
},
|
|
50
51
|
current_step: {
|
|
@@ -86,7 +87,11 @@ export const zhCNObjects: NonNullable<TranslationData['objects']> = {
|
|
|
86
87
|
},
|
|
87
88
|
_views: {
|
|
88
89
|
my_pending: {
|
|
89
|
-
label: "我的待办"
|
|
90
|
+
label: "我的待办",
|
|
91
|
+
emptyState: {
|
|
92
|
+
title: "暂无待办审批",
|
|
93
|
+
message: "全部处理完毕,没有等待你审批的请求。"
|
|
94
|
+
}
|
|
90
95
|
},
|
|
91
96
|
submitted_by_me: {
|
|
92
97
|
label: "我提交的"
|
|
@@ -97,6 +102,92 @@ export const zhCNObjects: NonNullable<TranslationData['objects']> = {
|
|
|
97
102
|
all_requests: {
|
|
98
103
|
label: "全部"
|
|
99
104
|
}
|
|
105
|
+
},
|
|
106
|
+
_actions: {
|
|
107
|
+
approval_approve: {
|
|
108
|
+
label: "通过",
|
|
109
|
+
successMessage: "已通过。",
|
|
110
|
+
params: {
|
|
111
|
+
comment: {
|
|
112
|
+
label: "审批意见"
|
|
113
|
+
},
|
|
114
|
+
attachments: {
|
|
115
|
+
label: "附件"
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
approval_reject: {
|
|
120
|
+
label: "拒绝",
|
|
121
|
+
confirmText: "拒绝该请求?拒绝对所有审批人立即生效。",
|
|
122
|
+
successMessage: "已拒绝。",
|
|
123
|
+
params: {
|
|
124
|
+
comment: {
|
|
125
|
+
label: "审批意见"
|
|
126
|
+
},
|
|
127
|
+
attachments: {
|
|
128
|
+
label: "附件"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
approval_reassign: {
|
|
133
|
+
label: "转签",
|
|
134
|
+
successMessage: "已转签。",
|
|
135
|
+
params: {
|
|
136
|
+
to: {
|
|
137
|
+
label: "新审批人",
|
|
138
|
+
helpText: "将此审批步骤转交给的用户"
|
|
139
|
+
},
|
|
140
|
+
comment: {
|
|
141
|
+
label: "备注"
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
approval_send_back: {
|
|
146
|
+
label: "退回修改",
|
|
147
|
+
successMessage: "已退回修改。",
|
|
148
|
+
params: {
|
|
149
|
+
comment: {
|
|
150
|
+
label: "原因"
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
approval_request_info: {
|
|
155
|
+
label: "退回补充",
|
|
156
|
+
successMessage: "已退回给申请人补充材料。",
|
|
157
|
+
params: {
|
|
158
|
+
comment: {
|
|
159
|
+
label: "需要申请人补充什么?"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
approval_remind: {
|
|
164
|
+
label: "催办",
|
|
165
|
+
successMessage: "已发送催办。",
|
|
166
|
+
params: {
|
|
167
|
+
comment: {
|
|
168
|
+
label: "备注"
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
approval_recall: {
|
|
173
|
+
label: "撤回",
|
|
174
|
+
confirmText: "撤回该请求?撤回后审批人将无法继续处理,记录随即解锁。",
|
|
175
|
+
successMessage: "已撤回。",
|
|
176
|
+
params: {
|
|
177
|
+
comment: {
|
|
178
|
+
label: "备注"
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
approval_resubmit: {
|
|
183
|
+
label: "重新提交",
|
|
184
|
+
successMessage: "已重新提交。",
|
|
185
|
+
params: {
|
|
186
|
+
comment: {
|
|
187
|
+
label: "你修改了什么?"
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
100
191
|
}
|
|
101
192
|
},
|
|
102
193
|
sys_approval_action: {
|
|
@@ -128,7 +219,14 @@ export const zhCNObjects: NonNullable<TranslationData['objects']> = {
|
|
|
128
219
|
approve: "批准",
|
|
129
220
|
reject: "拒绝",
|
|
130
221
|
recall: "撤回",
|
|
131
|
-
escalate: "升级"
|
|
222
|
+
escalate: "升级",
|
|
223
|
+
reassign: "转签",
|
|
224
|
+
remind: "催办",
|
|
225
|
+
request_info: "要求补充材料",
|
|
226
|
+
comment: "评论",
|
|
227
|
+
revise: "退回修改",
|
|
228
|
+
resubmit: "重新提交",
|
|
229
|
+
ooo_substitute: "不在岗改派"
|
|
132
230
|
}
|
|
133
231
|
},
|
|
134
232
|
actor_id: {
|
|
@@ -137,13 +235,21 @@ export const zhCNObjects: NonNullable<TranslationData['objects']> = {
|
|
|
137
235
|
comment: {
|
|
138
236
|
label: "评论"
|
|
139
237
|
},
|
|
238
|
+
attachments: {
|
|
239
|
+
label: "附件",
|
|
240
|
+
help: "支持该操作的文件——例如已签署的合同或证明材料(#3266)。"
|
|
241
|
+
},
|
|
140
242
|
created_at: {
|
|
141
243
|
label: "创建时间"
|
|
142
244
|
}
|
|
143
245
|
},
|
|
144
246
|
_views: {
|
|
145
247
|
recent: {
|
|
146
|
-
label: "最近"
|
|
248
|
+
label: "最近",
|
|
249
|
+
emptyState: {
|
|
250
|
+
title: "暂无审批操作记录",
|
|
251
|
+
message: "审批推进时会自动记录操作。"
|
|
252
|
+
}
|
|
147
253
|
},
|
|
148
254
|
by_actor: {
|
|
149
255
|
label: "按执行人"
|