Zum Hauptinhalt springen

Weitere Verwendung

Archivierung​

Möchte man beim Archivieren den Report neu generieren, so kann das im ou.cust.ptpINV.job.archiv geschehen. Dazu wird der Funktion archiveEda (bzw. archiveEex) die Option beforeArchiveCallback hinzugefügt. Der Callback wird für jede Mappe nach dem Synchronisieren der Positionsdaten und vor der Archivierung aufgerufen.

Ein Beispiel für die EDA-Adaptive-Archivierung könnte so aussehen:

const curtail = require("ou.cust.ptpINV.lib.curtail");

function archiveEda(fileResultSet, positionFields, headFields) {
return archiveInvoiceFilesEdaAdaptive(fileResultSet, {
positionFields,
headFields,
separator: ",",
attempts: 4,
shouldDelete: true,
/** @param {ptpInvoice} docFile */
beforeArchiveCallback: (docFile) => {
const report = curtail.createReport(docFile);
curtail.uploadReport(report, docFile);
},
});
}

Wirft der Callback einen Fehler (z.B. weil der Report nicht erstellt werden konnte), wird die Mappe nicht archiviert und bleibt im Umlauf. Sie wird beim nächsten Lauf des Jobs erneut verarbeitet.

Validierungen​

Für Validierungen kann die getCurtails Funktion in der ou.cust.ptpINV.lib.curtail verwendet werden.

Siehe getCurtails.

Verwenden der ou.cust.ptpINV.lib.curtail​

Das Skript ou.cust.ptpINV.lib.curtail bietet kleine Hilfsfunktionen, die in dem Prozess integriert werden können.

createReport​

Erstellt eine PDF-Datei mit den aktuellen Kürzungen.

context.enableModules();
const lib = require("ou.cust.ptpINV.lib.curtail");

const report = lib.createReport();
return report.filePath;

deleteExistingReport​

Löscht die Kuerzungsinfo.pdf im attachments Register.

context.enableModules();
const lib = require("ou.cust.ptpINV.lib.curtail");

try {
lib.deleteExistingReport();
} catch (error) {
// handle error
}

uploadReport​

Lädt den generierten Report (siehe createReport) in das attachments Register. Existiert das PDF bereits, so wird dieses ersetzt (siehe deleteExistingReport).

context.enableModules();
const lib = require("ou.cust.ptpINV.lib.curtail");

/** @type {ptpInvoice} */
const docFile = context.file;
const report = lib.createReport(docFile);
lib.uploadReport(report, docFile);

getCurtails​

Diese Funktion liefert ein Object zurück, welche die Nettobeträge inkl. Kürzungen

context.enableModules();
const lib = require("ou.cust.ptpINV.lib.curtail");

/** @type {ptpInvoice} */
const docFile = context.file;
const result = lib.getCurtails(docFile);

result sieht dann ungefähr so aus:

{
netAmount1: {
originalNetAmount: 5000,
newNetAmount: 4000,
vatRate: 19,
curtailsAmount: 1000,
curtails: [{
comment: "nope",
amount: 1000,
field: "netAmount1",
user: "oucadmin",
date: "2023-01-27T10:10:34.620Z",
}],
},
netAmount2: {
originalNetAmount: 7000,
newNetAmount: 6000,
vatRate: 7,
curtailsAmount: 1000,
curtails: [{
comment: "nope 2",
amount: 1000,
field: "netAmount2",
user: "oucadmin",
date: "2023-01-27T10:10:34.620Z",
}],
},
}