diff --git a/apps/OpenSign/public/locales/en/translation.json b/apps/OpenSign/public/locales/en/translation.json
index c07cdedda..40d56f9f4 100644
--- a/apps/OpenSign/public/locales/en/translation.json
+++ b/apps/OpenSign/public/locales/en/translation.json
@@ -515,7 +515,7 @@
"error": "Error",
"invalid-document": "Error: invalid document!",
"document-not-found": "Document not Found!",
- "document-signed-alert-1": "You have successfully signed the document. You can download or print a copy of the partially signed document. A copy of the digitally signed document will be sent to the owner over email once it is signed by all signers.",
+ "document-signed-alert-1": "You have successfully signed the document. You can download or print a copy of the partially signed document. A copy of the digitally signed document & completion certificate will be sent to the owner & all signers over email once it is signed by all signers.",
"encrypted-pdf-not-support": "Currently encrypted pdf files are not supported.",
"document-signed-alert-4": " Congratulations! 🎉 This document has been successfully signed by all participants!",
"document-signed-alert-5": "This document has been signed by all Signers.",
@@ -655,6 +655,7 @@
"angular-npm-mssg-1": "To integrate OpenSign into your Angular project, simply run the following command:",
"quota-mail-info-head":"Monthly request signatures email limit",
"quota-mail-info": "You can send upto 15 signature request emails every month. Upgrade now to send unlimited signing requests directly.",
+ "quota-mail-reset": "Your signature request email credits will be reset on",
"quota-mail": "You've reached your limit of 15 signature request emails for this month. Upgrade now to continue sending emails directly.",
"quota-mail-tip":"Tip: You can still sign <1>unlimited documents1> by manually sharing the signing request links.",
"quota-mail-head":"Quota Reached",
diff --git a/apps/OpenSign/public/locales/es/translation.json b/apps/OpenSign/public/locales/es/translation.json
index d2cc76701..bb0ed8987 100644
--- a/apps/OpenSign/public/locales/es/translation.json
+++ b/apps/OpenSign/public/locales/es/translation.json
@@ -515,7 +515,7 @@
"error": "Error",
"invalid-document": "Error: ¡Documento inválido!",
"document-not-found": "¡Documento no encontrado!",
- "document-signed-alert-1": "Has firmado el documento exitosamente. Puedes descargar o imprimir una copia del documento parcialmente firmado. Una copia del documento firmado digitalmente será enviada al propietario mediante correo electrónico una vez haya sido firmado por todos los firmantes.",
+ "document-signed-alert-1": "Ha firmado exitosamente el documento. Puede descargar o imprimir una copia del documento parcialmente firmado. Se enviará una copia del documento firmado digitalmente y del certificado de finalización al propietario y a todos los firmantes por correo electrónico una vez que todos los firmantes lo hayan firmado.",
"encrypted-pdf-not-support": "Los archivos PDF encriptados no están soportados actualmente.",
"document-signed-alert-4": " ¡Felicitaciones! 🎉 ¡Este documento ha sido firmado exitosamente por todos los participantes!",
"document-signed-alert-5": "Este documento ha sido firmado por todos los firmantes.",
@@ -655,6 +655,7 @@
"angular-npm-mssg-1": "Para integrar OpenSign a tu proyecto Angular, simplemente ejecuta los siguientes comandos:",
"quota-mail-info-head": "Límite mensual de solicitudes de firma por correo",
"quota-mail-info": "Puedes enviar hasta 15 solicitudes de firma por correo cada mes. Mejora ahora para enviar solicitudes de firma sin límite.",
+ "quota-mail-reset": "Los créditos de tu correo electrónico de solicitud de firma se restablecerán el",
"quota-mail": "Has alcanzado tu límite de 15 solicitudes de firma por correo para este mes. Mejora ahora para continuar enviando correos.",
"quota-mail-tip": "Consejo: Todavía puedes solciitar la firma de <1>documentos ilimitados1> compartiendo manualmente los enlaces de solicitud de firma.",
"quota-mail-head": "Cuota alcanzada",
diff --git a/apps/OpenSign/public/locales/fr/translation.json b/apps/OpenSign/public/locales/fr/translation.json
index 3aa1ebc05..eb515ef3e 100644
--- a/apps/OpenSign/public/locales/fr/translation.json
+++ b/apps/OpenSign/public/locales/fr/translation.json
@@ -514,7 +514,7 @@
"error": "Erreur",
"invalid-document": "Erreur : document invalide !",
"document-not-found": "Document introuvable !",
- "document-signed-alert-1": "Vous avez signé le document avec succès. Vous pouvez télécharger ou imprimer une copie du document partiellement signé. Une copie du document signé numériquement sera envoyée au propriétaire par e-mail une fois qu'il sera signé par tous les signataires.",
+ "document-signed-alert-1": "Vous avez signé le document avec succès. Vous pouvez télécharger ou imprimer une copie du document partiellement signé. Une copie du document signé numériquement et du certificat d'achèvement sera envoyée au propriétaire et à tous les signataires par e-mail une fois qu'il aura été signé par tous les signataires.",
"encrypted-pdf-not-support": "Les fichiers PDF actuellement cryptés ne sont pas pris en charge. ",
"document-signed-alert-4": "Toutes nos félicitations! 🎉 Ce document a été signé avec succès par tous les participants !",
"document-signed-alert-5": "Ce document a été signé par tous les signataires.",
@@ -654,6 +654,7 @@
"angular-npm-mssg-1" :"Pour intégrer OpenSign dans votre projet Angular, exécutez simplement la commande suivante :",
"quota-mail-info-head":"Limite mensuelle d'e-mails de signatures de demandes",
"quota-mail-info": "Vous pouvez envoyer jusqu'à 15 e-mails de demande de signature chaque mois. Mettez à niveau maintenant pour envoyer directement des demandes de signature illimitées.",
+ "quota-mail-reset": "Les crédits de votre email de demande de signature seront réinitialisés le",
"quota-mail": "Vous avez atteint votre limite de 15 e-mails de demande de signature pour ce mois. Mettez à niveau maintenant pour continuer à envoyer des e-mails directement.",
"quota-mail-tip-tip":"Astuce : Vous pouvez toujours signer un nombre <1>illimité de documents1> en partageant manuellement les liens de demande de signature.",
"quota-mail-head":"Quota atteint",
diff --git a/apps/OpenSign/src/components/Header.js b/apps/OpenSign/src/components/Header.js
index 2b9867240..2b8118b9b 100644
--- a/apps/OpenSign/src/components/Header.js
+++ b/apps/OpenSign/src/components/Header.js
@@ -6,6 +6,7 @@ import Parse from "parse";
import { useWindowSize } from "../hook/useWindowSize";
import {
checkIsSubscribed,
+ formatDate,
getAppLogo,
openInNewTab,
saveLanguageInLocal
@@ -33,6 +34,7 @@ const Header = ({ showSidebar, setIsMenu }) => {
);
const [emailUsed, setEmailUsed] = useState(0);
const [isModal, setIsModal] = useState(false);
+ const [emailResetDate, setEmailResetDate] = useState("");
const [showNotification, setShowNotification] = useState(
(!dismissedVersion || dismissedVersion !== current_notification_version) &&
true
@@ -66,6 +68,10 @@ const Header = ({ showSidebar, setIsMenu }) => {
setEmailUsed(MonthlyFreeEmails);
if (extUser) {
const _extUser = JSON.parse(JSON.stringify(extUser));
+ if (_extUser?.LastEmailCountReset?.iso) {
+ const resetDate = formatDate(_extUser?.LastEmailCountReset?.iso);
+ setEmailResetDate(resetDate);
+ }
localStorage.setItem("Extand_Class", JSON.stringify([_extUser]));
}
} catch (err) {
@@ -302,7 +308,11 @@ const Header = ({ showSidebar, setIsMenu }) => {
{x?.Email}
+Viewed on: {x?.ViewedOn}
+Signed on: {x?.SignedOn}
+{t(`report-heading.${item}`)} | +{t(`report-heading.${item}`)} | {t("public")} | +{t("public")} | )} {props.actions?.length > 0 && ( -+ | {t("action")} | )} @@ -1377,15 +1431,17 @@ const ReportTable = (props) => { props.ReportName === "Contactbook" ? (||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- {startIndex + index + 1} - | +{startIndex + index + 1} | )}{item?.Name}{" "} | -{item?.Email || "-"} | -{item?.Phone || "-"} | ++ {item?.Email || "-"} + | ++ {item?.Phone || "-"} + |
{props.actions?.length > 0 &&
@@ -1442,34 +1498,39 @@ const ReportTable = (props) => {
key={index}
>
{props.heading.includes("Sr.No") && (
-
+ |
{startIndex + index + 1}
|
)}
-
- {item?.Name}{" "}
+ |
+ |
{props?.heading?.includes("Reason") && (
- {item?.Name}
+ {item?.ExpiryDate?.iso && (
+
+ Expire: {formatDate(item?.ExpiryDate?.iso)}
+
+ )}
+ |
{item?.DeclineReason?.length > 25
? item?.DeclineReason?.slice(0, 25) + "..."
: item?.DeclineReason || "-"}
|
)}
{props.heading.includes("Note") && (
-
- {item?.Note?.length > 25
- ? item?.Note?.slice(0, 25) + "..."
- : item?.Note || "-"}
+ |
+ |
)}
{props.heading.includes("Folder") && (
- + {item?.Note || "-"} +
+ |
{item?.Folder?.Name ||
t("sidebar.OpenSign™ Drive")}
|
)}
-
+ |
|
- {props.ReportName === "In-progress documents" ? (
-
-
- {isModal[item.objectId] && (
- |
-
- ))}
-
- {x?.UserPtr?.Email || "-"}
-
-
-
- {x?.Activity === "Signed"
- ? new Date(x?.SignedOn)?.toUTCString()
- : new Date(
- x?.ViewedOn
- )?.toUTCString() || "-"}
-
-
+ {formatRow(item?.ExtUserPtr)}
+ |
+ )}
+ {props.heading.includes("Signers") &&
+ ["In-progress documents", "Need your sign"].includes(
+ props.ReportName
+ ) ? (
+
+ {!item?.IsSignyourself && item?.Placeholders && (
+ <>{formatStatusRow(item)}>
)}
|
) : (
-
- {formatRow(item?.ExtUserPtr)}
+ |
+ {!item?.IsSignyourself && item?.Placeholders ? (
+
+ ) : (
+ "-"
+ )}
|
)}
-
- {!item?.IsSignyourself && item?.Placeholders ? (
-
- ) : (
- "-"
- )}
- |
- {props.heading.includes("Expiry-date") &&
- item?.ExpiryDate?.iso && (
-
-
- {new Date(
- item?.ExpiryDate?.iso
- )?.toLocaleDateString()}
-
- |
- )}
{props.ReportName === "Templates" &&
isEnableSubscription && (
diff --git a/apps/OpenSign/src/primitives/QuotaCard.js b/apps/OpenSign/src/primitives/QuotaCard.js
index 68d29be9f..769bf0eba 100644
--- a/apps/OpenSign/src/primitives/QuotaCard.js
+++ b/apps/OpenSign/src/primitives/QuotaCard.js
@@ -2,7 +2,7 @@ import React from "react";
import { Trans, useTranslation } from "react-i18next";
import { useNavigate } from "react-router-dom";
-const QuotaCard = ({ isPaidInfo, handlClose }) => {
+const QuotaCard = ({ isPaidInfo, handlClose, emailResetDate }) => {
const { t } = useTranslation();
const navigate = useNavigate();
return isPaidInfo ? (
@@ -17,6 +17,11 @@ const QuotaCard = ({ isPaidInfo, handlClose }) => {
| {t("quota-mail-info-head")}{t("quota-mail-info")} + {emailResetDate && ( ++ {t("quota-mail-reset")} {emailResetDate} + + )}
{t("quota-mail")} {t("quota-mail-tip")}
+ {t("quota-mail-reset")} {emailResetDate}
+ |