Erweiterungen der Erfassung und/oder der Bearbeitung eines Beleges

Zusätzliche Daten

Es soll das Feld Hersteller-Artikelnummer aus dem Artikelstamm pro Position in der Verkaufsbelegerfassung angezeigt werden.

Folgende Metadaten sind anzulegen:

  • Anlage der Datenstruktur „strVKBelegPosition“ mit „Anhängen an Datenstruktur der Partner-Kennung“ = „Sage.Wawi“
    • Anlage des Datenstrukturfeldes „BPKHArtikelnummer“ entsprechend der Tabellendefinition und Anforderung, hier jetzt:
      • „Feldtitel“ = „H-Artikelnummer“ (analog Artikelstamm)
      • „Datentyp“ = „String“
      • „Schreibschutz?“ aktivieren (kein Ändern und Zurückschreiben in den Artikelstamm)
      • „Maximale Länge“ = „20“
  • Anlage des Multi-Daten-Edit-Elements „mdeVKBelegPositionen“ mit „Anhängen an Multi-Data-Edit-Element der Partner-Kennung“ = „Sage.Wawi“
    • Anlage der Vorlage „Standard“ mit Aktivierung von „Feld-Attribute anhängen?“
    • Anlage oder Importieren des Feldes „BPKHArtikelnummer“ mit „Spaltennummer“ = „0“
  • Anlage des Daten-Edit-Elements „ediVKBelegerfassung“ mit „Anhängen an Daten-Edit-Element der Partner-Kennung“ = „Sage.Wawi“
    • Anlage des Registers „Positionen“ mit Aktivierung „Feld-Attribute anhängen?“
    • Anlage der Feldgruppe „PositionSonstiges“ mit Aktivierung „Feld-Attribute anhängen?“
    • Anlage des Feldes „BPKHArtikelnummer“ (die Position spielt keine Rolle, da neue Felder in einer bestehenden Feldgruppe immer angehängt werden)

Für den Transfer zwischen Client und Server müssen diese DCMs verwendet werden:

  • VKBelegPositionProxyContainerPositionToBelegPosition
  • VKBelegPositionProxyBelegPositionToContainerPosition

Für das Bereitstellen der Daten bei Neuanlage einer Position muss diese DCM verwendet werden:

  • VKBelegPositionSetArtikel

Mit der Verwendung der DCM der Beleg-Engine haben wir auch die clientseite Erzeugung von Positionen (Variantenmatrix, Zubehör) berücksichtigt.

Für das Bereitstellen der Daten für andere Aktionen müssen diese DCMs verwendet werden:

  • VKBelegLoad
  • VKBelegPositionClone
  • VKBelegPositionCopyValues
  • VKBelegProxyAfterTransform
  • VKBelegProxyAfterTransformVorgang
  • VKBelegPositionProxyPaste

Hinweis für Developer Partner

WDB-Eintrag 203334:

Anhang ADID.ZusatzDaten.Position.rar/ ADID.ZusatzDaten.Position81.rar

Druck eines Etiketts/Labels für eine Position in Belegsprache

Es soll für eine selektierte Position ein Etikettendruck aus dem Kontextmenü der Position möglich sein. Die Textfelder des Etiketts sollen in Belegsprache (gegebenenfalls auch übersetzt) gedruckt werden. Der Etikettendruck darf nur für gespeicherte Lieferbelege freigeschaltet werden.

Für die Bereitstellung der Daten verwenden wir eine temporäre Tabelle. Die SQL-Anweisung für die Anlage ist wie folgt:

CREATE TABLE "tBPKPrintEtiketten"
(
    "ConnID"    	INTEGER NOT NULL DEFAULT 0,
    "Kto"    		VARCHAR(20) NULL,
    "Matchcode"    	VARCHAR(50) NULL,
    "Belegnummer"   VARCHAR(20) NULL,
    "Position"    	VARCHAR(50) NULL,
    "Artikelnummer" VARCHAR(31) NULL,
    "Bezeichnung1"  VARCHAR(50) NULL,
    "Menge"    		MONEY NULL DEFAULT 0,
    "Mengeneinheit" VARCHAR(5) NULL,
    CONSTRAINT PK_tBPKPrintEtiketten PRIMARY KEY CLUSTERED ("ConnID")
)
GO
INSERT INTO USysCatalog ([Table], Revision) VALUES ('tBPKPrintEtiketten', 1)
GO

Da wir die ConnectionID als Schlüssel verwenden, werden wir die Daten serverseitig ermitteln, wir verwenden also einen Gechäftsprozess.

Wir leiten von BusinessProcessBase ab und codieren die Ermittlung der Daten. Um die Daten ermitteln zu können brauchen wir die Handles vom Beleg und der Position. Um den Druck übersetzen zu können, brauchen wir die Belegsprache. Alle drei Daten sind in der Erfassung bekannt und wir werden sie als Parameter "BelID", "BelPosID" und "rpSprache" (wird für die Übersetzung genauso benötigt) übergeben.

Wir legen folgende Metadaten an:

  • Anlage des Geschäftsprozess "Etikettendruck"
    • "DLL-Name" = "<ihr_dll_name>" (im Beispiel "ADID.RealTimeData.dll")
    • "Klassenname" = "<ihr_klassenname>" (im Beispiel "ADID.RealTimeData.DruckEtiketten")
  • Anlage der Datenquelle "dtsEtiketten". Wir erstellen die Datenquelle mit dem Assistenten "Tabelle importieren" (tBPKPrintEtiketten)
    • "Titel" = "Etiketten"
    • "SQL-Where-Bedingung" = "ConnID = $[Parameter(ConnID)]"
    • "Geschäftsprozess" = "<ihre_benamung_partnerid_loesungid" (im Beispiel "Etikettendruck.100065830.ADID_DruckInBelegsprache")
    • "Geschäftsprozess vor SQL-Abfrage aufrufen?" aktiiveren

Sollen Parameter in einem Bericht und/oder dessen Geschäftsprozess verwendet werden, so sind diese als Datenstrukturfelder des Selektionsdialoges des Berichtes anzulegen.

  • Anlage der Datenstruktur "strEtiketten"
    • Anlage des Datenstrukturfeldes "BelID"
      • "Datentyp" = "Integer"
    • Anlage des Datenstrukturfeldes "BelPosID"
      • "Datentyp" = "Integer"
    • Anlage des Datenstrukturfeldes "rpSprache"
    • Anlage des Datenstrukturfeldes "ConnID"
      • "Datentyp" = "Integer"
  • Anlage des Selektionselementes "selEitketten"
    • "Datenstruktur" = "strEtiketten.ihre_partnerid.ihre_loesungid"
    • Anlage der Selektionselement-Registerkarte "NamedParameters"
      • Import aller Felder der Datenstruktur

Damit haben wir die Metadaten angelegt, die wir für die Berichtserstellung benötigen. Der Bericht soll unabhängig von der Lokalisierung auch in Fremdsprache (im Beispiel Belegsprache) gedruckt werden können. Die Übersetzungen sollen dazu aus dem Wörterbuch (KHKDictonary) gelesen werden.

Soll ein Bericht Übersetzungen einer Fremdsprache aus KHKDictonary lesen und drucken, dann müssen drei Punkte gegeben sein.

  • In den Metadaten des Berichtes muss hinterlegt sein
    • "Berichtstyp" = "Korrespondenzformular"
    • "Berichtssubtyp" = "normales Korrespondenzformular"
  • Im Bericht muss der NamedParameter "rpSprache" vorhanden und mit einer gültigen Sprache hinterlegt sein
  • Anlage des Berichtes "rptEtiketten"
    • "Titel" = "Etiketten"
    • "Berichtstyp" = "Korrespondenzformular"
    • "Berichtssubtyp" = "normales Korrespondenzformular"
    • "Selektions-Element" = "selEtiketten.ihre_partnerid.ihre_loesungid"
    • "Haupt-Datenquelle" = "dtsEtiketten.ihre_partnerid.ihre_loesungid"
    • "für Wawi?" aktivieren

Der Bericht selber enthält ein Datenband, in dem die Textfelder (Label und Inhalt) gedruckt werden.

Der Bericht soll aus dem Kontextmenü der Positionen aufgerufen werden und aufgrund von bestimmten Kriterien freigeschaltet sein. Das Freischalten steuern wir mit der Eigenschaft "Festlegung Aktivierung durch Feld" des Kontextmenüeintrages. Hier können auch Daten aus Feldern der Belegerfassung abgefragt werden. Stehen aber nicht alle Informationen zur Verfügung, dann muss eine serverseitige Prüfung erfolgen. Dazu benutzen wir ein eigenes boolsches Feld, welches serverseitig auf True/False gesetzt wird.

Wir legen folgende Metadaten an:

  •  Anlage der Datenstruktur "strVKBelegPosition“ mit "Anhängen an Datenstruktur der Partner-Kennung“ = "Sage.Wawi“
    • Anlage des Datenstrukturfeldes "BPKMenuEtikettendruck“
      • "Datentyp“ = "Boolean"
      • "Standard-Wert" = "False"
  • Anlage des Multi-Daten-Edit-Elements "mdeVKBelegPositionen“ mit "Anhängen an Multi-Data-Edit-Element der Partner-Kennung“ = "Sage.Wawi“
    • Anlage der Vorlage "Standard“ mit Aktivierung von "Feld-Attribute anhängen?“
    • Anlage oder Importieren des Feldes "BPKMenuEtikettendruck“ mit "Sichtbarkeit" = "Versteckt"

Für die Ermittlung des Flags verwenden wir diese DCM:

  • VKBelegPositionProxyBelegPositionToContainerPosition

Bleibt nur noch die Frage, wie kann man die Übersetzung abfragen. Die Übersetzung selbst, wird mit der Systemfunktion des Translationservice im Mandantenobjekt abgefragt. Da es eine Interaktion mit dem Anwender ist, muss die Funktion auf dem Client ausgeführt werden. Dafür verwenden wir diese DCM:

  • ReportBeforePrintRequest

Die DCM wird auf dem Client ausgeführt und enthält auch alle NamedParameter (wir benötigen ja auf alle Fälle die Sprache). Wir hinterlegen die beiden Ereignissen in den Metadaten oder tragen Sie in die OL.DCM ein. Bei der Codierung der DCM "ReportBeforePrintRequest" verwenden wir dann auch die entsprechende Methode, um die Inhalte der Textfelder des Reportes zu erhalten.

Die Codierung erfolgte in Version 8.0. Da es in diesen Bereich keine Änderung gibt, kann es, was die Codierung angeht 1:1 in Version 8.1 implementiert werden.

Hinweis für Developer Partner

WDB-Eintrag 203334:

Anhang ADID.DruckInBelegsprache.rar

Wie oben erwähnt, werden die NamedParameter (Name und Inhalt) durch die Datenstrukturfelder des Selektionselementes an den Bericht übergeben. Nun gibt es neben den im Beispiel erwähnten Aufruf durch ein Makro noch zwei weitere Möglichkeiten einen Bericht aufzurufen.

  • aus dem Regiezentrum mit vorgeschalteten Selektionselement

Der Anwender gibt die Daten selber ein, oder man ermittelt im Makro "Beim Anzeigen" die Daten (z.B. für versteckte Felder).

  • aus Access mit oder ohne Aufruf des Selektionselementes

Hierbei gibt es eine andere Möglichkeit, die Daten an das Selektionselement zu übergeben.

Hinweis für Developer Partner

WDB-Eintrag 203334:

Dokument "Zusatzdokumentation zum Wiki für Developer Partner", Übergabe NamedParameter an Bericht aus Access