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",
}],
},
}