Updated documentation to reflect the migration from WebUI to EnvelopeGenerator.Server, including a new "Documentation Catalog" in `AGENTS.md`. Adjusted route mappings, render modes, and directory structure for Blazor components. Revised coordinate system documentation and CSS for status colors to align with the new architecture. Updated YARP proxy and PDF.js configuration paths. Migrated `MIGRATION_PLAN.md` to modernize `EnvelopeGenerator.Service` with C# Worker Service equivalents. Updated `FORM_APPLICATION_CONTEXT.md` and `RECEIVER_PDF_VIEWER_CONTEXT.md` to reflect the new architecture and planned viewer integration. Fixed German translation issues in `fix-report-label-read-and-confirmed.md`. Standardized formatting and terminology across all files.
136 lines
4.0 KiB
Markdown
136 lines
4.0 KiB
Markdown
# Fix: Report Label "Read and confirmed" for Read and Sign Envelopes
|
|
|
|
## Status
|
|
✅ **COMPLETED**
|
|
|
|
## Git Branch
|
|
```
|
|
fix/report-label-read-and-confirmed
|
|
```
|
|
|
|
---
|
|
|
|
## Problem
|
|
|
|
In the **Signature Certificate report** (`Signierungszertifikat`), the history event
|
|
list always showed **"Document signed"** for status `DocumentSigned` (code `2005`) —
|
|
even when the envelope type was **"Read and Sign"** (`EnvelopeTypeId = 2`).
|
|
|
|
For "Read and Sign" envelopes the correct label must be **"Read and confirmed"**
|
|
(DE: **"Gelesen und bestätigt"**).
|
|
|
|
### Screenshot reference
|
|
The report shows a table with columns *Ereignis | Benutzer | Zeitstempel*.
|
|
The row with status 2005 displayed "Document signed" where "Read and confirmed"
|
|
was expected.
|
|
|
|
---
|
|
|
|
## Root Cause
|
|
|
|
`ReportItem.ItemStatusTranslated` in
|
|
`EnvelopeGenerator.CommonServices\Jobs\FinalizeDocument\ReportItem.vb`
|
|
resolved the display label by calling:
|
|
|
|
```vb
|
|
My.Resources.Model.ResourceManager.GetString(ItemStatus.ToString())
|
|
```
|
|
|
|
There was **no branching logic** to handle the Read and Sign envelope type.
|
|
The same `DocumentSigned` key was always used regardless of envelope type.
|
|
|
|
---
|
|
|
|
## Solution
|
|
|
|
### Convention followed
|
|
The project already uses a `RaC` (**R**ead **a**nd **C**onfirm) suffix for
|
|
Read-and-Sign label variants across all resource files:
|
|
|
|
| Existing RaC keys |
|
|
|---|
|
|
| `DocumentRejectedRaC` |
|
|
| `EnvelopeReportCreatedRaC` |
|
|
| `MessageConfirmationSentRaC` |
|
|
|
|
### New resource key added: `DocumentSignedRaC`
|
|
|
|
| Resource file | Value |
|
|
|---|---|
|
|
| `Model.resx` (DE, default) | `Gelesen und bestätigt` |
|
|
| `Model.en.resx` (EN) | `Read and confirmed` |
|
|
|
|
### Logic change in `ReportItem.vb`
|
|
|
|
```vb
|
|
Public ReadOnly Property ItemStatusTranslated As String
|
|
Get
|
|
Dim oStatusKey = ItemStatus.ToString()
|
|
|
|
If ItemStatus = EnvelopeStatus.DocumentSigned AndAlso
|
|
Envelope IsNot Nothing AndAlso
|
|
Envelope.IsReadAndConfirm() Then
|
|
oStatusKey = "DocumentSignedRaC"
|
|
End If
|
|
|
|
Return My.Resources.Model.ResourceManager.GetString(oStatusKey)
|
|
End Get
|
|
End Property
|
|
```
|
|
|
|
`Envelope.IsReadAndConfirm()` is defined in
|
|
`EnvelopeGenerator.Domain\Interfaces\IEnvelope.cs` and returns `true`
|
|
when `EnvelopeTypeId == 2`.
|
|
|
|
---
|
|
|
|
## Files Changed
|
|
|
|
| # | File | Change | Status |
|
|
|---|---|---|---|
|
|
| 1 | `EnvelopeGenerator.CommonServices\Jobs\FinalizeDocument\ReportItem.vb` | Added `RaC` branching logic to `ItemStatusTranslated` | ? Done |
|
|
| 2 | `EnvelopeGenerator.Domain\Resources\Model.resx` | Added `DocumentSignedRaC` = `Gelesen und bestätigt` | ✅ Done |
|
|
| 3 | `EnvelopeGenerator.CommonServices\Strings\Model.resx` | Added `DocumentSignedRaC` = `Gelesen und bestätigt` | ✅ Done |
|
|
| 4 | `EnvelopeGenerator.CommonServices\Strings\Model.en.resx` | Added `DocumentSignedRaC` = `Read and confirmed` | ✅ Done |
|
|
| 5 | `EnvelopeGenerator.Domain\Resources\Model.Designer.cs` | Added `DocumentSignedRaC` strongly-typed property | ✅ Done |
|
|
|
|
---
|
|
|
|
## How to resume (for next agent)
|
|
|
|
All pending items are **resource file additions only**.
|
|
Each file needs one new `<data>` block inserted **directly after** the existing
|
|
`DocumentSigned` entry:
|
|
|
|
```xml
|
|
<data name="DocumentSignedRaC" xml:space="preserve">
|
|
<value>Gelesen und bestätigt</value> <!-- DE files -->
|
|
<!-- OR -->
|
|
<value>Read and confirmed</value> <!-- EN file -->
|
|
</data>
|
|
```
|
|
|
|
`Model.Designer.cs` also needs a new strongly-typed property added after
|
|
`DocumentSigned`:
|
|
|
|
```csharp
|
|
/// <summary>
|
|
/// Looks up a localized string similar to Gelesen und bestätigt.
|
|
/// </summary>
|
|
public static string DocumentSignedRaC {
|
|
get {
|
|
return ResourceManager.GetString("DocumentSignedRaC", resourceCulture);
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Testing
|
|
|
|
After changes, generate a Signature Certificate report for a **Read and Sign**
|
|
envelope and verify:
|
|
- History row with status 2005 shows **"Read and confirmed"** (EN)
|
|
- History row with status 2005 shows **"Gelesen und bestätigt"** (DE)
|
|
- Regular (non-RaC) envelopes still show **"Document signed"** / **"Dokument unterzeichnet"**
|