@wals-pro/n8n-nodes-weclapp 0.3.0
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.
- package/LICENSE +21 -0
- package/README.md +206 -0
- package/dist/credentials/WeclappApi.credentials.d.ts +10 -0
- package/dist/credentials/WeclappApi.credentials.js +56 -0
- package/dist/credentials/WeclappApi.credentials.js.map +1 -0
- package/dist/credentials/weclapp.dark.svg +19 -0
- package/dist/credentials/weclapp.light.svg +19 -0
- package/dist/nodes/Weclapp/GenericFunctions.d.ts +19 -0
- package/dist/nodes/Weclapp/GenericFunctions.js +287 -0
- package/dist/nodes/Weclapp/GenericFunctions.js.map +1 -0
- package/dist/nodes/Weclapp/SharedFields.d.ts +24 -0
- package/dist/nodes/Weclapp/SharedFields.js +348 -0
- package/dist/nodes/Weclapp/SharedFields.js.map +1 -0
- package/dist/nodes/Weclapp/Weclapp.node.d.ts +27 -0
- package/dist/nodes/Weclapp/Weclapp.node.js +231 -0
- package/dist/nodes/Weclapp/Weclapp.node.js.map +1 -0
- package/dist/nodes/Weclapp/actions/applyPayment.d.ts +9 -0
- package/dist/nodes/Weclapp/actions/applyPayment.js +64 -0
- package/dist/nodes/Weclapp/actions/applyPayment.js.map +1 -0
- package/dist/nodes/Weclapp/actions/articlePriceSync.d.ts +41 -0
- package/dist/nodes/Weclapp/actions/articlePriceSync.js +238 -0
- package/dist/nodes/Weclapp/actions/articlePriceSync.js.map +1 -0
- package/dist/nodes/Weclapp/actions/documentUpload.d.ts +3 -0
- package/dist/nodes/Weclapp/actions/documentUpload.js +90 -0
- package/dist/nodes/Weclapp/actions/documentUpload.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/ArticleDescription.d.ts +3 -0
- package/dist/nodes/Weclapp/descriptions/ArticleDescription.js +724 -0
- package/dist/nodes/Weclapp/descriptions/ArticleDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/BankDescription.d.ts +6 -0
- package/dist/nodes/Weclapp/descriptions/BankDescription.js +471 -0
- package/dist/nodes/Weclapp/descriptions/BankDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/CustomApiDescription.d.ts +4 -0
- package/dist/nodes/Weclapp/descriptions/CustomApiDescription.js +238 -0
- package/dist/nodes/Weclapp/descriptions/CustomApiDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/DocumentDescription.d.ts +3 -0
- package/dist/nodes/Weclapp/descriptions/DocumentDescription.js +976 -0
- package/dist/nodes/Weclapp/descriptions/DocumentDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/PartyDescription.d.ts +4 -0
- package/dist/nodes/Weclapp/descriptions/PartyDescription.js +408 -0
- package/dist/nodes/Weclapp/descriptions/PartyDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/ProductionOrderDescription.d.ts +4 -0
- package/dist/nodes/Weclapp/descriptions/ProductionOrderDescription.js +628 -0
- package/dist/nodes/Weclapp/descriptions/ProductionOrderDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/PurchaseInvoiceDescription.d.ts +3 -0
- package/dist/nodes/Weclapp/descriptions/PurchaseInvoiceDescription.js +559 -0
- package/dist/nodes/Weclapp/descriptions/PurchaseInvoiceDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/PurchaseOrderDescription.d.ts +3 -0
- package/dist/nodes/Weclapp/descriptions/PurchaseOrderDescription.js +681 -0
- package/dist/nodes/Weclapp/descriptions/PurchaseOrderDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/QuotationDescription.d.ts +3 -0
- package/dist/nodes/Weclapp/descriptions/QuotationDescription.js +1069 -0
- package/dist/nodes/Weclapp/descriptions/QuotationDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/SalesInvoiceDescription.d.ts +3 -0
- package/dist/nodes/Weclapp/descriptions/SalesInvoiceDescription.js +994 -0
- package/dist/nodes/Weclapp/descriptions/SalesInvoiceDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/SalesOrderDescription.d.ts +4 -0
- package/dist/nodes/Weclapp/descriptions/SalesOrderDescription.js +1122 -0
- package/dist/nodes/Weclapp/descriptions/SalesOrderDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/ShipmentDescription.d.ts +3 -0
- package/dist/nodes/Weclapp/descriptions/ShipmentDescription.js +502 -0
- package/dist/nodes/Weclapp/descriptions/ShipmentDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/TagUnitUserDescription.d.ts +9 -0
- package/dist/nodes/Weclapp/descriptions/TagUnitUserDescription.js +664 -0
- package/dist/nodes/Weclapp/descriptions/TagUnitUserDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/TicketDescription.d.ts +9 -0
- package/dist/nodes/Weclapp/descriptions/TicketDescription.js +745 -0
- package/dist/nodes/Weclapp/descriptions/TicketDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/WarehouseDescription.d.ts +35 -0
- package/dist/nodes/Weclapp/descriptions/WarehouseDescription.js +935 -0
- package/dist/nodes/Weclapp/descriptions/WarehouseDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/WebhookDescription.d.ts +4 -0
- package/dist/nodes/Weclapp/descriptions/WebhookDescription.js +411 -0
- package/dist/nodes/Weclapp/descriptions/WebhookDescription.js.map +1 -0
- package/dist/nodes/Weclapp/descriptions/index.d.ts +3 -0
- package/dist/nodes/Weclapp/descriptions/index.js +56 -0
- package/dist/nodes/Weclapp/descriptions/index.js.map +1 -0
- package/dist/nodes/Weclapp/generated/entityMetadata.d.ts +3 -0
- package/dist/nodes/Weclapp/generated/entityMetadata.js +368 -0
- package/dist/nodes/Weclapp/generated/entityMetadata.js.map +1 -0
- package/dist/nodes/Weclapp/generated/openapiMetadata.d.ts +3 -0
- package/dist/nodes/Weclapp/generated/openapiMetadata.js +212 -0
- package/dist/nodes/Weclapp/generated/openapiMetadata.js.map +1 -0
- package/dist/nodes/Weclapp/methods/customAttributes.d.ts +32 -0
- package/dist/nodes/Weclapp/methods/customAttributes.js +156 -0
- package/dist/nodes/Weclapp/methods/customAttributes.js.map +1 -0
- package/dist/nodes/Weclapp/methods/loadOptions.d.ts +3 -0
- package/dist/nodes/Weclapp/methods/loadOptions.js +107 -0
- package/dist/nodes/Weclapp/methods/loadOptions.js.map +1 -0
- package/dist/nodes/Weclapp/weclapp.dark.svg +19 -0
- package/dist/nodes/Weclapp/weclapp.light.svg +19 -0
- package/dist/nodes/WeclappTrigger/WeclappTrigger.node.d.ts +12 -0
- package/dist/nodes/WeclappTrigger/WeclappTrigger.node.js +198 -0
- package/dist/nodes/WeclappTrigger/WeclappTrigger.node.js.map +1 -0
- package/dist/nodes/WeclappTrigger/weclapp.dark.svg +19 -0
- package/dist/nodes/WeclappTrigger/weclapp.light.svg +19 -0
- package/dist/package.json +78 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SharedFields.js","sourceRoot":"","sources":["../../../nodes/Weclapp/SharedFields.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
import { getCustomAttributeFields } from './methods/customAttributes';
|
|
3
|
+
export declare class Weclapp implements INodeType {
|
|
4
|
+
description: INodeTypeDescription;
|
|
5
|
+
methods: {
|
|
6
|
+
loadOptions: Record<string, (this: import("n8n-workflow").ILoadOptionsFunctions) => Promise<import("n8n-workflow").INodePropertyOptions[]>>;
|
|
7
|
+
listSearch: Record<string, (this: import("n8n-workflow").ILoadOptionsFunctions, filter?: string, paginationToken?: string) => Promise<import("n8n-workflow").INodeListSearchResult>>;
|
|
8
|
+
resourceMapping: {
|
|
9
|
+
getCustomAttributeFields: typeof getCustomAttributeFields;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
customOperations: {
|
|
13
|
+
article: {
|
|
14
|
+
updatePrices: (this: IExecuteFunctions) => Promise<INodeExecutionData[][]>;
|
|
15
|
+
};
|
|
16
|
+
purchaseInvoice: {
|
|
17
|
+
applyPayment: (this: IExecuteFunctions) => Promise<INodeExecutionData[][]>;
|
|
18
|
+
};
|
|
19
|
+
customApiCall: {
|
|
20
|
+
call: (this: IExecuteFunctions) => Promise<INodeExecutionData[][]>;
|
|
21
|
+
};
|
|
22
|
+
document: {
|
|
23
|
+
upload: (this: IExecuteFunctions) => Promise<INodeExecutionData[][]>;
|
|
24
|
+
uploadNewVersion: (this: IExecuteFunctions) => Promise<INodeExecutionData[][]>;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Weclapp = void 0;
|
|
4
|
+
const index_1 = require("./descriptions/index");
|
|
5
|
+
const loadOptions_1 = require("./methods/loadOptions");
|
|
6
|
+
const customAttributes_1 = require("./methods/customAttributes");
|
|
7
|
+
const applyPayment_1 = require("./actions/applyPayment");
|
|
8
|
+
const articlePriceSync_1 = require("./actions/articlePriceSync");
|
|
9
|
+
const CustomApiDescription_1 = require("./descriptions/CustomApiDescription");
|
|
10
|
+
const documentUpload_1 = require("./actions/documentUpload");
|
|
11
|
+
class Weclapp {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.description = {
|
|
14
|
+
displayName: 'weclapp',
|
|
15
|
+
name: 'weclapp',
|
|
16
|
+
icon: {
|
|
17
|
+
light: 'file:weclapp.light.svg',
|
|
18
|
+
dark: 'file:weclapp.dark.svg',
|
|
19
|
+
},
|
|
20
|
+
group: ['transform'],
|
|
21
|
+
version: 1,
|
|
22
|
+
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
|
23
|
+
description: 'Interact with the weclapp ERP API — CRUD, actions, binary downloads, and webhooks. Maintained by Wals-pro (wals.pro). AI copilot available at dev.weclapp-ai.wals.pro (Beta).',
|
|
24
|
+
defaults: {
|
|
25
|
+
name: 'weclapp',
|
|
26
|
+
},
|
|
27
|
+
inputs: ['main'],
|
|
28
|
+
outputs: ['main'],
|
|
29
|
+
credentials: [
|
|
30
|
+
{
|
|
31
|
+
name: 'weclappApi',
|
|
32
|
+
required: true,
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
requestDefaults: {
|
|
36
|
+
baseURL: '={{$credentials.baseUrl}}',
|
|
37
|
+
headers: {
|
|
38
|
+
AuthenticationToken: '={{$credentials.apiKey}}',
|
|
39
|
+
'Content-Type': 'application/json',
|
|
40
|
+
Accept: 'application/json',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
properties: [
|
|
44
|
+
{
|
|
45
|
+
displayName: 'Built by <a href="https://wals.pro" target="_blank">Wals-pro</a> — try the AI copilot at <a href="https://dev.weclapp-ai.wals.pro" target="_blank">weclapp-ai.wals.pro</a> (Beta)',
|
|
46
|
+
name: 'walsproNotice',
|
|
47
|
+
type: 'notice',
|
|
48
|
+
default: '',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
displayName: 'Resource',
|
|
52
|
+
name: 'resource',
|
|
53
|
+
type: 'options',
|
|
54
|
+
noDataExpression: true,
|
|
55
|
+
options: [
|
|
56
|
+
{
|
|
57
|
+
name: 'Article',
|
|
58
|
+
value: 'article',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'Bank Account',
|
|
62
|
+
value: 'bankAccount',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'Bank Transaction',
|
|
66
|
+
value: 'bankTransaction',
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'Comment',
|
|
70
|
+
value: 'comment',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'Custom API Call',
|
|
74
|
+
value: 'customApiCall',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: 'Custom Attribute Definition',
|
|
78
|
+
value: 'customAttributeDefinition',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'Document',
|
|
82
|
+
value: 'document',
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'Party',
|
|
86
|
+
value: 'party',
|
|
87
|
+
description: 'Customers, suppliers, and prospects',
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'Production Order',
|
|
91
|
+
value: 'productionOrder',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'Purchase Invoice',
|
|
95
|
+
value: 'purchaseInvoice',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: 'Purchase Order',
|
|
99
|
+
value: 'purchaseOrder',
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: 'Quotation',
|
|
103
|
+
value: 'quotation',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: 'Sales Invoice',
|
|
107
|
+
value: 'salesInvoice',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'Sales Order',
|
|
111
|
+
value: 'salesOrder',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: 'Shipment',
|
|
115
|
+
value: 'shipment',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
name: 'Tag',
|
|
119
|
+
value: 'tag',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
name: 'Ticket',
|
|
123
|
+
value: 'ticket',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: 'Unit',
|
|
127
|
+
value: 'unit',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: 'User',
|
|
131
|
+
value: 'user',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: 'Warehouse',
|
|
135
|
+
value: 'warehouse',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
name: 'Warehouse Stock',
|
|
139
|
+
value: 'warehouseStock',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
name: 'Warehouse Stock Movement',
|
|
143
|
+
value: 'warehouseStockMovement',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'Webhook',
|
|
147
|
+
value: 'webhook',
|
|
148
|
+
},
|
|
149
|
+
],
|
|
150
|
+
default: 'customApiCall',
|
|
151
|
+
},
|
|
152
|
+
...index_1.resources,
|
|
153
|
+
],
|
|
154
|
+
usableAsTool: true,
|
|
155
|
+
};
|
|
156
|
+
this.methods = {
|
|
157
|
+
loadOptions: loadOptions_1.loadOptions,
|
|
158
|
+
listSearch: loadOptions_1.listSearch,
|
|
159
|
+
resourceMapping: {
|
|
160
|
+
getCustomAttributeFields: customAttributes_1.getCustomAttributeFields,
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
this.customOperations = {
|
|
164
|
+
article: {
|
|
165
|
+
updatePrices: async function () {
|
|
166
|
+
const items = this.getInputData();
|
|
167
|
+
const results = [];
|
|
168
|
+
for (let i = 0; i < items.length; i++) {
|
|
169
|
+
const articleId = this.getNodeParameter('articleId', i, '', { extractValue: true });
|
|
170
|
+
const grossPrice = this.getNodeParameter('grossPrice', i);
|
|
171
|
+
const currencyId = this.getNodeParameter('currencyId', i);
|
|
172
|
+
const options = this.getNodeParameter('updatePricesOptions', i, {});
|
|
173
|
+
const result = await articlePriceSync_1.executeUpdatePrices.call(this, {
|
|
174
|
+
articleId,
|
|
175
|
+
grossPrice,
|
|
176
|
+
currencyId,
|
|
177
|
+
salesChannel: options.salesChannel,
|
|
178
|
+
validFrom: options.validFrom && options.validFrom > 0 ? options.validFrom : undefined,
|
|
179
|
+
});
|
|
180
|
+
results.push({ json: result, pairedItem: { item: i } });
|
|
181
|
+
}
|
|
182
|
+
return [results];
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
purchaseInvoice: {
|
|
186
|
+
applyPayment: async function () {
|
|
187
|
+
const items = this.getInputData();
|
|
188
|
+
const results = [];
|
|
189
|
+
for (let i = 0; i < items.length; i++) {
|
|
190
|
+
const result = await applyPayment_1.executeApplyPayment.call(this, i);
|
|
191
|
+
results.push({ json: result, pairedItem: { item: i } });
|
|
192
|
+
}
|
|
193
|
+
return [results];
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
customApiCall: {
|
|
197
|
+
call: async function () {
|
|
198
|
+
const items = this.getInputData();
|
|
199
|
+
const results = [];
|
|
200
|
+
for (let i = 0; i < items.length; i++) {
|
|
201
|
+
const result = await CustomApiDescription_1.executeCustomApiCall.call(this, i);
|
|
202
|
+
results.push(result);
|
|
203
|
+
}
|
|
204
|
+
return [results];
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
document: {
|
|
208
|
+
upload: async function () {
|
|
209
|
+
const items = this.getInputData();
|
|
210
|
+
const results = [];
|
|
211
|
+
for (let i = 0; i < items.length; i++) {
|
|
212
|
+
const result = await documentUpload_1.executeDocumentUpload.call(this, i);
|
|
213
|
+
results.push(result);
|
|
214
|
+
}
|
|
215
|
+
return [results];
|
|
216
|
+
},
|
|
217
|
+
uploadNewVersion: async function () {
|
|
218
|
+
const items = this.getInputData();
|
|
219
|
+
const results = [];
|
|
220
|
+
for (let i = 0; i < items.length; i++) {
|
|
221
|
+
const result = await documentUpload_1.executeDocumentUploadNewVersion.call(this, i);
|
|
222
|
+
results.push(result);
|
|
223
|
+
}
|
|
224
|
+
return [results];
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
exports.Weclapp = Weclapp;
|
|
231
|
+
//# sourceMappingURL=Weclapp.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Weclapp.node.js","sourceRoot":"","sources":["../../../nodes/Weclapp/Weclapp.node.ts"],"names":[],"mappings":";;;AAEA,gDAAiD;AACjD,uDAAgE;AAChE,iEAAsE;AACtE,yDAA6D;AAC7D,iEAAiE;AACjE,8EAA2E;AAC3E,6DAAkG;AAElG,MAAa,OAAO;IAApB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE;gBACL,KAAK,EAAE,wBAAwB;gBAC/B,IAAI,EAAE,uBAAuB;aAC7B;YACD,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,8DAA8D;YACxE,WAAW,EAAE,+KAA+K;YAC5L,QAAQ,EAAE;gBACT,IAAI,EAAE,SAAS;aACf;YACD,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,IAAI;iBACd;aACD;YACD,eAAe,EAAE;gBAChB,OAAO,EAAE,2BAA2B;gBACpC,OAAO,EAAE;oBACR,mBAAmB,EAAE,0BAA0B;oBAC/C,cAAc,EAAE,kBAAkB;oBAClC,MAAM,EAAE,kBAAkB;iBAC1B;aACD;YACD,UAAU,EAAE;gBACX;oBACC,WAAW,EAAE,mLAAmL;oBAChM,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;iBACX;gBACD;oBACC,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBAEtB,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,SAAS;4BACf,KAAK,EAAE,SAAS;yBAChB;wBACD;4BACC,IAAI,EAAE,cAAc;4BACpB,KAAK,EAAE,aAAa;yBACpB;wBACD;4BACC,IAAI,EAAE,kBAAkB;4BACxB,KAAK,EAAE,iBAAiB;yBACxB;wBACD;4BACC,IAAI,EAAE,SAAS;4BACf,KAAK,EAAE,SAAS;yBAChB;wBACD;4BACC,IAAI,EAAE,iBAAiB;4BACvB,KAAK,EAAE,eAAe;yBACtB;wBACD;4BACC,IAAI,EAAE,6BAA6B;4BACnC,KAAK,EAAE,2BAA2B;yBAClC;wBACD;4BACC,IAAI,EAAE,UAAU;4BAChB,KAAK,EAAE,UAAU;yBACjB;wBACD;4BACC,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,OAAO;4BACd,WAAW,EAAE,qCAAqC;yBAClD;wBACD;4BACC,IAAI,EAAE,kBAAkB;4BACxB,KAAK,EAAE,iBAAiB;yBACxB;wBACD;4BACC,IAAI,EAAE,kBAAkB;4BACxB,KAAK,EAAE,iBAAiB;yBACxB;wBACD;4BACC,IAAI,EAAE,gBAAgB;4BACtB,KAAK,EAAE,eAAe;yBACtB;wBACD;4BACC,IAAI,EAAE,WAAW;4BACjB,KAAK,EAAE,WAAW;yBAClB;wBACD;4BACC,IAAI,EAAE,eAAe;4BACrB,KAAK,EAAE,cAAc;yBACrB;wBACD;4BACC,IAAI,EAAE,aAAa;4BACnB,KAAK,EAAE,YAAY;yBACnB;wBACD;4BACC,IAAI,EAAE,UAAU;4BAChB,KAAK,EAAE,UAAU;yBACjB;wBACD;4BACC,IAAI,EAAE,KAAK;4BACX,KAAK,EAAE,KAAK;yBACZ;wBACD;4BACC,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,QAAQ;yBACf;wBACD;4BACC,IAAI,EAAE,MAAM;4BACZ,KAAK,EAAE,MAAM;yBACb;wBACD;4BACC,IAAI,EAAE,MAAM;4BACZ,KAAK,EAAE,MAAM;yBACb;wBACD;4BACC,IAAI,EAAE,WAAW;4BACjB,KAAK,EAAE,WAAW;yBAClB;wBACD;4BACC,IAAI,EAAE,iBAAiB;4BACvB,KAAK,EAAE,gBAAgB;yBACvB;wBACD;4BACC,IAAI,EAAE,0BAA0B;4BAChC,KAAK,EAAE,wBAAwB;yBAC/B;wBACD;4BACC,IAAI,EAAE,SAAS;4BACf,KAAK,EAAE,SAAS;yBAChB;qBACD;oBACD,OAAO,EAAE,eAAe;iBACxB;gBAED,GAAG,iBAAS;aACZ;YACD,YAAY,EAAE,IAAI;SAClB,CAAC;QAEF,YAAO,GAAG;YACT,WAAW,EAAX,yBAAW;YACX,UAAU,EAAV,wBAAU;YACV,eAAe,EAAE;gBAChB,wBAAwB,EAAxB,2CAAwB;aACxB;SACD,CAAC;QAaF,qBAAgB,GAAG;YAClB,OAAO,EAAE;gBACR,YAAY,EAAE,KAAK;oBAClB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClC,MAAM,OAAO,GAAyB,EAAE,CAAC;oBAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAW,CAAC;wBAC9F,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAW,CAAC;wBACpE,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAW,CAAC;wBACpE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAGjE,CAAC;wBAEF,MAAM,MAAM,GAAG,MAAM,sCAAmB,CAAC,IAAI,CAAC,IAAI,EAAE;4BACnD,SAAS;4BACT,UAAU;4BACV,UAAU;4BACV,YAAY,EAAE,OAAO,CAAC,YAAY;4BAClC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;yBACrF,CAAC,CAAC;wBAEH,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAgC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACnF,CAAC;oBAED,OAAO,CAAC,OAAO,CAAC,CAAC;gBAClB,CAAC;aACD;YAED,eAAe,EAAE;gBAChB,YAAY,EAAE,KAAK;oBAClB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClC,MAAM,OAAO,GAAyB,EAAE,CAAC;oBAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACvC,MAAM,MAAM,GAAG,MAAM,kCAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;wBACvD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAgC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACnF,CAAC;oBAED,OAAO,CAAC,OAAO,CAAC,CAAC;gBAClB,CAAC;aACD;YAED,aAAa,EAAE;gBACd,IAAI,EAAE,KAAK;oBACV,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClC,MAAM,OAAO,GAAyB,EAAE,CAAC;oBAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACvC,MAAM,MAAM,GAAG,MAAM,2CAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;wBACxD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACtB,CAAC;oBAED,OAAO,CAAC,OAAO,CAAC,CAAC;gBAClB,CAAC;aACD;YAED,QAAQ,EAAE;gBACT,MAAM,EAAE,KAAK;oBACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClC,MAAM,OAAO,GAAyB,EAAE,CAAC;oBAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACvC,MAAM,MAAM,GAAG,MAAM,sCAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;wBACzD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACtB,CAAC;oBAED,OAAO,CAAC,OAAO,CAAC,CAAC;gBAClB,CAAC;gBAED,gBAAgB,EAAE,KAAK;oBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClC,MAAM,OAAO,GAAyB,EAAE,CAAC;oBAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACvC,MAAM,MAAM,GAAG,MAAM,gDAA+B,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;wBACnE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACtB,CAAC;oBAED,OAAO,CAAC,OAAO,CAAC,CAAC;gBAClB,CAAC;aACD;SACD,CAAC;IACH,CAAC;CAAA;AA3PD,0BA2PC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IDataObject, IExecuteFunctions } from 'n8n-workflow';
|
|
2
|
+
export interface ApplyPaymentResult {
|
|
3
|
+
applied: boolean;
|
|
4
|
+
invoice: IDataObject;
|
|
5
|
+
transaction: IDataObject;
|
|
6
|
+
openItem: IDataObject;
|
|
7
|
+
}
|
|
8
|
+
export declare function amountsMatch(invoiceAmount: string, transactionAmount: string): boolean;
|
|
9
|
+
export declare function executeApplyPayment(this: IExecuteFunctions, itemIndex: number): Promise<ApplyPaymentResult>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.amountsMatch = amountsMatch;
|
|
4
|
+
exports.executeApplyPayment = executeApplyPayment;
|
|
5
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
6
|
+
const GenericFunctions_1 = require("../GenericFunctions");
|
|
7
|
+
function amountsMatch(invoiceAmount, transactionAmount) {
|
|
8
|
+
const inv = parseFloat(invoiceAmount);
|
|
9
|
+
const trx = parseFloat(transactionAmount);
|
|
10
|
+
if (isNaN(inv) || isNaN(trx))
|
|
11
|
+
return false;
|
|
12
|
+
return Math.abs(inv - trx) < 0.0001;
|
|
13
|
+
}
|
|
14
|
+
async function executeApplyPayment(itemIndex) {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
const purchaseInvoiceId = this.getNodeParameter('purchaseInvoiceId', itemIndex);
|
|
17
|
+
const bankTransactionId = this.getNodeParameter('bankTransactionId', itemIndex);
|
|
18
|
+
if (!purchaseInvoiceId) {
|
|
19
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Purchase Invoice ID is required', {
|
|
20
|
+
itemIndex,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
if (!bankTransactionId) {
|
|
24
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Bank Transaction ID is required', {
|
|
25
|
+
itemIndex,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
const [invoice, transaction] = (await Promise.all([
|
|
29
|
+
GenericFunctions_1.weclappApiRequest.call(this, 'GET', `/purchaseInvoice/id/${purchaseInvoiceId}`),
|
|
30
|
+
GenericFunctions_1.weclappApiRequest.call(this, 'GET', `/bankTransaction/id/${bankTransactionId}`),
|
|
31
|
+
]));
|
|
32
|
+
const invoiceGross = invoice.grossAmount;
|
|
33
|
+
const transactionAmount = transaction.amount;
|
|
34
|
+
if (!invoiceGross) {
|
|
35
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Purchase invoice ${purchaseInvoiceId} has no grossAmount. Cannot validate payment match.`, { itemIndex });
|
|
36
|
+
}
|
|
37
|
+
if (!transactionAmount) {
|
|
38
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Bank transaction ${bankTransactionId} has no amount. Cannot validate payment match.`, { itemIndex });
|
|
39
|
+
}
|
|
40
|
+
const invAbs = String(Math.abs(parseFloat(invoiceGross)));
|
|
41
|
+
const trxAbs = String(Math.abs(parseFloat(transactionAmount)));
|
|
42
|
+
if (!amountsMatch(invAbs, trxAbs)) {
|
|
43
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Amount mismatch: invoice grossAmount ${invoiceGross} does not match bank transaction amount ${transactionAmount}. ` +
|
|
44
|
+
`weclapp requires exact match — partial allocation and FX conversion are not supported.`, { itemIndex });
|
|
45
|
+
}
|
|
46
|
+
const openItems = await GenericFunctions_1.weclappApiRequestAllItems.call(this, 'GET', '/purchaseOpenItem', { 'purchaseInvoiceId-eq': purchaseInvoiceId }, 1000);
|
|
47
|
+
if (openItems.length === 0) {
|
|
48
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `No open item found for purchase invoice ${purchaseInvoiceId}. The invoice may already be fully paid or not yet booked.`, { itemIndex });
|
|
49
|
+
}
|
|
50
|
+
const openItem = (_a = openItems.find((item) => item.cleared === false)) !== null && _a !== void 0 ? _a : openItems[0];
|
|
51
|
+
const openItemId = openItem.id;
|
|
52
|
+
if (!openItemId) {
|
|
53
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Open item for invoice ${purchaseInvoiceId} has no ID. This is unexpected — please check weclapp data integrity.`, { itemIndex });
|
|
54
|
+
}
|
|
55
|
+
const result = (await GenericFunctions_1.weclappApiRequest.call(this, 'POST', `/purchaseOpenItem/id/${openItemId}/createPaymentApplication`, { bankTransactionId }));
|
|
56
|
+
const updatedOpenItem = (_b = result.result) !== null && _b !== void 0 ? _b : result;
|
|
57
|
+
return {
|
|
58
|
+
applied: true,
|
|
59
|
+
invoice,
|
|
60
|
+
transaction,
|
|
61
|
+
openItem: updatedOpenItem,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=applyPayment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applyPayment.js","sourceRoot":"","sources":["../../../../nodes/Weclapp/actions/applyPayment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { IExecuteFunctions } from 'n8n-workflow';
|
|
2
|
+
export interface ArticlePriceRow {
|
|
3
|
+
id?: string;
|
|
4
|
+
version?: string;
|
|
5
|
+
currencyId?: string;
|
|
6
|
+
customerId?: string | null;
|
|
7
|
+
description?: string;
|
|
8
|
+
endDate?: number | null;
|
|
9
|
+
price?: string;
|
|
10
|
+
priceScaleType?: string;
|
|
11
|
+
priceScaleValue?: string;
|
|
12
|
+
reductionAdditions?: unknown[];
|
|
13
|
+
salesChannel?: string;
|
|
14
|
+
startDate?: number | null;
|
|
15
|
+
}
|
|
16
|
+
export interface UpdatePricesInput {
|
|
17
|
+
articleId: string;
|
|
18
|
+
grossPrice: number;
|
|
19
|
+
salesChannel?: string;
|
|
20
|
+
currencyId: string;
|
|
21
|
+
validFrom?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface UpdatePricesResult {
|
|
24
|
+
articleId: string;
|
|
25
|
+
changed: boolean;
|
|
26
|
+
pricesBefore: ArticlePriceRow[];
|
|
27
|
+
pricesAfter: ArticlePriceRow[];
|
|
28
|
+
}
|
|
29
|
+
export declare function floorToSecond(ms: number): number;
|
|
30
|
+
export declare function ceilToSecond(ms: number): number;
|
|
31
|
+
export declare function buildChannelPriceRows({ channel, desiredPrice, currencyId, effectiveTimestamp, existingRows, }: {
|
|
32
|
+
channel: string;
|
|
33
|
+
desiredPrice: number | string;
|
|
34
|
+
currencyId: string;
|
|
35
|
+
effectiveTimestamp: number;
|
|
36
|
+
existingRows: ArticlePriceRow[];
|
|
37
|
+
}): {
|
|
38
|
+
rows: ArticlePriceRow[];
|
|
39
|
+
changed: boolean;
|
|
40
|
+
};
|
|
41
|
+
export declare function executeUpdatePrices(this: IExecuteFunctions, input: UpdatePricesInput): Promise<UpdatePricesResult>;
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.floorToSecond = floorToSecond;
|
|
4
|
+
exports.ceilToSecond = ceilToSecond;
|
|
5
|
+
exports.buildChannelPriceRows = buildChannelPriceRows;
|
|
6
|
+
exports.executeUpdatePrices = executeUpdatePrices;
|
|
7
|
+
const GenericFunctions_1 = require("../GenericFunctions");
|
|
8
|
+
const DEFAULT_SALES_CHANNEL = 'GROSS1';
|
|
9
|
+
const DEFAULT_SCALE_VALUE = '0';
|
|
10
|
+
const ARTICLE_PRICE_PROPERTIES = [
|
|
11
|
+
'id',
|
|
12
|
+
'version',
|
|
13
|
+
'articlePrices.id',
|
|
14
|
+
'articlePrices.version',
|
|
15
|
+
'articlePrices.currencyId',
|
|
16
|
+
'articlePrices.customerId',
|
|
17
|
+
'articlePrices.description',
|
|
18
|
+
'articlePrices.endDate',
|
|
19
|
+
'articlePrices.price',
|
|
20
|
+
'articlePrices.priceScaleType',
|
|
21
|
+
'articlePrices.priceScaleValue',
|
|
22
|
+
'articlePrices.reductionAdditions',
|
|
23
|
+
'articlePrices.salesChannel',
|
|
24
|
+
'articlePrices.startDate',
|
|
25
|
+
].join(',');
|
|
26
|
+
const WRITEABLE_PRICE_KEYS = [
|
|
27
|
+
'id',
|
|
28
|
+
'version',
|
|
29
|
+
'currencyId',
|
|
30
|
+
'customerId',
|
|
31
|
+
'description',
|
|
32
|
+
'endDate',
|
|
33
|
+
'price',
|
|
34
|
+
'priceScaleType',
|
|
35
|
+
'priceScaleValue',
|
|
36
|
+
'reductionAdditions',
|
|
37
|
+
'salesChannel',
|
|
38
|
+
'startDate',
|
|
39
|
+
];
|
|
40
|
+
function floorToSecond(ms) {
|
|
41
|
+
return Math.floor(ms / 1000) * 1000;
|
|
42
|
+
}
|
|
43
|
+
function ceilToSecond(ms) {
|
|
44
|
+
return Math.ceil(ms / 1000) * 1000;
|
|
45
|
+
}
|
|
46
|
+
const _berlinDtf = new Intl.DateTimeFormat('sv-SE', { timeZone: 'Europe/Berlin' });
|
|
47
|
+
const _fmtBerlinDate = (ms) => _berlinDtf.format(new Date(ms));
|
|
48
|
+
function startOfDayBerlin(ms) {
|
|
49
|
+
const dateStr = _fmtBerlinDate(ms);
|
|
50
|
+
const parts = dateStr.split('-').map(Number);
|
|
51
|
+
const [y, m, d] = parts;
|
|
52
|
+
const utcMidnight = Date.UTC(y, m - 1, d);
|
|
53
|
+
const candidates = [];
|
|
54
|
+
for (const offsetMs of [3600000, 7200000]) {
|
|
55
|
+
const candidate = utcMidnight - offsetMs;
|
|
56
|
+
if (_fmtBerlinDate(candidate) === dateStr)
|
|
57
|
+
candidates.push(candidate);
|
|
58
|
+
}
|
|
59
|
+
return candidates.length > 0 ? Math.min(...candidates) : utcMidnight - 3600000;
|
|
60
|
+
}
|
|
61
|
+
function startOfNextDayBerlin(ms) {
|
|
62
|
+
const dateStr = _fmtBerlinDate(ms);
|
|
63
|
+
const parts = dateStr.split('-').map(Number);
|
|
64
|
+
const [y, m, d] = parts;
|
|
65
|
+
const nextDayNoon = Date.UTC(y, m - 1, d + 1, 12);
|
|
66
|
+
return startOfDayBerlin(nextDayNoon);
|
|
67
|
+
}
|
|
68
|
+
function endOfDayBerlin(ms) {
|
|
69
|
+
return startOfNextDayBerlin(ms) - 1;
|
|
70
|
+
}
|
|
71
|
+
function toFiniteNumber(value) {
|
|
72
|
+
if (value === null || value === undefined)
|
|
73
|
+
return null;
|
|
74
|
+
const parsed = Number(value);
|
|
75
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
76
|
+
}
|
|
77
|
+
function normalizePriceString(value, precision = 5) {
|
|
78
|
+
const parsed = toFiniteNumber(value);
|
|
79
|
+
if (parsed === null)
|
|
80
|
+
return null;
|
|
81
|
+
const factor = 10 ** precision;
|
|
82
|
+
const rounded = Math.round((parsed || 0) * factor) / factor;
|
|
83
|
+
const fixed = rounded.toFixed(precision);
|
|
84
|
+
return fixed.includes('.') ? fixed.replace(/\.?0+$/, '') : fixed;
|
|
85
|
+
}
|
|
86
|
+
function normalizeScaleValue(value) {
|
|
87
|
+
const result = normalizePriceString(value === null || value === undefined ? DEFAULT_SCALE_VALUE : value, 5);
|
|
88
|
+
return result === null ? DEFAULT_SCALE_VALUE : result;
|
|
89
|
+
}
|
|
90
|
+
function sanitizePriceRow(row) {
|
|
91
|
+
const output = {};
|
|
92
|
+
for (const key of WRITEABLE_PRICE_KEYS) {
|
|
93
|
+
const val = row[key];
|
|
94
|
+
if (val !== null && val !== undefined) {
|
|
95
|
+
if (key === 'reductionAdditions') {
|
|
96
|
+
output[key] = Array.isArray(val)
|
|
97
|
+
? JSON.parse(JSON.stringify(val))
|
|
98
|
+
: [];
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
output[key] = val;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return output;
|
|
106
|
+
}
|
|
107
|
+
function isGeneralTierZero(row) {
|
|
108
|
+
if (row.customerId !== null && row.customerId !== undefined && row.customerId !== '') {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
return normalizeScaleValue(row.priceScaleValue) === DEFAULT_SCALE_VALUE;
|
|
112
|
+
}
|
|
113
|
+
function isPastAt(row, ts) {
|
|
114
|
+
const endDate = toFiniteNumber(row.endDate);
|
|
115
|
+
return endDate !== null && endDate < ts;
|
|
116
|
+
}
|
|
117
|
+
function isFutureAt(row, ts) {
|
|
118
|
+
const startDate = toFiniteNumber(row.startDate);
|
|
119
|
+
return startDate !== null && startDate > ts;
|
|
120
|
+
}
|
|
121
|
+
function buildChannelPriceRows({ channel, desiredPrice, currencyId, effectiveTimestamp, existingRows, }) {
|
|
122
|
+
var _a, _b;
|
|
123
|
+
const pastRows = [];
|
|
124
|
+
const currentRows = [];
|
|
125
|
+
const futureRows = [];
|
|
126
|
+
for (const row of existingRows) {
|
|
127
|
+
const sanitized = sanitizePriceRow(row);
|
|
128
|
+
if (isPastAt(row, effectiveTimestamp)) {
|
|
129
|
+
pastRows.push(sanitized);
|
|
130
|
+
}
|
|
131
|
+
else if (isFutureAt(row, effectiveTimestamp)) {
|
|
132
|
+
futureRows.push(sanitized);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
currentRows.push(sanitized);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const normalizedDesired = normalizePriceString(desiredPrice, 5);
|
|
139
|
+
if (currentRows.length === 1) {
|
|
140
|
+
const cur = currentRows[0];
|
|
141
|
+
const samePrice = normalizePriceString(cur.price, 5) === normalizedDesired;
|
|
142
|
+
const sameCurrency = String((_a = cur.currencyId) !== null && _a !== void 0 ? _a : '') === String(currencyId);
|
|
143
|
+
const sameScaleType = String((_b = cur.priceScaleType) !== null && _b !== void 0 ? _b : '') === 'SCALE_FROM';
|
|
144
|
+
const sameScaleValue = normalizeScaleValue(cur.priceScaleValue) === DEFAULT_SCALE_VALUE;
|
|
145
|
+
if (samePrice && sameCurrency && sameScaleType && sameScaleValue) {
|
|
146
|
+
return { rows: [...pastRows, cur, ...futureRows], changed: false };
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
let maxImmutableEndDate = null;
|
|
150
|
+
const processedCurrentRows = [];
|
|
151
|
+
for (const row of currentRows) {
|
|
152
|
+
const existingEndDate = toFiniteNumber(row.endDate);
|
|
153
|
+
if (existingEndDate !== null) {
|
|
154
|
+
processedCurrentRows.push(row);
|
|
155
|
+
if (maxImmutableEndDate === null || existingEndDate > maxImmutableEndDate) {
|
|
156
|
+
maxImmutableEndDate = existingEndDate;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
row.endDate = floorToSecond(endOfDayBerlin(effectiveTimestamp));
|
|
161
|
+
processedCurrentRows.push(row);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
let newStartDate = ceilToSecond(startOfNextDayBerlin(effectiveTimestamp));
|
|
165
|
+
if (maxImmutableEndDate !== null && maxImmutableEndDate >= effectiveTimestamp) {
|
|
166
|
+
newStartDate = ceilToSecond(startOfNextDayBerlin(maxImmutableEndDate));
|
|
167
|
+
}
|
|
168
|
+
futureRows.sort((a, b) => {
|
|
169
|
+
var _a, _b;
|
|
170
|
+
const as = (_a = toFiniteNumber(a.startDate)) !== null && _a !== void 0 ? _a : Number.MIN_SAFE_INTEGER;
|
|
171
|
+
const bs = (_b = toFiniteNumber(b.startDate)) !== null && _b !== void 0 ? _b : Number.MIN_SAFE_INTEGER;
|
|
172
|
+
return as - bs;
|
|
173
|
+
});
|
|
174
|
+
const nextFutureStart = futureRows.length > 0 ? toFiniteNumber(futureRows[0].startDate) : null;
|
|
175
|
+
const newRow = {
|
|
176
|
+
currencyId,
|
|
177
|
+
price: normalizedDesired !== null && normalizedDesired !== void 0 ? normalizedDesired : String(desiredPrice),
|
|
178
|
+
priceScaleType: 'SCALE_FROM',
|
|
179
|
+
priceScaleValue: DEFAULT_SCALE_VALUE,
|
|
180
|
+
reductionAdditions: [],
|
|
181
|
+
salesChannel: channel,
|
|
182
|
+
startDate: newStartDate,
|
|
183
|
+
};
|
|
184
|
+
if (nextFutureStart !== null) {
|
|
185
|
+
if (nextFutureStart <= newStartDate) {
|
|
186
|
+
return { rows: [...pastRows, ...processedCurrentRows, ...futureRows], changed: false };
|
|
187
|
+
}
|
|
188
|
+
const cappedEndDate = floorToSecond(startOfDayBerlin(nextFutureStart) - 1);
|
|
189
|
+
if (cappedEndDate < newStartDate) {
|
|
190
|
+
return { rows: [...pastRows, ...processedCurrentRows, ...futureRows], changed: false };
|
|
191
|
+
}
|
|
192
|
+
newRow.endDate = cappedEndDate;
|
|
193
|
+
}
|
|
194
|
+
return {
|
|
195
|
+
rows: [...pastRows, ...processedCurrentRows, newRow, ...futureRows],
|
|
196
|
+
changed: true,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
async function executeUpdatePrices(input) {
|
|
200
|
+
var _a;
|
|
201
|
+
const { articleId, grossPrice, currencyId, validFrom } = input;
|
|
202
|
+
const salesChannel = (_a = input.salesChannel) !== null && _a !== void 0 ? _a : DEFAULT_SALES_CHANNEL;
|
|
203
|
+
const effectiveTimestamp = validFrom !== null && validFrom !== void 0 ? validFrom : Date.now();
|
|
204
|
+
const article = (await GenericFunctions_1.weclappApiRequest.call(this, 'GET', `/article/id/${articleId}`, {}, {
|
|
205
|
+
properties: ARTICLE_PRICE_PROPERTIES,
|
|
206
|
+
}));
|
|
207
|
+
const pricesBefore = Array.isArray(article.articlePrices)
|
|
208
|
+
? article.articlePrices
|
|
209
|
+
: [];
|
|
210
|
+
const targetRows = pricesBefore.filter((r) => r.salesChannel === salesChannel && isGeneralTierZero(r));
|
|
211
|
+
const preservedRows = pricesBefore
|
|
212
|
+
.filter((r) => !(r.salesChannel === salesChannel && isGeneralTierZero(r)))
|
|
213
|
+
.map(sanitizePriceRow);
|
|
214
|
+
const { rows: channelRows, changed } = buildChannelPriceRows({
|
|
215
|
+
channel: salesChannel,
|
|
216
|
+
desiredPrice: grossPrice,
|
|
217
|
+
currencyId,
|
|
218
|
+
effectiveTimestamp,
|
|
219
|
+
existingRows: targetRows,
|
|
220
|
+
});
|
|
221
|
+
if (!changed) {
|
|
222
|
+
return {
|
|
223
|
+
articleId,
|
|
224
|
+
changed: false,
|
|
225
|
+
pricesBefore,
|
|
226
|
+
pricesAfter: pricesBefore,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
const pricesAfter = [...preservedRows, ...channelRows];
|
|
230
|
+
await GenericFunctions_1.weclappApiRequest.call(this, 'PUT', `/article/id/${articleId}`, { articlePrices: pricesAfter }, { ignoreMissingProperties: true });
|
|
231
|
+
return {
|
|
232
|
+
articleId,
|
|
233
|
+
changed: true,
|
|
234
|
+
pricesBefore,
|
|
235
|
+
pricesAfter,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=articlePriceSync.js.map
|