mirror of
https://github.com/documenso/documenso.git
synced 2025-11-12 07:43:16 +10:00
feat: signature rejection (#1472)
## Description Adds support for rejecting a given document informing the document owner. Flows for resolving a rejection don't currently exist so it's up to the document owner to reach out to the recipient and work out a way to move forward via a new document or offline agreement. ## Related Issue ## Changes Made - Added new rejection properties to the recipient schema - Added API endpoints to support rejection - Added email templates for notifying the document owner and recipient - Added a dialog on the signing page to start the rejection flow. ## Testing Performed - Manually tested the flow end to end - Automated tests are planned
This commit is contained in:
@ -39,26 +39,26 @@ msgstr "\"{email}\" en nombre de \"{teamName}\" te ha invitado a firmar \"ejempl
|
||||
#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n"
|
||||
#~ "document\"."
|
||||
#~ msgstr ""
|
||||
#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n"
|
||||
#~ "document\"."
|
||||
#~ "\"{placeholderEmail}\" en nombre de \"{0}\" te ha invitado a firmar \"ejemplo\n"
|
||||
#~ "documento\"."
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209
|
||||
msgid "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"."
|
||||
msgstr "\"{placeholderEmail}\" en nombre de \"{0}\" te ha invitado a firmar \"documento de ejemplo\"."
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:241
|
||||
msgid "\"{teamUrl}\" has invited you to sign \"example document\"."
|
||||
msgstr "\"{teamUrl}\" te ha invitado a firmar \"ejemplo de documento\"."
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:78
|
||||
#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:79
|
||||
msgid "({0}) has invited you to approve this document"
|
||||
msgstr "({0}) te ha invitado a aprobar este documento"
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:75
|
||||
#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:76
|
||||
msgid "({0}) has invited you to sign this document"
|
||||
msgstr "({0}) te ha invitado a firmar este documento"
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:72
|
||||
#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:73
|
||||
msgid "({0}) has invited you to view this document"
|
||||
msgstr "({0}) te ha invitado a ver este documento"
|
||||
|
||||
@ -658,7 +658,7 @@ msgstr "Aprobar"
|
||||
msgid "Approve Document"
|
||||
msgstr "Aprobar Documento"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:85
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:94
|
||||
msgid "Approved"
|
||||
msgstr "Aprobado"
|
||||
|
||||
@ -666,6 +666,10 @@ msgstr "Aprobado"
|
||||
msgid "Are you sure you want to delete this token?"
|
||||
msgstr "¿Estás seguro de que deseas eliminar este token?"
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:120
|
||||
msgid "Are you sure you want to reject this document? This action cannot be undone."
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:188
|
||||
msgid "Are you sure you want to remove the <0>{passkeyName}</0> passkey."
|
||||
msgstr "¿Está seguro de que desea eliminar la clave de acceso <0>{passkeyName}</0>?"
|
||||
@ -814,6 +818,7 @@ msgstr "Al utilizar la función de firma electrónica, usted está consintiendo
|
||||
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:220
|
||||
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215
|
||||
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:327
|
||||
#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:153
|
||||
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113
|
||||
#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:248
|
||||
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:333
|
||||
@ -946,7 +951,7 @@ msgid "Complete Viewing"
|
||||
msgstr "Completar Visualización"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:208
|
||||
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:62
|
||||
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
|
||||
#: apps/web/src/components/formatter/document-status.tsx:28
|
||||
msgid "Completed"
|
||||
msgstr "Completado"
|
||||
@ -1043,7 +1048,7 @@ msgstr "Controla el formato del mensaje que se enviará al invitar a un destinat
|
||||
msgid "Copied"
|
||||
msgstr "Copiado"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:133
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:162
|
||||
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:77
|
||||
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:31
|
||||
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:163
|
||||
@ -1517,6 +1522,10 @@ msgstr "Preferencias del documento actualizadas"
|
||||
msgid "Document re-sent"
|
||||
msgstr "Documento reenviado"
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:83
|
||||
msgid "Document Rejected"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:36
|
||||
msgid "Document resealed"
|
||||
msgstr "Documento sellado nuevamente"
|
||||
@ -2300,7 +2309,7 @@ msgstr "Miembro desde"
|
||||
msgid "Members"
|
||||
msgstr "Miembros"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:46
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:55
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:35
|
||||
msgid "Modify recipients"
|
||||
msgstr "Modificar destinatarios"
|
||||
@ -2394,6 +2403,10 @@ msgstr "Siguiente campo"
|
||||
msgid "No active drafts"
|
||||
msgstr "No hay borradores activos"
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:99
|
||||
msgid "No further action is required from you at this time."
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:42
|
||||
msgid "No payment required"
|
||||
msgstr "No se requiere pago"
|
||||
@ -2410,7 +2423,7 @@ msgstr "No hay actividad reciente"
|
||||
msgid "No recent documents"
|
||||
msgstr "No hay documentos recientes"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:61
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:70
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:49
|
||||
#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:96
|
||||
msgid "No recipients"
|
||||
@ -2500,7 +2513,7 @@ msgstr "Solo los gerentes y superiores pueden acceder y ver el documento"
|
||||
msgid "Oops! Something went wrong."
|
||||
msgstr "¡Ups! Algo salió mal."
|
||||
|
||||
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101
|
||||
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:140
|
||||
msgid "Opened"
|
||||
msgstr "Abierto"
|
||||
|
||||
@ -2599,7 +2612,7 @@ msgstr "Se requiere pago para finalizar la creación de tu equipo."
|
||||
msgid "Payment overdue"
|
||||
msgstr "Pago atrasado"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:122
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:211
|
||||
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82
|
||||
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77
|
||||
@ -2692,6 +2705,10 @@ msgstr "Por favor, ten en cuenta que esta acción es irreversible. Una vez confi
|
||||
msgid "Please note that you will lose access to all documents associated with this team & all the members will be removed and notified"
|
||||
msgstr "Por favor, ten en cuenta que perderás acceso a todos los documentos asociados con este equipo y todos los miembros serán eliminados y notificados"
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:37
|
||||
msgid "Please provide a reason"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:127
|
||||
msgid "Please provide a token from the authenticator, or a backup code. If you do not have a backup code available, please contact support."
|
||||
msgstr "Por favor, proporciona un token del autenticador o un código de respaldo. Si no tienes un código de respaldo disponible, contacta al soporte."
|
||||
@ -2800,7 +2817,7 @@ msgstr "Campo de solo lectura"
|
||||
msgid "Read the full <0>signature disclosure</0>."
|
||||
msgstr "Lea la <0>divulgación de firma</0> completa."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:97
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:106
|
||||
msgid "Ready"
|
||||
msgstr "Listo"
|
||||
|
||||
@ -2808,6 +2825,14 @@ msgstr "Listo"
|
||||
msgid "Reason"
|
||||
msgstr "Razón"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:146
|
||||
msgid "Reason for rejection:"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:38
|
||||
msgid "Reason must be less than 500 characters"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:62
|
||||
msgid "Reauthentication is required to sign this field"
|
||||
msgstr "Se requiere reautenticación para firmar este campo"
|
||||
@ -2832,7 +2857,7 @@ msgid "Recipient updated"
|
||||
msgstr "Destinatario actualizado"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:66
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:40
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:49
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:30
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:139
|
||||
msgid "Recipients"
|
||||
@ -2860,6 +2885,17 @@ msgstr "Códigos de recuperación"
|
||||
msgid "Registration Successful"
|
||||
msgstr "Registro exitoso"
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:109
|
||||
#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:116
|
||||
#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:162
|
||||
msgid "Reject Document"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:141
|
||||
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101
|
||||
msgid "Rejected"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:34
|
||||
msgid "Remembered your password? <0>Sign In</0>"
|
||||
msgstr "¿Recordaste tu contraseña? <0>Iniciar sesión</0>"
|
||||
@ -3089,7 +3125,7 @@ msgstr "Enviando correo de restablecimiento..."
|
||||
msgid "Sending..."
|
||||
msgstr "Enviando..."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:92
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:248
|
||||
msgid "Sent"
|
||||
msgstr "Enviado"
|
||||
@ -3236,7 +3272,7 @@ msgstr "Firmas recolectadas"
|
||||
msgid "Signatures will appear once the document has been completed"
|
||||
msgstr "Las firmas aparecerán una vez que el documento se haya completado"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:105
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:270
|
||||
#: apps/web/src/components/document/document-read-only-fields.tsx:84
|
||||
msgid "Signed"
|
||||
@ -3645,6 +3681,10 @@ msgstr "El documento ha sido movido con éxito al equipo seleccionado."
|
||||
msgid "The document is now completed, please follow any instructions provided within the parent application."
|
||||
msgstr "El documento ahora está completado, por favor sigue cualquier instrucción proporcionada dentro de la aplicación principal."
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:92
|
||||
msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:182
|
||||
msgid "The document was created but could not be sent to recipients."
|
||||
msgstr "El documento fue creado pero no se pudo enviar a los destinatarios."
|
||||
@ -3699,7 +3739,7 @@ msgstr "El destinatario ha sido actualizado con éxito"
|
||||
msgid "The selected team member will receive an email which they must accept before the team is transferred"
|
||||
msgstr "El miembro del equipo seleccionado recibirá un correo electrónico que debe aceptar antes de que se transfiera el equipo"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:134
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:163
|
||||
#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:41
|
||||
#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:118
|
||||
msgid "The signing link has been copied to your clipboard."
|
||||
@ -4141,7 +4181,7 @@ msgstr "No se pudo iniciar sesión"
|
||||
msgid "Unauthorized"
|
||||
msgstr "No autorizado"
|
||||
|
||||
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:116
|
||||
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:155
|
||||
msgid "Uncompleted"
|
||||
msgstr "Incompleto"
|
||||
|
||||
@ -4386,12 +4426,12 @@ msgstr "Ver Códigos de Recuperación"
|
||||
msgid "View teams"
|
||||
msgstr "Ver equipos"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:111
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:259
|
||||
msgid "Viewed"
|
||||
msgstr "Visto"
|
||||
|
||||
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:86
|
||||
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:125
|
||||
msgid "Waiting"
|
||||
msgstr "Esperando"
|
||||
|
||||
@ -4846,6 +4886,10 @@ msgstr "Has alcanzado tu límite de documentos."
|
||||
msgid "You have reached your document limit. <0>Upgrade your account to continue!</0>"
|
||||
msgstr "Has alcanzado tu límite de documentos. <0>¡Actualiza tu cuenta para continuar!</0>"
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:88
|
||||
msgid "You have rejected this document"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:50
|
||||
msgid "You have successfully left this team."
|
||||
msgstr "Has salido de este equipo con éxito."
|
||||
@ -5073,4 +5117,3 @@ msgstr "¡Tu token se creó con éxito! ¡Asegúrate de copiarlo porque no podr
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86
|
||||
msgid "Your tokens will be shown here once you create them."
|
||||
msgstr "Tus tokens se mostrarán aquí una vez que los crees."
|
||||
|
||||
|
||||
Reference in New Issue
Block a user