357 lines
11 KiB
JSON
357 lines
11 KiB
JSON
{
|
|
"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": []
|
|
} |