Upgrade auf 23.1.0
Unbedingt die aktuellen Installationsvoraussetzungen vorab prüfen!
Diese Anleitung berücksichtigt immer nur den Sprung von der vorhergehenden Version zu der gerade beschriebenen Version. Bei Upgrades über mehrere Versionen hinweg müssen alle Änderungen der Zwischenversionen ebenfalls beachtet werden! Siehe genereller Ablauf von Upgrades.
Was wurde gemacht ?
Zusammenfassung
-
eInvoice: Erweiterung Standard-Mappentyp INV-543
- Es gibt nun zwei neue Felder im
ptpInvoiceMappentyp:Leitweg-ID: Wird durch Data-Rai (Insiders) befüllt. Das Feld kann bei Zugferd und xRechnung mitgeliefert werden. ("name": "INV_LEITWEG_ID",)E-Invoice-Typ: Wird durch Data-Rai (Insiders) befüllt, sofern ("name": "INV_IS_XINVOICE",) true oder false ODER ("name": "INV_IS_ZUGFERD",) true oder false- Mögliche Werte Stand heute ausliefern: XRechnung, ZUGFeRD, Sonstige Rechnung
- Handling eRechnung neu in den Workflow schicken INV-546
- Hat eine ptpInvoice Mappe nach der Beleglesung eine XML und PDF Datei mit gleichem Namen und wird die Mappe erneut in Umlauf gebracht, soll die PDF Datei entfernt werden (diese wird durch Insiders erzeugt)
- Es gibt nun zwei neue Felder im
-
eInvoice: Bereinigung alte Funktionalität INV-541
- Der Ordner
ptpInvoice10eInvoicewurde entfernt - Das Feld
hasEInvoiceDocumentim MappentypptpInvoiceund alle dazugehörige obsolete Funktionalität wurde entfernt
- Der Ordner
-
Freigabeprozess: Ein Parameter, um die minimale Anzahl der benötigten Freigeber festzulegen, wurde hinzugefügt INV-556:
-
Neue benutzerdefinierte Aktion "Bemerkung hinzufügen" am Mappentyp
ptpInvoiceINV-557 -
Freigabeprozess: Ist die Vererbung im Freigabeprozess deaktiviert und die Freigabegrenze eines Vertreters nicht hoch genug, wird nun entweder der nächste Freigeber aktiviert oder ein Fehler geworfen INV-558
-
Freigabeprozess: Ein Parameter, um die maximale Anzahl der im Cockpit dargestellten Freigabeschritte einzustellen, wurde hinzugefügt INV-559
-
Freigabeprozess: Der Freigabepfad wird nun schon einen Schritt früher im Workflow konstruiert. D.h. bereits der fachliche Prüfer kann den Pfad einsehen INV-561
Manuell auszuführende Schritte
-
Die neue benutzerdefinierte Aktion "Bemerkung hinzufügen" soll nur angezeigt werden, wenn gilt
globalState < 100. Dies muss im Skriptou.cust.ptpINV.filetype.action.approvedButtonsfestgelegt werden:if (enumval[i] === "addCommentOrAttachments") {
if (globalState === "100") {
enumval[i] = "";
}
}
Diese Anleitung berücksichtig immer nur den Sprung von der vorhergehenden Version zu der gerade beschrieben Version. Bei Upgrades über mehrere Versionen hinweg müssen alle Änderungen der Zwischenversionen ebenfalls beachtet werden!
- Workflow-Änderungen:
- Die Aktion "fachliche Freigabe" (Action_3) umbenannt in "fachliche Prüfung" (INV-561)
- Den Knoten "DecisionMerge_301" durch einen neuen Signalausgang vom Typ "Javascript" mit dem Label "Freigabeliste erstellen" und dem verknüpften Skript "ou.spc.ptpINV.workflow.sendsignal.createReleaseList" ersetzen (INV-561)
- Der Pfeil "pf:workflow.ptpInvoice.action.backToVerification" (ControlFlow_278) ausgehend von der Aktion "Prüfen und Buchen" (Action_22) geht nicht mehr direkt zur Aktion "fachliche Prüfung" (Action_3) sondern zum neu erstellen Signalausgang "Freigabeliste erstellen" (INV-561)
- Der Pfeil "pf:workflow.ptpInvoice.action.rejected" (ControlFlow_152) ausgehend von der Aktion "Betragsfreigabe" (Action_151) geht nicht mehr direkt zur Aktion "fachliche Prüfung" (Action_3) sondern zum neu erstellen Signalausgang "Freigabeliste erstellen" (INV-561)
Portalscripts
ptpINVcust
Das Skript ou.cust.ptpINV.workflow.guard.verified muss geupdated werden (INV-558 & INV-561):
context.enableModules();
var tslib = require("ou.sp.externals.tslib");
var Logging = require("ou.sp.Logging").Logging;
var LibReleaseList = require("ou.spc.ptpINV.lib.release.list");
var otrAssert = tslib.__importDefault(require("otrAssert"));
var settings = require("ou.sp.ptpINV.settings");
var logger = Logging.use("ou.cust.ptpINV.workflow.guard.verified");
// 1 = Fachliche Freigabe erfolgreich, -1 = Fachliche Freigabe fehlgeschlagen
context.returnValue = verificationSuccessful() ? 1 : -1;
/**
* Prüft, ob die Fachliche Freigabe erfolgreich war
* @returns {boolean} true, wenn die Fachliche Freigabe erfolgreich war, sonst false
*/
function verificationSuccessful() {
var docFile = otrAssert.default.getThrowingObject(context.file);
try {
var entries = JSON.parse(docFile.verification || "[]");
var newReleaseList = (0, LibReleaseList.markCurrentVerificationUserAsReleased)(entries, context.currentUser);
(0, LibReleaseList.checkIfFirstReleaseUserIsValid)(
newReleaseList,
docFile.totalAmount,
settings.useAssigneeUserReleaseRole,
docFile
);
docFile.setFieldValue("verification", JSON.stringify(newReleaseList));
docFile.sync();
return true;
} catch (error) {
var errorMessage = error.message ? error.message : error.toString();
logger.error(errorMessage);
context.errorMessage = errorMessage;
return false;
}
}
Das Skript ou.cust.ptpINV.workflow.guard.released muss geupdated werden (INV-558):
context.enableModules();
var tslib = require("ou.sp.externals.tslib");
var Logging = require("ou.sp.Logging");
var otrAssert = tslib.__importDefault(require("otrAssert"));
var LibReleaseList = require("ou.spc.ptpINV.lib.release.list");
var settings = require("ou.sp.ptpINV.settings");
var logger = Logging.Logging.use("ou.cust.ptpINV.workflow.guard.released");
context.returnValue = releasedSuccessful() ? 1 : -1;
/**
* Prüft, ob die Freigabe erfolgreich war
* @returns {boolean} true, wenn die Freigabe erfolgreich war, sonst false
*/
function releasedSuccessful() {
/** @type {ptpInvoice} */
var docFile = otrAssert.default.getThrowingObject(context.file);
var docFileVerificationSaveState = docFile.verification;
try {
var updatedList = (0, LibReleaseList.markCurrentAsReleased)({
amount: docFile.totalAmount,
file: docFile,
executingReleaseUser: context.currentUser,
releaseList: JSON.parse(docFile.verification || "[]"),
useAssigneeUserReleaseRole: settings.useAssigneeUserReleaseRole,
});
docFile.setFieldValue("verification", JSON.stringify(updatedList));
docFile.sync();
(0, LibReleaseList.setNextReleaseUser)(context.file, docFile.totalAmount, settings.useAssigneeUserReleaseRole);
return true;
} catch (error) {
var errorMessage = error.message ? error.message : error.toString();
logger.error(errorMessage);
context.errorMessage = errorMessage;
docFile.setFieldValue("verification", docFileVerificationSaveState);
docFile.sync();
return false;
}
}
Das Skript ou.cust.ptpINV.filetype.field.html.cover.ts muss angepasst werden (INV-559):
-
Diese Importe müssen dem Skript hinzugefügt werden:
var settings = require("ou.sp.ptpINV.settings");
var CockpitVerificationGadgetBuilder =
require("ou.spc.ptpINV.lib.gadgets.verification").CockpitVerificationGadgetBuilder; -
Den Block
var verifications = JSON.parse(docFile.verification || "[]")
.filter(...)
.map(...)
.slice(...)
.reverse(...);ersetzen durch:
var entries = JSON.parse(docFile.verification || "[]");
var verifications = CockpitVerificationGadgetBuilder.parseEntries(entries, settings.maxNumberOfVerificationRows);
Das Skript ou.cust.ptpINV.workflow.guard.additionalVerification muss angepasst werden (INV-561), sodass nun beim Weiterleiten an einen anderen fachlichen Prüfer auch ein Eintrag in den Verifikationsschritten erstellt wird:
-
Diesen Import dem Skript hinzufügen:
var StatusMonitorData = require("ou.sp.ptpINV.lib.gadgets.statusMonitor").StatusMonitorData; -
Diesen Code nach dem if-else-Block im Skript einfügen:
var model = StatusMonitorData.parse(docFile.verification);
model.add("info", context.getFromSystemTable("workflow.ptpInvoice.action.additionalVerification"), [
context.currentUser,
context.getAutoText("currentTimestamp"),
]);
docFile.setFieldValue("verification", model.asJSON());
Im Skript ou.cust.ptpINV.workflow.decision.checkAfterVerify wurde die Nachricht für den Statuseintrag (allowedMessage) von "Fachlicher Freigeber..." zu "Fachlicher Prüfer..." geändert (INV-561)
Im Skript ou.cust.ptpINV.workflow.guard.backToVerification wurde die Statusmeldung "Zurück zur fachlichen Freigabe" zu "Zurück zur fachlichen Prüfung" geändert (INV-561)
Im Skript ou.cust.ptpINV.callback.dashboard.myWorkspace die Zeile if (!su.hasAccessProfile("ptpInvoiceAccounting")) { ersetzen durch if (!su.hasAccessProfile("ptpInvoiceUser")) {
Aktualisierung der Skripte
XML/ousp-invoice-update.xmlüber den Documents Manager einspielen