{
  "description": "Скидка 300 ₽ на чек от 1500 ₽: порог считается без табака; водка не опускается ниже МРЦ, и не поместившаяся часть скидки переходит на вино. Затем списание баллов с учётом тех же границ.",
  "calculation": [
    "Сумма для условия — только товары, участвующие в акциях: 40 000 + 120 000 = 160 000 ≥ 150 000 (сигареты не считаются).",
    "30 000 по весам 40 000 : 120 000 → 7500 и 22 500; у водки место до МРЦ только 40 000 − 34 900 = 5100 → водке 5100, остаток 24 900 — вину.",
    "Списание: баллы принимают водка (34 900, ёмкость 0 — уже на МРЦ) и вино (95 100); предел ⌊95 100 / 100⌋ = 951 балл, баланс 500 → 500 баллов = 50 000 коп., всё на вино.",
    "Начисление: 34 900 + 45 100 = 80 000 → 40 баллов; по весам 17,45 / 22,55 → 17 и 22, остаток — вину → 17 и 23; табак не получает ничего."
  ],
  "rules": {
    "schema": 1,
    "program_id": "01900000-0000-7000-8000-000000000001",
    "timezone": "Europe/Moscow",
    "points": {
      "point_type_id": "01900000-0000-7000-8000-000000000002",
      "precision": 0,
      "value_minor": 100
    },
    "accrual": {
      "percent_bp": 500
    },
    "redemption": {
      "max_share_bp": 10000,
      "min_unit_remainder_minor": 0,
      "min_receipt_minor": 0,
      "confirmation": "weak_identifiers"
    },
    "lifecycle": {
      "activation_delay_days": null,
      "expiration_policy": "after_days",
      "expiration_days": null,
      "expiration_date": null,
      "expiration_years": null
    },
    "returns": {
      "spent_points_policy": "ignore",
      "restore_into_new_lot": false
    },
    "campaigns": [
      {
        "id": "minus-300",
        "version": 1,
        "title": "−300 ₽ от 1500 ₽",
        "priority": 0,
        "members_only": true,
        "requires_code": false,
        "exclusive": false,
        "stacking": null,
        "schedule": {
          "starts_at": null,
          "ends_at": null,
          "weekdays": [],
          "time_from": null,
          "time_to": null
        },
        "channels": [],
        "locations": [],
        "condition": {
          ">=": [
            {
              "var": "receipt.total"
            },
            150000
          ]
        },
        "target": null,
        "effect": {
          "type": "discount_amount",
          "amount_minor": 30000,
          "per": "receipt"
        },
        "member_limit": null,
        "budget": null
      }
    ],
    "tiers": null,
    "bonuses": {
      "welcome": null,
      "birthday": null,
      "referral": null
    },
    "stamp_cards": []
  },
  "basket": {
    "purchased_at": "2026-10-03T12:00:00+03:00",
    "redeem_points": 0,
    "redeem_maximum": true,
    "lines": [
      {
        "id": "1",
        "sku": "VODKA",
        "quantity": 1000,
        "amount": 40000,
        "min_unit_price_minor": 34900
      },
      {
        "id": "2",
        "sku": "WINE",
        "quantity": 1000,
        "amount": 120000
      },
      {
        "id": "3",
        "sku": "CIGARETTES",
        "quantity": 1000,
        "amount": 20000,
        "restricted": true
      }
    ]
  },
  "member": {
    "member_id": "m-1",
    "spendable_points": 500,
    "can_redeem": true,
    "can_accrue": true
  },
  "expected": {
    "total": 180000,
    "discount": 30000,
    "redeemed_money": 50000,
    "redeemed_points": 500,
    "points_earned": 40,
    "payable": 100000,
    "max_redeemable_points": 500,
    "lines": [
      {
        "id": "1",
        "amount": 40000,
        "discount": 5100,
        "redeemed_money": 0,
        "redeemed_points": 0,
        "points_earned": 17,
        "payable": 34900
      },
      {
        "id": "2",
        "amount": 120000,
        "discount": 24900,
        "redeemed_money": 50000,
        "redeemed_points": 500,
        "points_earned": 23,
        "payable": 45100
      },
      {
        "id": "3",
        "amount": 20000,
        "discount": 0,
        "redeemed_money": 0,
        "redeemed_points": 0,
        "points_earned": 0,
        "payable": 20000
      }
    ],
    "campaigns": [
      {
        "campaign_id": "minus-300",
        "version": 1,
        "title": "−300 ₽ от 1500 ₽",
        "effect": "discount_amount",
        "discount": 30000,
        "points": 0,
        "promo_code": null,
        "limited_by_budget": false,
        "lines": [
          {
            "id": "1",
            "discount": 5100,
            "points": 0
          },
          {
            "id": "2",
            "discount": 24900,
            "points": 0
          }
        ]
      }
    ],
    "stamps": [],
    "trace": [
      {
        "code": "line.restricted",
        "data": {
          "line": "3"
        }
      },
      {
        "code": "campaign.applied",
        "data": {
          "campaign": "minus-300",
          "discount": 30000,
          "budget_limited": false
        }
      },
      {
        "code": "redemption.limit",
        "data": {
          "eligible_total": 130000,
          "capacity": 95100,
          "max_share_bp": 10000,
          "balance": 500,
          "max_points": 500
        }
      },
      {
        "code": "redemption.applied",
        "data": {
          "points": 500,
          "money": 50000
        }
      },
      {
        "code": "accrual.base",
        "data": {
          "base": 80000,
          "percent_bp": 500,
          "points": 40
        }
      }
    ]
  }
}
