Zum Hauptinhalt springen

Upgrade auf 23.1.0

gefahr

Unbedingt die aktuellen Installationsvoraussetzungen vorab prüfen!

tipp

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 ptpInvoice Mappentyp:
      • 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)
  • eInvoice: Bereinigung alte Funktionalität INV-541

    • Der Ordner ptpInvoice10eInvoice wurde entfernt
    • Das Feld hasEInvoiceDocument im Mappentyp ptpInvoice und alle dazugehörige obsolete Funktionalität wurde entfernt
  • 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 ptpInvoice INV-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 Skript ou.cust.ptpINV.filetype.action.approvedButtons festgelegt werden:

    if (enumval[i] === "addCommentOrAttachments") {
    if (globalState === "100") {
    enumval[i] = "";
    }
    }
tipp

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