769 lines
19 KiB
JSON
769 lines
19 KiB
JSON
{
|
|
"active": false,
|
|
"connections": {
|
|
"HTTP Request1": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Split Response Into Orders",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Schedule Trigger": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "HTTP Request1",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Split Response Into Orders": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Upsert Customer",
|
|
"type": "main",
|
|
"index": 0
|
|
},
|
|
{
|
|
"node": "Merge",
|
|
"type": "main",
|
|
"index": 1
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Postgres": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Merge1",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Crypto": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Code",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Upsert Customer": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Merge",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Merge": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Crypto",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Code": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Postgres",
|
|
"type": "main",
|
|
"index": 0
|
|
},
|
|
{
|
|
"node": "Merge1",
|
|
"type": "main",
|
|
"index": 1
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Merge1": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Item Lists",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Item Lists": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "IF1",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Code1": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Postgres2",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Postgres2": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "IF",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"IF1": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Code2",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
],
|
|
[
|
|
{
|
|
"node": "Code1",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Code2": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Baserow",
|
|
"type": "main",
|
|
"index": 0
|
|
},
|
|
{
|
|
"node": "Merge2",
|
|
"type": "main",
|
|
"index": 1
|
|
}
|
|
]
|
|
]
|
|
},
|
|
"Baserow": {
|
|
"main": [
|
|
[
|
|
{
|
|
"node": "Merge2",
|
|
"type": "main",
|
|
"index": 0
|
|
}
|
|
]
|
|
]
|
|
}
|
|
},
|
|
"createdAt": "2023-12-11T17:25:14.909Z",
|
|
"id": "55eZFqIMkqfMEtaC",
|
|
"meta": null,
|
|
"name": "Billbee Aufträge -> Data Warehouse",
|
|
"nodes": [
|
|
{
|
|
"parameters": {
|
|
"url": "https://app.billbee.io/api/v1/orders",
|
|
"authentication": "genericCredentialType",
|
|
"genericAuthType": "httpBasicAuth",
|
|
"sendQuery": true,
|
|
"queryParameters": {
|
|
"parameters": [
|
|
{
|
|
"name": "minOrderDate",
|
|
"value": "={{ $today.minus(1 $day) }}"
|
|
},
|
|
{
|
|
"name": "pageSize",
|
|
"value": "250"
|
|
}
|
|
]
|
|
},
|
|
"sendHeaders": true,
|
|
"headerParameters": {
|
|
"parameters": [
|
|
{
|
|
"name": "X-Billbee-Api-Key",
|
|
"value": "2855BE2C-1D67-4AB0-9DEB-3073E6D27B1C"
|
|
}
|
|
]
|
|
},
|
|
"options": {}
|
|
},
|
|
"id": "34781fe0-a66e-43a6-a616-45a1ad27f2e8",
|
|
"name": "HTTP Request1",
|
|
"type": "n8n-nodes-base.httpRequest",
|
|
"typeVersion": 4.1,
|
|
"position": [
|
|
-260,
|
|
-1340
|
|
],
|
|
"credentials": {
|
|
"httpBasicAuth": {
|
|
"id": "xANPcw3p1Nh0wF9J",
|
|
"name": "Billbee Basic"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"rule": {
|
|
"interval": [
|
|
{
|
|
"triggerAtMinute": 5
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"id": "28e8e58e-aea3-4c88-b174-7f4a51c425bd",
|
|
"name": "Schedule Trigger",
|
|
"type": "n8n-nodes-base.scheduleTrigger",
|
|
"typeVersion": 1.1,
|
|
"position": [
|
|
-520,
|
|
-1340
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"schema": {
|
|
"__rl": true,
|
|
"mode": "list",
|
|
"value": "public"
|
|
},
|
|
"table": {
|
|
"__rl": true,
|
|
"value": "fact_order_details",
|
|
"mode": "list",
|
|
"cachedResultName": "fact_order_details"
|
|
},
|
|
"columns": {
|
|
"mappingMode": "defineBelow",
|
|
"value": {
|
|
"product_id": "={{ $json.Product.EAN }}",
|
|
"quantity": "={{ $json.Quantity }}",
|
|
"price_each": "={{ $json.TotalPrice / $json.Quantity}}",
|
|
"order_detail_id": 0,
|
|
"order_id": 0
|
|
},
|
|
"matchingColumns": [],
|
|
"schema": [
|
|
{
|
|
"id": "order_detail_id",
|
|
"displayName": "order_detail_id",
|
|
"required": false,
|
|
"defaultMatch": false,
|
|
"display": true,
|
|
"type": "number",
|
|
"canBeUsedToMatch": true
|
|
},
|
|
{
|
|
"id": "order_id",
|
|
"displayName": "order_id",
|
|
"required": true,
|
|
"defaultMatch": false,
|
|
"display": true,
|
|
"type": "number",
|
|
"canBeUsedToMatch": true
|
|
},
|
|
{
|
|
"id": "product_id",
|
|
"displayName": "product_id",
|
|
"required": false,
|
|
"defaultMatch": false,
|
|
"display": true,
|
|
"type": "string",
|
|
"canBeUsedToMatch": true
|
|
},
|
|
{
|
|
"id": "quantity",
|
|
"displayName": "quantity",
|
|
"required": true,
|
|
"defaultMatch": false,
|
|
"display": true,
|
|
"type": "number",
|
|
"canBeUsedToMatch": true
|
|
},
|
|
{
|
|
"id": "price_each",
|
|
"displayName": "price_each",
|
|
"required": true,
|
|
"defaultMatch": false,
|
|
"display": true,
|
|
"type": "number",
|
|
"canBeUsedToMatch": true
|
|
}
|
|
]
|
|
},
|
|
"options": {}
|
|
},
|
|
"id": "dab64316-4942-4207-b75a-dcd78704ab05",
|
|
"name": "Postgres1",
|
|
"type": "n8n-nodes-base.postgres",
|
|
"typeVersion": 2.3,
|
|
"position": [
|
|
2600,
|
|
-1580
|
|
],
|
|
"credentials": {
|
|
"postgres": {
|
|
"id": "JW5wwsSY4obQbCBb",
|
|
"name": "Postgres - warehouse"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"operation": "upsert",
|
|
"schema": {
|
|
"__rl": true,
|
|
"mode": "list",
|
|
"value": "public"
|
|
},
|
|
"table": {
|
|
"__rl": true,
|
|
"value": "dim_customers",
|
|
"mode": "list",
|
|
"cachedResultName": "dim_customers"
|
|
},
|
|
"columns": {
|
|
"mappingMode": "defineBelow",
|
|
"value": {
|
|
"customer_id": "={{ $json.Customer.Number }}",
|
|
"customer_country": "={{ $json.ShippingAddress.CountryISO2 }}"
|
|
},
|
|
"matchingColumns": [
|
|
"customer_id"
|
|
],
|
|
"schema": [
|
|
{
|
|
"id": "customer_id",
|
|
"displayName": "customer_id",
|
|
"required": false,
|
|
"defaultMatch": false,
|
|
"display": true,
|
|
"type": "number",
|
|
"canBeUsedToMatch": true,
|
|
"removed": false
|
|
},
|
|
{
|
|
"id": "customer_country",
|
|
"displayName": "customer_country",
|
|
"required": false,
|
|
"defaultMatch": false,
|
|
"display": true,
|
|
"type": "string",
|
|
"canBeUsedToMatch": false
|
|
}
|
|
]
|
|
},
|
|
"options": {}
|
|
},
|
|
"id": "6bd22bb9-e978-436e-bfa0-5f7579dec8d0",
|
|
"name": "Upsert Customer",
|
|
"type": "n8n-nodes-base.postgres",
|
|
"typeVersion": 2.3,
|
|
"position": [
|
|
300,
|
|
-1480
|
|
],
|
|
"credentials": {
|
|
"postgres": {
|
|
"id": "JW5wwsSY4obQbCBb",
|
|
"name": "Postgres - warehouse"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"conditions": {
|
|
"boolean": [
|
|
{
|
|
"value1": "={{ $json }} {{ $json.product_ean }}",
|
|
"operation": "notEqual",
|
|
"value2": "={{ null }}"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"id": "7991fd99-8f2d-4911-bc42-98b1c78269b3",
|
|
"name": "IF",
|
|
"type": "n8n-nodes-base.if",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
2540,
|
|
-1280
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"fieldToSplitOut": "Data",
|
|
"options": {}
|
|
},
|
|
"id": "f951938c-ca90-4f33-9dce-099084407196",
|
|
"name": "Split Response Into Orders",
|
|
"type": "n8n-nodes-base.itemLists",
|
|
"typeVersion": 3,
|
|
"position": [
|
|
40,
|
|
-1480
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"operation": "upsert",
|
|
"schema": {
|
|
"__rl": true,
|
|
"value": "public",
|
|
"mode": "list",
|
|
"cachedResultName": "public"
|
|
},
|
|
"table": {
|
|
"__rl": true,
|
|
"value": "dim_orders",
|
|
"mode": "list",
|
|
"cachedResultName": "dim_orders"
|
|
},
|
|
"columns": {
|
|
"mappingMode": "defineBelow",
|
|
"value": {
|
|
"order_id": "={{ $json.order_hash }}",
|
|
"platform_id": "={{ $json.platform }}",
|
|
"customer_id": "={{ $json.Customer.Number }}",
|
|
"order_date": "={{ $json.CreatedAt.toDate().format(\"yyyyMMdd\") }}",
|
|
"order_ref": "={{ $json.OrderNumber }}"
|
|
},
|
|
"matchingColumns": [
|
|
"order_id"
|
|
],
|
|
"schema": [
|
|
{
|
|
"id": "order_ref",
|
|
"displayName": "order_ref",
|
|
"required": false,
|
|
"defaultMatch": false,
|
|
"display": true,
|
|
"type": "string",
|
|
"canBeUsedToMatch": false
|
|
},
|
|
{
|
|
"id": "order_date",
|
|
"displayName": "order_date",
|
|
"required": true,
|
|
"defaultMatch": false,
|
|
"display": true,
|
|
"type": "number",
|
|
"canBeUsedToMatch": false
|
|
},
|
|
{
|
|
"id": "customer_id",
|
|
"displayName": "customer_id",
|
|
"required": true,
|
|
"defaultMatch": false,
|
|
"display": true,
|
|
"type": "number",
|
|
"canBeUsedToMatch": false
|
|
},
|
|
{
|
|
"id": "platform_id",
|
|
"displayName": "platform_id",
|
|
"required": false,
|
|
"defaultMatch": false,
|
|
"display": true,
|
|
"type": "number",
|
|
"canBeUsedToMatch": false
|
|
},
|
|
{
|
|
"id": "order_id",
|
|
"displayName": "order_id",
|
|
"required": true,
|
|
"defaultMatch": false,
|
|
"display": true,
|
|
"type": "string",
|
|
"canBeUsedToMatch": true,
|
|
"removed": false
|
|
}
|
|
]
|
|
},
|
|
"options": {}
|
|
},
|
|
"id": "716963ce-227c-470b-83d5-85c4af9442f3",
|
|
"name": "Postgres",
|
|
"type": "n8n-nodes-base.postgres",
|
|
"typeVersion": 2.3,
|
|
"position": [
|
|
1120,
|
|
-1320
|
|
],
|
|
"credentials": {
|
|
"postgres": {
|
|
"id": "JW5wwsSY4obQbCBb",
|
|
"name": "Postgres - warehouse"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"value": "={{ $json.OrderNumber.concat($json.CreatedAt.toDate().format(\"yyyy-MM-d\")) }}",
|
|
"dataPropertyName": "=order_hash"
|
|
},
|
|
"id": "67fd82c6-055a-41d7-bc5e-ca727b0f9777",
|
|
"name": "Crypto",
|
|
"type": "n8n-nodes-base.crypto",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
700,
|
|
-1320
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"mode": "chooseBranch",
|
|
"output": "input2"
|
|
},
|
|
"id": "8490a7f7-6f11-487b-8f81-4c97f56c638b",
|
|
"name": "Merge",
|
|
"type": "n8n-nodes-base.merge",
|
|
"typeVersion": 2.1,
|
|
"position": [
|
|
500,
|
|
-1320
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"language": "python",
|
|
"pythonCode": "# Loop over input items and add a new field called 'myNewField' to the JSON of each one\nfor item in _input.all():\n\tmatch item.json.Seller.BillbeeShopName:\n\t\tcase 'eBay':\n item.json.platform = 12\n\t\tcase 'lana-kk':\n item.json.platform = 1\n\t\tcase 'Amazon':\n item.json.platform = 2\n\t\tcase 'Weltkarten24':\n item.json.platform = 3\n\t\tcase 'KAUFLAND':\n item.json.platform = 5\n\t\tcase 'Wayfair':\n item.json.platform = 4\n\t\tcase 'Böttcher AG':\n item.json.platform = 7\n\t\tcase 'Juramondo':\n item.json.platform = 9\n\t\tcase 'wild.lanakk.com':\n item.json.platform = 8\n\t\tcase 'Etsy':\n item.json.platform = 10\n\t\tcase 'Otto':\n item.json.platform = 6\n\t\tcase 'weltkarte-kinder':\n item.json.platform = 11\n\t\tcase _:\n item.json.platform = 1\nreturn _input.all()\n"
|
|
},
|
|
"id": "2006b054-3147-4f8a-b8d1-6ce19554dfde",
|
|
"name": "Code",
|
|
"type": "n8n-nodes-base.code",
|
|
"typeVersion": 2,
|
|
"position": [
|
|
920,
|
|
-1320
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"mode": "chooseBranch",
|
|
"output": "input2"
|
|
},
|
|
"id": "5d30f116-d392-4a34-9977-c9cb1bcaae07",
|
|
"name": "Merge1",
|
|
"type": "n8n-nodes-base.merge",
|
|
"typeVersion": 2.1,
|
|
"position": [
|
|
1300,
|
|
-1100
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"fieldToSplitOut": "OrderItems",
|
|
"include": "selectedOtherFields",
|
|
"fieldsToInclude": "order_hash",
|
|
"options": {}
|
|
},
|
|
"id": "dc3a5418-691f-42a9-b09f-bb4c9d0e2155",
|
|
"name": "Item Lists",
|
|
"type": "n8n-nodes-base.itemLists",
|
|
"typeVersion": 3,
|
|
"position": [
|
|
1520,
|
|
-1100
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"language": "python",
|
|
"pythonCode": "# Loop over input items and add a new field called 'myNewField' to the JSON of each one\nfor item in _input.all():\n if item.json.OrderItems.Product.EAN is None:\n print(\"hoho\")\n item.json.OrderItems.Product.EAN = \"9999999999999\"\n item.json.OrderItems.Product.order_detail_sku = item.json.OrderItems.Product.SKU\nreturn _input.all()\n"
|
|
},
|
|
"id": "2b2f4265-e3af-444e-81d6-61c976ead182",
|
|
"name": "Code1",
|
|
"type": "n8n-nodes-base.code",
|
|
"typeVersion": 2,
|
|
"position": [
|
|
2040,
|
|
-1120
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"operation": "select",
|
|
"schema": {
|
|
"__rl": true,
|
|
"mode": "list",
|
|
"value": "public"
|
|
},
|
|
"table": {
|
|
"__rl": true,
|
|
"value": "dim_products",
|
|
"mode": "list",
|
|
"cachedResultName": "dim_products"
|
|
},
|
|
"limit": 1,
|
|
"where": {
|
|
"values": [
|
|
{
|
|
"column": "product_ean",
|
|
"value": "={{ $json.OrderItems.Product.EAN }}"
|
|
}
|
|
]
|
|
},
|
|
"options": {}
|
|
},
|
|
"id": "54832aff-c8aa-476e-89ce-762f1d037ed3",
|
|
"name": "Postgres2",
|
|
"type": "n8n-nodes-base.postgres",
|
|
"typeVersion": 2.3,
|
|
"position": [
|
|
2180,
|
|
-1100
|
|
],
|
|
"alwaysOutputData": true,
|
|
"credentials": {
|
|
"postgres": {
|
|
"id": "JW5wwsSY4obQbCBb",
|
|
"name": "Postgres - warehouse"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"databaseId": 104,
|
|
"tableId": 526,
|
|
"limit": 1,
|
|
"additionalOptions": {
|
|
"filters": {
|
|
"fields": [
|
|
{
|
|
"field": 4229,
|
|
"value": "={{ $json.OrderItems.Product.SKU }}"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"id": "6cbb5ce8-550a-4b3c-b87f-3f1d1a3a7f02",
|
|
"name": "Baserow",
|
|
"type": "n8n-nodes-base.baserow",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
2140,
|
|
-1700
|
|
],
|
|
"alwaysOutputData": true,
|
|
"credentials": {
|
|
"baserowApi": {
|
|
"id": "j10WQMd09rnsjW3T",
|
|
"name": "Baserow account"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"parameters": {
|
|
"conditions": {
|
|
"boolean": [
|
|
{
|
|
"value1": "={{ $json.OrderItems.Product.EAN }}",
|
|
"value2": "={{ null }}"
|
|
},
|
|
{
|
|
"value1": "={{ $json.OrderItems.Product.SKU }}",
|
|
"operation": "notEqual",
|
|
"value2": "={{ null }}"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"id": "8f0d7af7-8f64-45c9-8bf7-9c13b7f71991",
|
|
"name": "IF1",
|
|
"type": "n8n-nodes-base.if",
|
|
"typeVersion": 1,
|
|
"position": [
|
|
1720,
|
|
-1280
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"language": "python",
|
|
"pythonCode": "# Loop over input items and add a new field called 'myNewField' to the JSON of each one\nfor item in _input.all():\n product = item.json.OrderItems.Product\n if product and product.get('SKU'):\n print('hey')\n # Correct old SKU schema\n product.SKU = product.SKU.replace('worldmap','wm')\n product.SKU = product.SKU.replace('weltkarte','wk')\n # Correct very old Amazon SKUs\n product.SKU = product.SKU.replace('kork_M1','-de-kork-l_120x80-1-S')\n product.SKU = product.SKU.replace('kork_S','-de-kork-l_100x70-1-S')\nreturn _input.all()"
|
|
},
|
|
"id": "d49cb597-20e6-4580-8a14-6c876eefa24a",
|
|
"name": "Code2",
|
|
"type": "n8n-nodes-base.code",
|
|
"typeVersion": 2,
|
|
"position": [
|
|
1860,
|
|
-1520
|
|
]
|
|
},
|
|
{
|
|
"parameters": {
|
|
"mode": "combine",
|
|
"mergeByFields": {
|
|
"values": [
|
|
{
|
|
"field1": "['SKU (Text)']",
|
|
"field2": "OrderItems.Product.SKU"
|
|
}
|
|
]
|
|
},
|
|
"joinMode": "enrichInput2",
|
|
"options": {}
|
|
},
|
|
"id": "bd3d3873-ac13-4d0d-97d3-97a7feb867b6",
|
|
"name": "Merge2",
|
|
"type": "n8n-nodes-base.merge",
|
|
"typeVersion": 2.1,
|
|
"position": [
|
|
2180,
|
|
-1360
|
|
]
|
|
}
|
|
],
|
|
"pinData": {},
|
|
"settings": {
|
|
"executionOrder": "v1"
|
|
},
|
|
"staticData": null,
|
|
"tags": [],
|
|
"triggerCount": 0,
|
|
"updatedAt": "2023-12-18T19:09:43.000Z",
|
|
"versionId": "b828beea-9c8a-43fd-97b6-f3ad61c8fb22"
|
|
} |