# RDLC Integration

### Übersicht

Die VR Pay Extension stellt drei Datenfelder bereit, die Sie in Ihren Reports verwenden können:

<table><thead><tr><th width="203.1497802734375">Feld</th><th width="139.2322998046875">Typ</th><th width="305.42138671875">Beschreibung</th></tr></thead><tbody><tr><td><code>VRPayQRCodeImageSOU</code></td><td>Text (Base64)</td><td>Das QR-Code-Bild als Base64-String</td></tr><tr><td><code>VRPayPaymentURLSOU</code></td><td>Text</td><td>Die Payment-URL als Text</td></tr><tr><td><code>VRPayQRCodeEnabledSOU</code></td><td>Boolean</td><td>Ob QR-Codes aktiviert sind</td></tr></tbody></table>

### Schritt 1: Report Extension erstellen

Erstellen Sie eine Report Extension für Ihren bestehenden Rechnungsreport:

```al
reportextension 50100 "My Sales Invoice QR Ext" extends "My Sales Invoice Report"
{
    dataset
    {
        add(Header)  // oder der Name Ihres Header-DataItems
        {
            column(VRPayQRCodeImage; VRPayQRCodeImage)
            {
            }
            column(VRPayPaymentURL; VRPayPaymentURL)
            {
            }
            column(VRPayQRCodeEnabled; VRPayQRCodeEnabled)
            {
            }
        }

        modify(Header)
        {
            trigger OnAfterAfterGetRecord()
            begin
                LoadVRPayData(Header."No.");
            end;
        }
    }

    trigger OnPreReport()
    begin
        InitVRPaySettings();
    end;

    var
        VRPayQRCodeImage: Text;
        VRPayPaymentURL: Text;
        VRPayQRCodeEnabled: Boolean;

    local procedure InitVRPaySettings()
    var
        VRPaySetup: Record "VRPaySetupSOU";
    begin
        if VRPaySetup.Get() then
            VRPayQRCodeEnabled := VRPaySetup."Enable QR Code on Invoice";
    end;

    local procedure LoadVRPayData(InvoiceNo: Code[20])
    var
        SalesInvoiceHeader: Record "Sales Invoice Header";
        VRPayQRCode: Record "VRPayQRCodeSOU";
        VRPayQRCodeMgt: Codeunit "VRPayQRCodeMgtSOU";
        VRPayPaymentLinkMgt: Codeunit "VRPayPaymentLinkMgtSOU";
    begin
        Clear(VRPayQRCodeImage);
        Clear(VRPayPaymentURL);

        if not VRPayQRCodeEnabled then
            exit;

        // Bestehenden QR-Code laden
        VRPayQRCodeImage := VRPayQRCodeMgt.GetQRCodeImageAsBase64ForInvoice(InvoiceNo);

        // Wenn kein QR-Code existiert, automatisch erstellen
        if VRPayQRCodeImage = '' then begin
            if SalesInvoiceHeader.Get(InvoiceNo) then begin
                if VRPayQRCodeMgt.GetOrCreateQRCodeForInvoice(SalesInvoiceHeader, VRPayQRCode) then
                    VRPayQRCodeImage := VRPayQRCode.GetQRCodeImageAsBase64();
            end;
        end;

        // Payment URL laden oder generieren
        VRPayPaymentURL := VRPayPaymentLinkMgt.GetPaymentURLForInvoice(InvoiceNo);
        if VRPayPaymentURL = '' then begin
            if SalesInvoiceHeader.Get(InvoiceNo) then
                VRPayPaymentURL := VRPayPaymentLinkMgt.GenerateDirectPaymentURL(SalesInvoiceHeader);
        end;
    end;
}
```

### Schritt 2: RDLC Layout anpassen

#### 2.1 Report in Visual Studio öffnen

1. Exportieren Sie das RDLC-Layout aus Business Central.
2. Öffnen Sie die `.rdl`-Datei in Visual Studio.
3. QR-Code-Bereich hinzufügen (siehe unten).
4. Layout speichern und in BC importieren.

#### 2.2 QR-Code Bild hinzufügen

Fügen Sie ein *Image*-Element an der gewünschten Stelle ein:

```xml
<Image Name="VRPayQRCode">
  <Source>Database</Source>
  <MIMEType>image/png</MIMEType>
  <Value>=Fields!VRPayQRCodeImage.Value</Value>
  <Sizing>FitProportional</Sizing>
  <Visibility>
    <Hidden>=IIF(Fields!VRPayQRCodeEnabled.Value = True AND Len(Fields!VRPayQRCodeImage.Value) > 0, False, True)</Hidden>
  </Visibility>
  <Top>0cm</Top>
  <Left>0cm</Left>
  <Height>3cm</Height>
  <Width>3cm</Width>
</Image>
```

{% hint style="warning" %}
**Positionierung**

* Platzieren Sie den QR-Code rechts unten auf der Rechnung.
* Empfohlene Größe: 3x3 cm bis 4x4 cm.
* Lassen Sie genug Platz zum Scannen.
  {% endhint %}

#### 2.3 Payment URL als Text hinzufügen (optional)

```xml
<Textbox Name="VRPayURL">
  <Value>=Fields!VRPayPaymentURL.Value</Value>
  <Visibility>
    <Hidden>=IIF(Fields!VRPayQRCodeEnabled.Value = True AND Len(Fields!VRPayPaymentURL.Value) > 0, False, True)</Hidden>
  </Visibility>
  <Style>
    <FontSize>8pt</FontSize>
    <Color>Gray</Color>
  </Style>
</Textbox>
```

#### 2.4 Überschrift hinzufügen (optional)

```xml
<Textbox Name="VRPayHeader">
  <Value>Online bezahlen:</Value>
  <Visibility>
    <Hidden>=IIF(Fields!VRPayQRCodeEnabled.Value = True AND Len(Fields!VRPayQRCodeImage.Value) > 0, False, True)</Hidden>
  </Visibility>
  <Style>
    <FontWeight>Bold</FontWeight>
    <FontSize>10pt</FontSize>
  </Style>
</Textbox>
```

### Schritt 3: Komplettes RDLC-Beispiel

Hier ein vollständiges Beispiel für einen QR-Code-Bereich:

```xml
<!-- VR Pay QR-Code Bereich -->
<Rectangle Name="VRPaySection">
  <ReportItems>
    <!-- Überschrift -->
    <Textbox Name="txtVRPayHeader">
      <CanGrow>true</CanGrow>
      <Value>Jetzt online bezahlen:</Value>
      <Top>0cm</Top>
      <Left>0cm</Left>
      <Height>0.5cm</Height>
      <Width>4cm</Width>
      <Style>
        <FontWeight>Bold</FontWeight>
        <FontSize>9pt</FontSize>
        <PaddingBottom>2pt</PaddingBottom>
      </Style>
    </Textbox>
    
    <!-- QR-Code Bild -->
    <Image Name="imgVRPayQRCode">
      <Source>Database</Source>
      <MIMEType>image/png</MIMEType>
      <Value>=Fields!VRPayQRCodeImage.Value</Value>
      <Sizing>FitProportional</Sizing>
      <Top>0.6cm</Top>
      <Left>0cm</Left>
      <Height>3cm</Height>
      <Width>3cm</Width>
      <Style>
        <BorderStyle>
          <Default>Solid</Default>
        </BorderStyle>
        <BorderWidth>
          <Default>1pt</Default>
        </BorderWidth>
        <BorderColor>
          <Default>LightGray</Default>
        </BorderColor>
      </Style>
    </Image>
    
    <!-- Hinweistext -->
    <Textbox Name="txtVRPayHint">
      <CanGrow>true</CanGrow>
      <Value>Scannen Sie den QR-Code mit Ihrem Smartphone, um die Rechnung bequem online zu bezahlen.</Value>
      <Top>3.8cm</Top>
      <Left>0cm</Left>
      <Height>0.8cm</Height>
      <Width>4cm</Width>
      <Style>
        <FontSize>7pt</FontSize>
        <Color>Gray</Color>
      </Style>
    </Textbox>
  </ReportItems>
  
  <!-- Gesamter Bereich nur sichtbar wenn aktiviert -->
  <Visibility>
    <Hidden>=IIF(Fields!VRPayQRCodeEnabled.Value = True AND Len(Fields!VRPayQRCodeImage.Value) > 0, False, True)</Hidden>
  </Visibility>
  
  <Top>15cm</Top>
  <Left>12cm</Left>
  <Height>5cm</Height>
  <Width>4.5cm</Width>
</Rectangle>
```

### Schritt 4: Layout importieren

1. Speichern Sie die `.rdl`-Datei.
2. In Business Central: Suchen Sie nach *"Berichtslayouts".*
3. Finden Sie Ihren Report und klicken Sie auf "*Importieren".*
4. Wählen Sie die bearbeitete `.rdl`-Datei.
5. Optional: Als Standardlayout festlegen.

{% hint style="info" %}
**Sichtbarkeit**

Die Visibility-Bedingung stellt sicher, dass der QR-Code nur angezeigt wird wenn:

1. QR-Codes im *VR Pay Setup* aktiviert sind.
2. Ein QR-Code-Bild vorhanden ist.
   {% endhint %}

```xml
<Hidden>=IIF(Fields!VRPayQRCodeEnabled.Value = True AND Len(Fields!VRPayQRCodeImage.Value) > 0, False, True)</Hidden>
```

### Word Layout

Für Word-Layouts verwenden Sie einen Custom XML Part:

```xml
<w:sdt>
  <w:sdtContent>
    <w:r>
      <w:drawing>
        <wp:inline>
          <a:graphic>
            <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture">
              <pic:blipFill>
                <a:blip r:embed="VRPayQRCodeImage"/>
              </pic:blipFill>
            </a:graphicData>
          </a:graphic>
        </wp:inline>
      </w:drawing>
    </w:r>
  </w:sdtContent>
</w:sdt>
```

Oder einfacher: Verwenden Sie das mitgelieferte Word-Layout `VRPayInvoiceWithQRCodeSOU.docx` als Vorlage.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.solutioo.de/vr-pay-integration/anwendung/rdlc-integration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
