n8n-nodes-sevdesk-v2
Version:
n8n community node for SevDesk API v2 integration with 24 production-ready workflow templates. Direct API access without external dependencies - simplified, secure, and optimized for German accounting automation (n8n 1.101.1 compatible).
112 lines (111 loc) • 5.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OrderHandler = void 0;
const BaseResourceHandler_1 = require("../base/BaseResourceHandler");
class OrderHandler extends BaseResourceHandler_1.CrudResourceHandler {
constructor(executeFunctions) {
super(executeFunctions, "Order", "Order");
this.config.idParameterName = "orderId";
}
buildCustomRequest(baseOptions, baseURL, operation, itemIndex) {
switch (operation) {
case "sendByEmail":
const orderId = this.executeFunctions.getNodeParameter("orderId", itemIndex);
const sendType = this.executeFunctions.getNodeParameter("sendType", itemIndex, "VPR");
return {
...baseOptions,
method: "PUT",
url: `${baseURL}/Order/${orderId}/sendByEmail`,
body: { sendType },
};
case "getPositions":
const orderIdPos = this.executeFunctions.getNodeParameter("orderId", itemIndex);
return {
...baseOptions,
method: "GET",
url: `${baseURL}/OrderPos`,
qs: { "order[id]": orderIdPos, "order[objectName]": "Order" },
};
case "createInvoiceFromOrder":
const orderIdInvoice = this.executeFunctions.getNodeParameter("orderId", itemIndex);
const invoiceDate = this.executeFunctions.getNodeParameter("invoiceDate", itemIndex);
return {
...baseOptions,
method: "POST",
url: `${baseURL}/Order/${orderIdInvoice}/createInvoiceFromOrder`,
body: { invoiceDate },
};
case "createPackingListFromOrder":
const orderIdPacking = this.executeFunctions.getNodeParameter("orderId", itemIndex);
return {
...baseOptions,
method: "POST",
url: `${baseURL}/Order/${orderIdPacking}/createPackingListFromOrder`,
};
default:
return super.buildCustomRequest(baseOptions, baseURL, operation, itemIndex);
}
}
transformCreateData(data) {
if (!data || typeof data !== "object") {
return {};
}
const transformedData = { ...data };
if (transformedData.orderDate) {
const dateString = transformedData.orderDate.toString();
if (dateString.includes("invalid") || dateString.includes("not-a-date")) {
throw new Error(`Invalid orderDate format: ${transformedData.orderDate}`);
}
const orderDate = new Date(transformedData.orderDate);
if (isNaN(orderDate.getTime()) &&
!dateString.match(/^\d{4}-\d{2}-\d{2}/)) {
throw new Error(`Invalid orderDate format: ${transformedData.orderDate}`);
}
if (!isNaN(orderDate.getTime())) {
transformedData.orderDate = orderDate.toISOString().split("T")[0];
}
}
if (transformedData.deliveryDate) {
const dateString = transformedData.deliveryDate.toString();
if (dateString.includes("invalid") || dateString.includes("not-a-date")) {
throw new Error(`Invalid deliveryDate format: ${transformedData.deliveryDate}`);
}
const deliveryDate = new Date(transformedData.deliveryDate);
if (isNaN(deliveryDate.getTime()) &&
!dateString.match(/^\d{4}-\d{2}-\d{2}/)) {
throw new Error(`Invalid deliveryDate format: ${transformedData.deliveryDate}`);
}
if (!isNaN(deliveryDate.getTime())) {
transformedData.deliveryDate = deliveryDate.toISOString().split("T")[0];
}
}
return transformedData;
}
transformQueryParams(params) {
const transformedParams = { ...params };
if (transformedParams.startDate) {
try {
const startDate = new Date(transformedParams.startDate);
if (!isNaN(startDate.getTime())) {
transformedParams.startDate = startDate.toISOString().split("T")[0];
}
}
catch (error) {
console.warn("Invalid startDate format:", transformedParams.startDate);
}
}
if (transformedParams.endDate) {
try {
const endDate = new Date(transformedParams.endDate);
if (!isNaN(endDate.getTime())) {
transformedParams.endDate = endDate.toISOString().split("T")[0];
}
}
catch (error) {
console.warn("Invalid endDate format:", transformedParams.endDate);
}
}
return transformedParams;
}
}
exports.OrderHandler = OrderHandler;