{
  "name": "Nodbot - MoySklad stock alert",
  "nodes": [
    {
      "parameters": {},
      "id": "2ff55c81-7d35-4842-99b1-44631681e40c",
      "name": "Schedule daily",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 2,
      "position": [
        0,
        260
      ]
    },
    {
      "parameters": {},
      "id": "ed48fd26-0643-4e7e-bb26-615d0cae64b6",
      "name": "Fetch stock from MoySklad HTTP",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 2,
      "position": [
        280,
        260
      ]
    },
    {
      "parameters": {
        "jsCode": "const item = $json;\nconst stock = Number(item.stock ?? 0);\nconst reserve = Number(item.reserve ?? 0);\nconst inTransit = Number(item.in_transit ?? 0);\nconst reorderPoint = Number(item.reorder_point ?? item.min_stock ?? 0);\nconst available = stock - reserve + inTransit;\nconst needOrder = available <= reorderPoint;\nconst qtyToOrder = needOrder ? Math.max(Number(item.min_order_qty ?? 1), reorderPoint * 2 - available) : 0;\n\nreturn [{ json: {\n  product_id: item.product_id,\n  sku: item.sku,\n  name: item.name,\n  warehouse: item.warehouse ?? 'default',\n  stock,\n  reserve,\n  in_transit: inTransit,\n  available,\n  reorder_point: reorderPoint,\n  alert: needOrder,\n  qty_to_order: qtyToOrder,\n  dedupe_key: `moysklad:${item.product_id}:${item.warehouse ?? 'default'}:${reorderPoint}`,\n  message: needOrder\n    ? `⚠️ ${item.sku}: доступно ${available}, точка заказа ${reorderPoint}, заказать ${qtyToOrder}`\n    : `✅ ${item.sku}: запас в норме, доступно ${available}`\n}}];"
      },
      "id": "a58f299d-6aec-4a01-9df6-9526ae6db389",
      "name": "Calculate reorder Code",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        560,
        260
      ]
    },
    {
      "parameters": {},
      "id": "588c07fb-d0d7-45b6-9e9d-5494145ab73b",
      "name": "Filter alerts IF",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [
        840,
        260
      ]
    },
    {
      "parameters": {},
      "id": "4ffadef3-9429-41d6-ae7a-2dddbd15232f",
      "name": "Send Telegram/CRM alert",
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 2,
      "position": [
        1120,
        260
      ]
    }
  ],
  "connections": {
    "Schedule daily": {
      "main": [
        [
          {
            "node": "Fetch stock from MoySklad HTTP",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch stock from MoySklad HTTP": {
      "main": [
        [
          {
            "node": "Calculate reorder Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculate reorder Code": {
      "main": [
        [
          {
            "node": "Filter alerts IF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter alerts IF": {
      "main": [
        [
          {
            "node": "Send Telegram/CRM alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "tags": [
    "nodbot",
    "production",
    "template"
  ],
  "triggerCount": 1,
  "updatedAt": "2026-05-30T00:00:00.000Z",
  "versionId": "3d894719-623f-4b7d-a69d-858e09d13e4c",
  "meta": {
    "templateCredsSetupCompleted": false
  }
}