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:
- Das Original-Skript komplett kopieren und in ein Cust-Skript umbenennen (z.B.
ou.cust.ptpINV.userexit.callbacks.invoice). - Die gewünschte Stelle im kopierten Skript anpassen.
- Das Original-Skript im
clientHeaderCodedurch das Cust-Skript austauschen — also das Original aus demuserExits-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:
- Ein Cust-Skript anlegen, das nur die zu überschreibenden Funktionen enthält (z.B.
ou.cust.ptpINV.userexit.functions.invoice). - Das Cust-Skript im
clientHeaderCodenach dem Original-Skript eintragen — das Original nicht entfernen.
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);
/* ... */