@klardaten/n8n-nodes-datevconnect 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +7 -10
  2. package/dist/credentials/DatevConnectApi.credentials.js +68 -95
  3. package/dist/nodes/Accounting/Accounting.config.js +1373 -0
  4. package/dist/nodes/Accounting/Accounting.node.js +180 -5153
  5. package/dist/nodes/Accounting/handlers/AccountPostingResourceHandler.js +40 -0
  6. package/dist/nodes/Accounting/handlers/AccountingSequenceResourceHandler.js +72 -0
  7. package/dist/nodes/Accounting/handlers/AccountingStatisticsResourceHandler.js +38 -0
  8. package/dist/nodes/Accounting/handlers/AccountingSumsAndBalancesResourceHandler.js +52 -0
  9. package/dist/nodes/Accounting/handlers/AccountingTransactionKeysResourceHandler.js +53 -0
  10. package/dist/nodes/Accounting/handlers/AccountsPayableResourceHandler.js +67 -0
  11. package/dist/nodes/Accounting/handlers/AccountsReceivableResourceHandler.js +48 -0
  12. package/dist/nodes/Accounting/handlers/BaseResourceHandler.js +148 -0
  13. package/dist/nodes/Accounting/handlers/BusinessPartnersResourceHandler.js +207 -0
  14. package/dist/nodes/Accounting/handlers/ClientResourceHandler.js +52 -0
  15. package/dist/nodes/Accounting/handlers/CostCenterPropertiesResourceHandler.js +55 -0
  16. package/dist/nodes/Accounting/handlers/CostCentersUnitsResourceHandler.js +55 -0
  17. package/dist/nodes/Accounting/handlers/CostSequencesResourceHandler.js +88 -0
  18. package/dist/nodes/Accounting/handlers/CostSystemsResourceHandler.js +62 -0
  19. package/dist/nodes/Accounting/handlers/FiscalYearResourceHandler.js +49 -0
  20. package/dist/nodes/Accounting/handlers/GeneralLedgerAccountsResourceHandler.js +67 -0
  21. package/dist/nodes/Accounting/handlers/InternalCostServicesResourceHandler.js +40 -0
  22. package/dist/nodes/Accounting/handlers/PostingProposalsResourceHandler.js +98 -0
  23. package/dist/nodes/Accounting/handlers/StocktakingDataResourceHandler.js +57 -0
  24. package/dist/nodes/Accounting/handlers/TermsOfPaymentResourceHandler.js +69 -0
  25. package/dist/nodes/Accounting/handlers/VariousAddressesResourceHandler.js +56 -0
  26. package/dist/nodes/Accounting/handlers/index.js +45 -0
  27. package/dist/nodes/Accounting/types.js +5 -0
  28. package/dist/nodes/DocumentManagement/DocumentManagement.config.js +598 -0
  29. package/dist/nodes/DocumentManagement/DocumentManagement.node.js +96 -3513
  30. package/dist/nodes/DocumentManagement/handlers/BaseResourceHandler.js +121 -0
  31. package/dist/nodes/DocumentManagement/handlers/DocumentFileResourceHandler.js +126 -0
  32. package/dist/nodes/DocumentManagement/handlers/DocumentResourceHandler.js +184 -0
  33. package/dist/nodes/DocumentManagement/handlers/DocumentStateResourceHandler.js +58 -0
  34. package/dist/nodes/DocumentManagement/handlers/DomainResourceHandler.js +32 -0
  35. package/dist/nodes/DocumentManagement/handlers/IndividualPropertyResourceHandler.js +32 -0
  36. package/dist/nodes/DocumentManagement/handlers/IndividualReference1ResourceHandler.js +49 -0
  37. package/dist/nodes/DocumentManagement/handlers/IndividualReference2ResourceHandler.js +49 -0
  38. package/dist/nodes/DocumentManagement/handlers/InfoResourceHandler.js +30 -0
  39. package/dist/nodes/DocumentManagement/handlers/PropertyTemplateResourceHandler.js +34 -0
  40. package/dist/nodes/DocumentManagement/handlers/SecureAreaResourceHandler.js +32 -0
  41. package/dist/nodes/DocumentManagement/types.js +2 -0
  42. package/dist/nodes/DocumentManagement/utils.js +116 -0
  43. package/dist/nodes/IdentityAndAccessManagement/IdentityAndAccessManagement.config.js +368 -0
  44. package/dist/nodes/IdentityAndAccessManagement/IdentityAndAccessManagement.node.js +77 -2774
  45. package/dist/nodes/IdentityAndAccessManagement/handlers/BaseResourceHandler.js +87 -0
  46. package/dist/nodes/IdentityAndAccessManagement/handlers/CurrentUserResourceHandler.js +17 -0
  47. package/dist/nodes/IdentityAndAccessManagement/handlers/GroupResourceHandler.js +63 -0
  48. package/dist/nodes/IdentityAndAccessManagement/handlers/ResourceTypeResourceHandler.js +17 -0
  49. package/dist/nodes/IdentityAndAccessManagement/handlers/SchemaResourceHandler.js +30 -0
  50. package/dist/nodes/IdentityAndAccessManagement/handlers/ServiceProviderConfigResourceHandler.js +17 -0
  51. package/dist/nodes/IdentityAndAccessManagement/handlers/UserResourceHandler.js +73 -0
  52. package/dist/nodes/IdentityAndAccessManagement/types.js +2 -0
  53. package/dist/nodes/IdentityAndAccessManagement/utils.js +89 -0
  54. package/dist/nodes/MasterData/MasterData.config.js +902 -0
  55. package/dist/nodes/MasterData/MasterData.node.js +107 -3561
  56. package/dist/nodes/MasterData/handlers/AddresseeResourceHandler.js +98 -0
  57. package/dist/nodes/MasterData/handlers/AreaOfResponsibilityResourceHandler.js +42 -0
  58. package/dist/nodes/MasterData/handlers/BankResourceHandler.js +42 -0
  59. package/dist/nodes/MasterData/handlers/BaseResourceHandler.js +91 -0
  60. package/dist/nodes/MasterData/handlers/ClientCategoryTypeResourceHandler.js +78 -0
  61. package/dist/nodes/MasterData/handlers/ClientGroupTypeResourceHandler.js +78 -0
  62. package/dist/nodes/MasterData/handlers/ClientResourceHandler.js +183 -0
  63. package/dist/nodes/MasterData/handlers/CorporateStructureResourceHandler.js +68 -0
  64. package/dist/nodes/MasterData/handlers/CountryCodeResourceHandler.js +42 -0
  65. package/dist/nodes/MasterData/handlers/EmployeeResourceHandler.js +78 -0
  66. package/dist/nodes/MasterData/handlers/LegalFormResourceHandler.js +42 -0
  67. package/dist/nodes/MasterData/handlers/RelationshipResourceHandler.js +54 -0
  68. package/dist/nodes/MasterData/handlers/TaxAuthorityResourceHandler.js +42 -0
  69. package/dist/nodes/MasterData/types.js +2 -0
  70. package/dist/nodes/MasterData/utils.js +92 -0
  71. package/dist/src/services/accountingClient.js +766 -0
  72. package/dist/src/services/datevConnectClient.js +1809 -0
  73. package/dist/src/services/documentManagementClient.js +546 -0
  74. package/dist/src/services/identityAndAccessManagementClient.js +293 -0
  75. package/package.json +38 -39
  76. package/dist/nodes/Accounting/Accounting.node.json +0 -25
  77. package/dist/nodes/DocumentManagement/DocumentManagement.node.json +0 -25
  78. package/dist/nodes/IdentityAndAccessManagement/IdentityAndAccessManagement.node.json +0 -25
  79. package/dist/nodes/MasterData/MasterData.node.json +0 -25
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountPostingResourceHandler = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const accountingClient_1 = require("../../../src/services/accountingClient");
6
+ const BaseResourceHandler_1 = require("./BaseResourceHandler");
7
+ class AccountPostingResourceHandler extends BaseResourceHandler_1.BaseResourceHandler {
8
+ async execute(operation, requestContext, returnData) {
9
+ const sendSuccess = this.createSendSuccess(returnData);
10
+ try {
11
+ let response;
12
+ switch (operation) {
13
+ case "getAll":
14
+ response = await this.handleGetAll(requestContext);
15
+ break;
16
+ case "get":
17
+ response = await this.handleGet(requestContext);
18
+ break;
19
+ default:
20
+ throw new n8n_workflow_1.NodeOperationError(this.context.getNode(), `The operation "${operation}" is not supported for resource "accountPosting".`, { itemIndex: this.itemIndex });
21
+ }
22
+ sendSuccess(response);
23
+ }
24
+ catch (error) {
25
+ this.handleError(error, returnData);
26
+ }
27
+ }
28
+ async handleGetAll(requestContext) {
29
+ const queryParams = this.buildQueryParams();
30
+ const result = await accountingClient_1.datevConnectClient.accounting.getAccountPostings(this.context, requestContext.clientId, requestContext.fiscalYearId, queryParams);
31
+ return result !== null && result !== void 0 ? result : null;
32
+ }
33
+ async handleGet(requestContext) {
34
+ const accountPostingId = this.getRequiredString("accountPostingId");
35
+ const queryParams = this.buildQueryParams();
36
+ const result = await accountingClient_1.datevConnectClient.accounting.getAccountPosting(this.context, requestContext.clientId, requestContext.fiscalYearId, accountPostingId, queryParams);
37
+ return result !== null && result !== void 0 ? result : null;
38
+ }
39
+ }
40
+ exports.AccountPostingResourceHandler = AccountPostingResourceHandler;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountingSequenceResourceHandler = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const accountingClient_1 = require("../../../src/services/accountingClient");
6
+ const BaseResourceHandler_1 = require("./BaseResourceHandler");
7
+ /**
8
+ * Handler for all accounting sequence-related operations
9
+ */
10
+ class AccountingSequenceResourceHandler extends BaseResourceHandler_1.BaseResourceHandler {
11
+ async execute(operation, requestContext, returnData) {
12
+ const sendSuccess = this.createSendSuccess(returnData);
13
+ try {
14
+ let response;
15
+ switch (operation) {
16
+ case "create":
17
+ response = await this.handleCreate(requestContext);
18
+ break;
19
+ case "getAll":
20
+ response = await this.handleGetAll(requestContext);
21
+ break;
22
+ case "get":
23
+ response = await this.handleGet(requestContext);
24
+ break;
25
+ case "getAccountingRecords":
26
+ response = await this.handleGetAccountingRecords(requestContext);
27
+ break;
28
+ case "getAccountingRecord":
29
+ response = await this.handleGetAccountingRecord(requestContext);
30
+ break;
31
+ default:
32
+ throw new n8n_workflow_1.NodeOperationError(this.context.getNode(), `The operation "${operation}" is not supported for resource "accountingSequence".`, { itemIndex: this.itemIndex });
33
+ }
34
+ sendSuccess(response);
35
+ }
36
+ catch (error) {
37
+ this.handleError(error, returnData);
38
+ }
39
+ }
40
+ async handleCreate(requestContext) {
41
+ const accountingSequenceData = this.getRequiredString("accountingSequenceData");
42
+ const data = this.parseJsonParameter(accountingSequenceData, "accountingSequenceData");
43
+ if (!data || typeof data !== 'object' || Array.isArray(data)) {
44
+ throw new n8n_workflow_1.NodeOperationError(this.context.getNode(), "Accounting sequence data must be a valid JSON object", { itemIndex: this.itemIndex });
45
+ }
46
+ const result = await accountingClient_1.datevConnectClient.accounting.createAccountingSequence(this.context, requestContext.clientId, requestContext.fiscalYearId, data);
47
+ return result !== null && result !== void 0 ? result : null;
48
+ }
49
+ async handleGetAll(requestContext) {
50
+ const result = await accountingClient_1.datevConnectClient.accounting.getAccountingSequences(this.context, requestContext.clientId, requestContext.fiscalYearId);
51
+ return result !== null && result !== void 0 ? result : null;
52
+ }
53
+ async handleGet(requestContext) {
54
+ const accountingSequenceId = this.getRequiredString("accountingSequenceId");
55
+ const result = await accountingClient_1.datevConnectClient.accounting.getAccountingSequence(this.context, requestContext.clientId, requestContext.fiscalYearId, accountingSequenceId);
56
+ return result !== null && result !== void 0 ? result : null;
57
+ }
58
+ async handleGetAccountingRecords(requestContext) {
59
+ const accountingSequenceId = this.getRequiredString("accountingSequenceId");
60
+ const queryParams = this.buildQueryParams();
61
+ const result = await accountingClient_1.datevConnectClient.accounting.getAccountingRecords(this.context, requestContext.clientId, requestContext.fiscalYearId, accountingSequenceId, queryParams);
62
+ return result !== null && result !== void 0 ? result : null;
63
+ }
64
+ async handleGetAccountingRecord(requestContext) {
65
+ const accountingSequenceId = this.getRequiredString("accountingSequenceId");
66
+ const accountingRecordId = this.getRequiredString("accountingRecordId");
67
+ const queryParams = this.buildQueryParams();
68
+ const result = await accountingClient_1.datevConnectClient.accounting.getAccountingRecord(this.context, requestContext.clientId, requestContext.fiscalYearId, accountingSequenceId, accountingRecordId, queryParams);
69
+ return result !== null && result !== void 0 ? result : null;
70
+ }
71
+ }
72
+ exports.AccountingSequenceResourceHandler = AccountingSequenceResourceHandler;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountingStatisticsResourceHandler = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const BaseResourceHandler_1 = require("./BaseResourceHandler");
6
+ const accountingClient_1 = require("../../../src/services/accountingClient");
7
+ /**
8
+ * Handler for Accounting Statistics operations
9
+ * Manages operations related to accounting statistics data
10
+ */
11
+ class AccountingStatisticsResourceHandler extends BaseResourceHandler_1.BaseResourceHandler {
12
+ constructor(context, itemIndex) {
13
+ super(context, itemIndex);
14
+ }
15
+ async execute(operation, requestContext, returnData) {
16
+ switch (operation) {
17
+ case "getAll":
18
+ await this.handleGetAll(requestContext, returnData);
19
+ break;
20
+ default:
21
+ throw new n8n_workflow_1.NodeOperationError(this.context.getNode(), `Unknown operation: ${operation}`, {
22
+ itemIndex: this.itemIndex,
23
+ });
24
+ }
25
+ }
26
+ async handleGetAll(requestContext, returnData) {
27
+ try {
28
+ const queryParams = this.buildQueryParams();
29
+ const accountingStatistics = await accountingClient_1.datevConnectClient.accounting.getAccountingStatistics(this.context, requestContext.clientId, requestContext.fiscalYearId, queryParams);
30
+ const sendSuccess = this.createSendSuccess(returnData);
31
+ sendSuccess(accountingStatistics);
32
+ }
33
+ catch (error) {
34
+ this.handleError(error, returnData);
35
+ }
36
+ }
37
+ }
38
+ exports.AccountingStatisticsResourceHandler = AccountingStatisticsResourceHandler;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountingSumsAndBalancesResourceHandler = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const BaseResourceHandler_1 = require("./BaseResourceHandler");
6
+ const accountingClient_1 = require("../../../src/services/accountingClient");
7
+ /**
8
+ * Handler for Accounting Sums and Balances operations
9
+ * Manages operations related to accounting balance sheet and P&L data
10
+ */
11
+ class AccountingSumsAndBalancesResourceHandler extends BaseResourceHandler_1.BaseResourceHandler {
12
+ constructor(context, itemIndex) {
13
+ super(context, itemIndex);
14
+ }
15
+ async execute(operation, requestContext, returnData) {
16
+ switch (operation) {
17
+ case "getAll":
18
+ await this.handleGetAll(requestContext, returnData);
19
+ break;
20
+ case "get":
21
+ await this.handleGet(requestContext, returnData);
22
+ break;
23
+ default:
24
+ throw new n8n_workflow_1.NodeOperationError(this.context.getNode(), `Unknown operation: ${operation}`, {
25
+ itemIndex: this.itemIndex,
26
+ });
27
+ }
28
+ }
29
+ async handleGetAll(requestContext, returnData) {
30
+ try {
31
+ const queryParams = this.buildQueryParams();
32
+ const sumsAndBalances = await accountingClient_1.datevConnectClient.accounting.getAccountingSumsAndBalances(this.context, requestContext.clientId, requestContext.fiscalYearId, queryParams);
33
+ const sendSuccess = this.createSendSuccess(returnData);
34
+ sendSuccess(sumsAndBalances);
35
+ }
36
+ catch (error) {
37
+ this.handleError(error, returnData);
38
+ }
39
+ }
40
+ async handleGet(requestContext, returnData) {
41
+ try {
42
+ const accountingSumsAndBalancesId = this.getRequiredString("accountingSumsAndBalancesId");
43
+ const sumsAndBalances = await accountingClient_1.datevConnectClient.accounting.getAccountingSumsAndBalance(this.context, requestContext.clientId, requestContext.fiscalYearId, accountingSumsAndBalancesId);
44
+ const sendSuccess = this.createSendSuccess(returnData);
45
+ sendSuccess(sumsAndBalances);
46
+ }
47
+ catch (error) {
48
+ this.handleError(error, returnData);
49
+ }
50
+ }
51
+ }
52
+ exports.AccountingSumsAndBalancesResourceHandler = AccountingSumsAndBalancesResourceHandler;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountingTransactionKeysResourceHandler = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const BaseResourceHandler_1 = require("./BaseResourceHandler");
6
+ const accountingClient_1 = require("../../../src/services/accountingClient");
7
+ /**
8
+ * Handler for Accounting Transaction Keys operations
9
+ * Manages operations related to transaction key management
10
+ */
11
+ class AccountingTransactionKeysResourceHandler extends BaseResourceHandler_1.BaseResourceHandler {
12
+ constructor(context, itemIndex) {
13
+ super(context, itemIndex);
14
+ }
15
+ async execute(operation, requestContext, returnData) {
16
+ switch (operation) {
17
+ case "getAll":
18
+ await this.handleGetAll(requestContext, returnData);
19
+ break;
20
+ case "get":
21
+ await this.handleGet(requestContext, returnData);
22
+ break;
23
+ default:
24
+ throw new n8n_workflow_1.NodeOperationError(this.context.getNode(), `Unknown operation: ${operation}`, {
25
+ itemIndex: this.itemIndex,
26
+ });
27
+ }
28
+ }
29
+ async handleGetAll(requestContext, returnData) {
30
+ try {
31
+ const queryParams = this.buildQueryParams();
32
+ const accountingTransactionKeys = await accountingClient_1.datevConnectClient.accounting.getAccountingTransactionKeys(this.context, requestContext.clientId, requestContext.fiscalYearId, queryParams);
33
+ const sendSuccess = this.createSendSuccess(returnData);
34
+ sendSuccess(accountingTransactionKeys);
35
+ }
36
+ catch (error) {
37
+ this.handleError(error, returnData);
38
+ }
39
+ }
40
+ async handleGet(requestContext, returnData) {
41
+ try {
42
+ const accountingTransactionKeyId = this.getRequiredString("accountingTransactionKeyId");
43
+ const queryParams = this.buildQueryParams();
44
+ const accountingTransactionKey = await accountingClient_1.datevConnectClient.accounting.getAccountingTransactionKey(this.context, requestContext.clientId, requestContext.fiscalYearId, accountingTransactionKeyId, queryParams);
45
+ const sendSuccess = this.createSendSuccess(returnData);
46
+ sendSuccess(accountingTransactionKey);
47
+ }
48
+ catch (error) {
49
+ this.handleError(error, returnData);
50
+ }
51
+ }
52
+ }
53
+ exports.AccountingTransactionKeysResourceHandler = AccountingTransactionKeysResourceHandler;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountsPayableResourceHandler = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const BaseResourceHandler_1 = require("./BaseResourceHandler");
6
+ const accountingClient_1 = require("../../../src/services/accountingClient");
7
+ /**
8
+ * Handler for Accounts Payable operations
9
+ * Manages operations related to accounts payable (open items on the payable side)
10
+ */
11
+ class AccountsPayableResourceHandler extends BaseResourceHandler_1.BaseResourceHandler {
12
+ constructor(context, itemIndex) {
13
+ super(context, itemIndex);
14
+ }
15
+ async execute(operation, requestContext, returnData) {
16
+ switch (operation) {
17
+ case "getAll":
18
+ await this.handleGetAll(requestContext, returnData);
19
+ break;
20
+ case "get":
21
+ await this.handleGet(requestContext, returnData);
22
+ break;
23
+ case "getCondensed":
24
+ await this.handleGetCondensed(requestContext, returnData);
25
+ break;
26
+ default:
27
+ throw new n8n_workflow_1.NodeOperationError(this.context.getNode(), `Unknown operation: ${operation}`, {
28
+ itemIndex: this.itemIndex,
29
+ });
30
+ }
31
+ }
32
+ async handleGetAll(requestContext, returnData) {
33
+ try {
34
+ const queryParams = this.buildQueryParams();
35
+ const accountsPayable = await accountingClient_1.datevConnectClient.accounting.getAccountsPayable(this.context, requestContext.clientId, requestContext.fiscalYearId, queryParams);
36
+ const sendSuccess = this.createSendSuccess(returnData);
37
+ sendSuccess(accountsPayable);
38
+ }
39
+ catch (error) {
40
+ this.handleError(error, returnData);
41
+ }
42
+ }
43
+ async handleGet(requestContext, returnData) {
44
+ try {
45
+ const accountsPayableId = this.getRequiredString("accountsPayableId");
46
+ const queryParams = this.buildQueryParams();
47
+ const accountPayable = await accountingClient_1.datevConnectClient.accounting.getAccountPayable(this.context, requestContext.clientId, requestContext.fiscalYearId, accountsPayableId, queryParams);
48
+ const sendSuccess = this.createSendSuccess(returnData);
49
+ sendSuccess(accountPayable);
50
+ }
51
+ catch (error) {
52
+ this.handleError(error, returnData);
53
+ }
54
+ }
55
+ async handleGetCondensed(requestContext, returnData) {
56
+ try {
57
+ const queryParams = this.buildQueryParams();
58
+ const condensedAccountsPayable = await accountingClient_1.datevConnectClient.accounting.getAccountsPayableCondensed(this.context, requestContext.clientId, requestContext.fiscalYearId, queryParams);
59
+ const sendSuccess = this.createSendSuccess(returnData);
60
+ sendSuccess(condensedAccountsPayable);
61
+ }
62
+ catch (error) {
63
+ this.handleError(error, returnData);
64
+ }
65
+ }
66
+ }
67
+ exports.AccountsPayableResourceHandler = AccountsPayableResourceHandler;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountsReceivableResourceHandler = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const accountingClient_1 = require("../../../src/services/accountingClient");
6
+ const BaseResourceHandler_1 = require("./BaseResourceHandler");
7
+ class AccountsReceivableResourceHandler extends BaseResourceHandler_1.BaseResourceHandler {
8
+ async execute(operation, requestContext, returnData) {
9
+ const sendSuccess = this.createSendSuccess(returnData);
10
+ try {
11
+ let response;
12
+ switch (operation) {
13
+ case "getAll":
14
+ response = await this.handleGetAll(requestContext);
15
+ break;
16
+ case "get":
17
+ response = await this.handleGet(requestContext);
18
+ break;
19
+ case "getCondensed":
20
+ response = await this.handleGetCondensed(requestContext);
21
+ break;
22
+ default:
23
+ throw new n8n_workflow_1.NodeOperationError(this.context.getNode(), `The operation "${operation}" is not supported for resource "accountsReceivable".`, { itemIndex: this.itemIndex });
24
+ }
25
+ sendSuccess(response);
26
+ }
27
+ catch (error) {
28
+ this.handleError(error, returnData);
29
+ }
30
+ }
31
+ async handleGetAll(requestContext) {
32
+ const queryParams = this.buildQueryParams();
33
+ const result = await accountingClient_1.datevConnectClient.accounting.getAccountsReceivable(this.context, requestContext.clientId, requestContext.fiscalYearId, queryParams);
34
+ return result !== null && result !== void 0 ? result : null;
35
+ }
36
+ async handleGet(requestContext) {
37
+ const accountsReceivableId = this.getRequiredString("accountsReceivableId");
38
+ const queryParams = this.buildQueryParams();
39
+ const result = await accountingClient_1.datevConnectClient.accounting.getAccountReceivable(this.context, requestContext.clientId, requestContext.fiscalYearId, accountsReceivableId, queryParams);
40
+ return result !== null && result !== void 0 ? result : null;
41
+ }
42
+ async handleGetCondensed(requestContext) {
43
+ const queryParams = this.buildQueryParams();
44
+ const result = await accountingClient_1.datevConnectClient.accounting.getAccountsReceivableCondensed(this.context, requestContext.clientId, requestContext.fiscalYearId, queryParams);
45
+ return result !== null && result !== void 0 ? result : null;
46
+ }
47
+ }
48
+ exports.AccountsReceivableResourceHandler = AccountsReceivableResourceHandler;
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseResourceHandler = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ /**
6
+ * Abstract base class for accounting resource handlers
7
+ * Provides common functionality for authentication, parameter parsing, and response handling
8
+ */
9
+ class BaseResourceHandler {
10
+ constructor(context, itemIndex) {
11
+ this.context = context;
12
+ this.itemIndex = itemIndex;
13
+ }
14
+ /**
15
+ * Gets an optional string parameter
16
+ */
17
+ getOptionalString(name) {
18
+ const value = this.context.getNodeParameter(name, this.itemIndex, "");
19
+ return value || undefined;
20
+ }
21
+ /**
22
+ * Gets a required string parameter
23
+ */
24
+ getRequiredString(name) {
25
+ const value = this.context.getNodeParameter(name, this.itemIndex);
26
+ if (!value) {
27
+ throw new n8n_workflow_1.NodeOperationError(this.context.getNode(), `Parameter "${name}" is required`, { itemIndex: this.itemIndex });
28
+ }
29
+ return value;
30
+ }
31
+ /**
32
+ * Gets a number parameter with default value
33
+ */
34
+ getNumberParameter(name, defaultValue) {
35
+ const value = this.context.getNodeParameter(name, this.itemIndex, defaultValue);
36
+ return typeof value === 'number' ? value : defaultValue;
37
+ }
38
+ /**
39
+ * Parses a JSON parameter
40
+ */
41
+ parseJsonParameter(rawValue, parameterLabel) {
42
+ if (typeof rawValue === 'string') {
43
+ try {
44
+ return JSON.parse(rawValue);
45
+ }
46
+ catch {
47
+ throw new n8n_workflow_1.NodeOperationError(this.context.getNode(), `Invalid JSON in parameter "${parameterLabel}"`, { itemIndex: this.itemIndex });
48
+ }
49
+ }
50
+ return rawValue;
51
+ }
52
+ /**
53
+ * Builds query parameters for API calls
54
+ */
55
+ buildQueryParams(additionalParams = {}) {
56
+ const params = {};
57
+ // Add OData parameters
58
+ const top = this.getNumberParameter("top", 100);
59
+ const skip = this.getNumberParameter("skip", 0);
60
+ const select = this.getOptionalString("select");
61
+ const filter = this.getOptionalString("filter");
62
+ const expand = this.getOptionalString("expand");
63
+ if (top > 0) {
64
+ params.top = top;
65
+ }
66
+ if (skip > 0) {
67
+ params.skip = skip;
68
+ }
69
+ if (select) {
70
+ params.select = select;
71
+ }
72
+ if (filter) {
73
+ params.filter = filter;
74
+ }
75
+ if (expand && expand !== "") {
76
+ params.expand = expand === "all" ? "*" : expand;
77
+ }
78
+ return { ...params, ...additionalParams };
79
+ }
80
+ /**
81
+ * Creates a success response function that formats and adds data to returnData
82
+ */
83
+ createSendSuccess(returnData) {
84
+ return (payload) => {
85
+ const formattedData = this.normalizeToObjects(payload !== null && payload !== void 0 ? payload : { success: true });
86
+ const executionData = this.context.helpers.constructExecutionMetaData(this.context.helpers.returnJsonArray(formattedData), { itemData: { item: this.itemIndex } });
87
+ returnData.push(...executionData);
88
+ };
89
+ }
90
+ /**
91
+ * Normalizes JsonValue to IDataObject array for n8n
92
+ */
93
+ normalizeToObjects(value) {
94
+ if (value === null || value === undefined) {
95
+ return [{}];
96
+ }
97
+ if (Array.isArray(value)) {
98
+ return value.map(item => this.normalizeToObjects(item)[0]);
99
+ }
100
+ if (typeof value === 'object') {
101
+ return [value];
102
+ }
103
+ return [{ value }];
104
+ }
105
+ /**
106
+ * Converts error to string message
107
+ */
108
+ toErrorMessage(error) {
109
+ if (error instanceof Error) {
110
+ return error.message;
111
+ }
112
+ if (typeof error === 'string') {
113
+ return error;
114
+ }
115
+ if (error === null || error === undefined) {
116
+ return 'Unknown error';
117
+ }
118
+ return JSON.stringify(error);
119
+ }
120
+ /**
121
+ * Converts error to JsonObject for NodeApiError
122
+ */
123
+ toErrorObject(error) {
124
+ if (error && typeof error === "object") {
125
+ return error;
126
+ }
127
+ const message = error instanceof Error ? error.message : String(error !== null && error !== void 0 ? error : "Unknown error");
128
+ return { message };
129
+ }
130
+ /**
131
+ * Handles errors according to continueOnFail setting
132
+ */
133
+ handleError(error, returnData) {
134
+ if (this.context.continueOnFail()) {
135
+ returnData.push({
136
+ json: {
137
+ error: this.toErrorMessage(error),
138
+ },
139
+ pairedItem: { item: this.itemIndex },
140
+ });
141
+ return;
142
+ }
143
+ throw new n8n_workflow_1.NodeApiError(this.context.getNode(), this.toErrorObject(error), {
144
+ itemIndex: this.itemIndex,
145
+ });
146
+ }
147
+ }
148
+ exports.BaseResourceHandler = BaseResourceHandler;