UNPKG

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
"use strict"; 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;