Upload files to "Gheeraert"

This commit is contained in:
2026-07-03 07:29:55 +02:00
parent b140307141
commit 560b30b2b9
4 changed files with 1322 additions and 0 deletions
@@ -0,0 +1,357 @@
{
"name": "Gheeraert Workflow 2 - OrderID ophalen",
"nodes": [
{
"parameters": {
"method": "POST",
"url": "https://my-uat.gheeraert.be/token",
"sendBody": true,
"contentType": "form-urlencoded",
"bodyParameters": {
"parameters": [
{
"name": "grant_type",
"value": "password"
},
{
"name": "username",
"value": "api@dewittransport.nl"
},
{
"name": "password",
"value": "my.gheeraert"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
-368,
-96
],
"id": "f5b22505-d130-43e6-9600-85e55051d7cb",
"name": "Get Gheeraert Token"
},
{
"parameters": {
"operation": "executeQuery",
"query": "SELECT\n id,\n purchase_order_number,\n transpas_legnr,\n transpas_reference,\n file_name\nFROM public.ghe_order_log\nWHERE file_upload_status = 'sent'\n AND gheeraert_order_id IS NULL\n AND is_closed = false\n AND (\n next_status_poll_at IS NULL\n OR next_status_poll_at <= CURRENT_TIMESTAMP\n )\nORDER BY\n COALESCE(last_order_lookup_at, created_at),\n id\nLIMIT 25;",
"options": {}
},
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.6,
"position": [
-144,
-96
],
"id": "1c71fb93-6d01-4187-aa56-b5816f37ab6b",
"name": "Get Orders Without Gheeraert ID",
"credentials": {
"postgres": {
"id": "pxziuCOuNpsUFKrm",
"name": "transpas_n8n_gheeraert"
}
}
},
{
"parameters": {
"jsCode": "return $input.all().map(item => {\n const purchaseOrderNumber = String(item.json.purchase_order_number || '').trim();\n\n return {\n json: {\n ...item.json,\n encodedPurchaseOrderNumber: encodeURIComponent(purchaseOrderNumber),\n },\n };\n});"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
80,
-96
],
"id": "5fb9dc99-37cb-4a46-bde7-e43bc94bbf34",
"name": "Prepare PurchaseOrder Lookup"
},
{
"parameters": {
"jsCode": "return $input.all().map(item => {\n const j = item.json;\n\n let response = j.gheeraertOrder;\n\n // In jouw output is gheeraertOrder een JSON-string.\n if (typeof response === 'string') {\n try {\n response = JSON.parse(response);\n } catch (e) {\n response = null;\n }\n }\n\n // Fallback als response direct op json staat.\n if (!response && (j.OrderID || j.ID || j.orderID)) {\n response = j;\n }\n\n // Soms komt API als array terug.\n const order = Array.isArray(response) ? response[0] : response;\n\n const rawOrderId =\n order?.OrderID ??\n order?.orderID ??\n order?.ID ??\n order?.id ??\n null;\n\n const gheeraertOrderId = rawOrderId !== null ? Number(rawOrderId) : null;\n const found = Number.isFinite(gheeraertOrderId) && gheeraertOrderId > 0;\n\n let errorMessage = '';\n\n if (j.error?.message) {\n errorMessage = j.error.message;\n }\n\n let apiMessage = '';\n\n if (errorMessage.includes('Order not found')) {\n apiMessage = 'Gheeraert OrderID nog niet gevonden';\n } else if (errorMessage) {\n apiMessage = errorMessage.slice(0, 500);\n }\n\n return {\n json: {\n ...j,\n\n found,\n gheeraertOrderId: found ? Math.trunc(gheeraertOrderId) : null,\n\n gheeraertTrackingId: order?.TrackingID ?? null,\n gheeraertPurchaseOrderNumber: order?.PurchaseOrderNumber ?? null,\n gheeraertExtOrderNumber: order?.ExtOrderNumber ?? null,\n gheeraertExtDelNoteNumber: order?.ExtDelNoteNumber ?? null,\n\n lookupMessage: found\n ? `Gheeraert OrderID gevonden: ${Math.trunc(gheeraertOrderId)}`\n : (apiMessage || 'Gheeraert OrderID nog niet gevonden'),\n },\n };\n});"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
752,
-96
],
"id": "5011b72f-6521-49a6-8d6b-30447bd9e2b5",
"name": "Normalize Gheeraert Lookup"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "7da7e84c-8efd-459f-987a-7b3676b19c06",
"leftValue": "={{ $json.found }}",
"rightValue": "true",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
976,
-96
],
"id": "168fc7f2-8447-4b76-a8cf-24c5be91604e",
"name": "OrderID Found?"
},
{
"parameters": {
"operation": "executeQuery",
"query": "UPDATE public.ghe_order_log\nSET\n gheeraert_order_id = $1::integer,\n last_order_lookup_at = CURRENT_TIMESTAMP,\n next_status_poll_at = CURRENT_TIMESTAMP,\n file_upload_error = NULL\nWHERE id = $2::bigint;",
"options": {
"queryReplacement": "=$1 = {{ $json.gheeraertOrderId }}\n$2 = {{ $json.id }}"
}
},
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.6,
"position": [
1200,
-192
],
"id": "3503f64e-1483-4401-825e-22cac20fab82",
"name": "Update Gheeraert OrderID",
"credentials": {
"postgres": {
"id": "pxziuCOuNpsUFKrm",
"name": "transpas_n8n_gheeraert"
}
}
},
{
"parameters": {
"operation": "executeQuery",
"query": "UPDATE public.ghe_order_log\nSET\n last_order_lookup_at = CURRENT_TIMESTAMP,\n next_status_poll_at = CURRENT_TIMESTAMP + INTERVAL '10 minutes',\n file_upload_error = $1::text\nWHERE id = $2::bigint\n AND gheeraert_order_id IS NULL;",
"options": {
"queryReplacement": "=$1 = {{ $json.lookupMessage }}\n$2 = {{ $json.id }}"
}
},
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.6,
"position": [
1200,
0
],
"id": "994d3fcc-4926-40de-a8fa-fe64f5aabbee",
"name": "OrderID Not Found Retry Later",
"credentials": {
"postgres": {
"id": "pxziuCOuNpsUFKrm",
"name": "transpas_n8n_gheeraert"
}
}
},
{
"parameters": {
"url": "=https://my-uat.gheeraert.be/api/Order/ByPurchaseOrderNumber/{{$json.encodedPurchaseOrderNumber}}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=Bearer {{ $('Get Gheeraert Token').first().json.access_token }}"
},
{
"name": "Accept",
"value": "application/json"
}
]
},
"options": {
"response": {
"response": {
"responseFormat": "text",
"outputPropertyName": "gheeraertOrder"
}
}
}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
304,
-32
],
"id": "f8874799-dbed-4a32-86ee-ae56fcafebf3",
"name": "Lookup Gheeraert OrderID",
"notesInFlow": false,
"onError": "continueRegularOutput"
},
{
"parameters": {
"mode": "combine",
"combineBy": "combineByPosition",
"options": {}
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
528,
-96
],
"id": "a4c3324a-8ad3-40dd-8267-33c91af7740a",
"name": "Merge"
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "*/20 6-22 * * 1-5"
}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.3,
"position": [
-592,
-96
],
"id": "61885d7b-a67f-477a-a772-5063858bc108",
"name": "Schedule Trigger"
}
],
"pinData": {},
"connections": {
"Get Gheeraert Token": {
"main": [
[
{
"node": "Get Orders Without Gheeraert ID",
"type": "main",
"index": 0
}
]
]
},
"Get Orders Without Gheeraert ID": {
"main": [
[
{
"node": "Prepare PurchaseOrder Lookup",
"type": "main",
"index": 0
}
]
]
},
"Prepare PurchaseOrder Lookup": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
},
{
"node": "Lookup Gheeraert OrderID",
"type": "main",
"index": 0
}
]
]
},
"Normalize Gheeraert Lookup": {
"main": [
[
{
"node": "OrderID Found?",
"type": "main",
"index": 0
}
]
]
},
"OrderID Found?": {
"main": [
[
{
"node": "Update Gheeraert OrderID",
"type": "main",
"index": 0
}
],
[
{
"node": "OrderID Not Found Retry Later",
"type": "main",
"index": 0
}
]
]
},
"Update Gheeraert OrderID": {
"main": [
[]
]
},
"Lookup Gheeraert OrderID": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Normalize Gheeraert Lookup",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Get Gheeraert Token",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate"
},
"versionId": "1d9a70a4-7abe-4927-a8ca-ababafe107e6",
"meta": {
"templateCredsSetupCompleted": true,
"instanceId": "bef8d409866a58c0777dfe7cca1b9c2400fd051c056d361501393ab423006b5f"
},
"nodeGroups": [],
"id": "BHfu3wTZCa8C9Gwr",
"tags": []
}