Zum Hauptinhalt springen

ClientHeaderCode Script

Customizing im clientHeaderCode Script

Schritt 1: Script kopieren und umbenennen

Das Skript ou.spc.ptpINV.clientHeaderCode muss kopiert und in ou.cust.ptpINV.clientHeaderCode umbenannt werden.

Schritt 2: Weitere UserExits einfügen

Skripte, die im Browser geladen werden sollen, können im Array userExits des neuen clientHeaderCode Scripts eingetragen werden.

Beispiel:

const userExits = [
"ou.sp.ptpINV.userexit.callbacks.calc",
"ou.sp.ptpINV.userexit.callbacks.enum",
"ou.sp.ptpINV.userexit.callbacks.invoice",
"ou.sp.ptpINV.userexit.callbacks.mail",
"ou.sp.ptpINV.userexit.functions.invoice",
"ou.sp.ptpINV.userexit.functions.rmbMultiTable",
"ou.sp.ptpINV.userexit.functions.robMultiTable",
"ou.sp.ptpINV.userexit.invplus.calculationAmount",
"ou.sp.ptpINV.userexit.invplus.calculationAmountMultiTable",
"ou.sp.ptpINV.userexit.invplus.calculationCashDiscount",
"ou.sp.ptpINV.userexit.invplus.configuration",
"ou.sp.ptpINV.userexit.invplus.fieldMapping",
"ou.sp.ptpINV.userexit.invplus.locale",
"ou.sp.ptpINV.userexit.invplus.splitCalculationMultiTable",
"ou.sp.ptpINV.userexit.invplus.utils",
"ou.sp.ptpINV.userexit.invplus.validationAmountMultiTable",
/* Neues custom Skript, das im Client ausgeführt werden soll */
"ou.cust.ptpINV.userexit.someCustomUserExit",
/* ... */
];

Typen von UserExit-Skripten

Die im clientHeaderCode geladenen UserExit-Skripte lassen sich in zwei Kategorien unterteilen, die beim Customizing unterschiedlich behandelt werden müssen.

Callback-Skripte (*.userexit.callbacks.*)

Diese Skripte registrieren Callbacks über das exitRegistry (z.B. registerFileFieldExitCallback, registerFileExitCallback). Da pro Feld mehrere Callbacks registriert werden können und alle registrierten Callbacks ausgeführt werden, muss beim Customizing wie folgt vorgegangen werden:

  1. Das Original-Skript komplett kopieren und in ein Cust-Skript umbenennen (z.B. ou.cust.ptpINV.userexit.callbacks.invoice).
  2. Die gewünschte Stelle im kopierten Skript anpassen.
  3. Das Original-Skript im clientHeaderCode durch das Cust-Skript austauschen — also das Original aus dem userExits-Array entfernen und das Cust-Skript eintragen.
const userExits = [
// Original entfernt:
// "ou.sp.ptpINV.userexit.callbacks.invoice",
// Cust-Skript stattdessen eingetragen:
"ou.cust.ptpINV.userexit.callbacks.invoice",
/* ... */
];

Funktions-Skripte (*.userexit.functions.*)

Diese Skripte stellen globale Funktionen über mustSetClientModule/setClientModule bereit. Da bei gleichnamigen Funktionen immer die letzte Definition in der Ladereihenfolge des clientHeaderCode gewinnt, reicht es beim Customizing aus:

  1. Ein Cust-Skript anlegen, das nur die zu überschreibenden Funktionen enthält (z.B. ou.cust.ptpINV.userexit.functions.invoice).
  2. Das Cust-Skript im clientHeaderCode nach dem Original-Skript eintragen — das Original nicht entfernen.
warnung

Das Cust-Skript muss im userExits-Array nach dem Original-Skript stehen, damit die gleichnamigen Funktionen korrekt überschrieben werden.

const userExits = [
// Original bleibt:
"ou.sp.ptpINV.userexit.functions.invoice",
// Cust-Skript wird danach eingetragen:
"ou.cust.ptpINV.userexit.functions.invoice",
/* ... */
];

CSS-Styles

Zusätzliche CSS-Styles können folgendermaßen hinzugefügt werden:

const { invoiceCss } = require("./ou.spc.ptpINV.clientHeaderCode.css");
const { customCss } = require("./ou.cust.ptpINV.someCustom.css");
/* ... */

/* ... */
clientHeader.addStyle(invoiceCss);
clientHeader.addStyle(customCss);
/* ... */