rms_daily_sales
Retrieve daily sales summary including orders, revenue, tax, coupons, and delivery charges for a specified date range.
Instructions
Daily sales summary (orders, revenue, tax, coupons, delivery)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | No | YYYY-MM-DD | |
| end_date | No | YYYY-MM-DD |
Implementation Reference
- rms_mcp/server.py:91-119 (handler)The _daily_sales() function is the actual handler for the rms_daily_sales tool. It processes arguments (start_date, end_date), fetches orders via _fetch_all_orders, aggregates daily stats (order count, revenue, tax, shop coupon, delivery), and returns a formatted markdown table.
async def _daily_sales(args: dict, api: OrderAPI) -> list[TextContent]: now = _now() start = datetime.fromisoformat(args.get("start_date", (now - timedelta(days=7)).strftime("%Y-%m-%d"))) end = datetime.fromisoformat(args.get("end_date", now.strftime("%Y-%m-%d"))) end = end.replace(hour=23, minute=59, second=59) orders = _fetch_all_orders(api, start, end, ACTIVE_PROGRESS) if not orders: return [TextContent(type="text", text="No orders found.")] daily: dict[str, dict] = defaultdict(lambda: {"o": 0, "rev": 0, "tax": 0, "cs": 0, "co": 0, "dlv": 0}) for o in orders: d = o.get("orderDatetime", "")[:10] daily[d]["o"] += 1 daily[d]["rev"] += o.get("totalPrice", 0) daily[d]["tax"] += o.get("goodsTax", 0) daily[d]["cs"] += o.get("couponShopPrice", 0) daily[d]["co"] += o.get("couponOtherPrice", 0) daily[d]["dlv"] += o.get("deliveryPrice", 0) lines = [f"# RMS Daily Sales: {start.date()} ~ {end.date()}\n| Date | Orders | Revenue | Tax | Shop Coupon | Delivery |\n|---|---|---|---|---|---|"] gt, go = 0, 0 for day in sorted(daily): d = daily[day] gt += d["rev"]; go += d["o"] lines.append(f"| {day} | {d['o']}件 | ¥{d['rev']:,} | ¥{d['tax']:,} | ¥{d['cs']:,} | ¥{d['dlv']:,} |") avg = gt // go if go else 0 lines.append(f"\n**Total**: {go} orders, ¥{gt:,}, avg ¥{avg:,}") return [TextContent(type="text", text="\n".join(lines))] - rms_mcp/server.py:51-55 (schema)The Tool registration with inputSchema defines the rms_daily_sales tool: description='Daily sales summary (orders, revenue, tax, coupons, delivery)', with optional string parameters 'start_date' and 'end_date' (YYYY-MM-DD format).
Tool(name="rms_daily_sales", description="Daily sales summary (orders, revenue, tax, coupons, delivery)", inputSchema={"type": "object", "properties": { "start_date": {"type": "string", "description": "YYYY-MM-DD"}, "end_date": {"type": "string", "description": "YYYY-MM-DD"}, }}), - rms_mcp/server.py:78-79 (registration)The call_tool() function dispatches 'rms_daily_sales' to the _daily_sales() handler.
if name == "rms_daily_sales": return await _daily_sales(arguments, api) - rms_mcp/server.py:36-45 (helper)_fetch_all_orders() is a helper used by _daily_sales to retrieve all orders within a date range and status progress list.
def _fetch_all_orders(api: OrderAPI, start: datetime, end: datetime, progress: list[int] | None) -> list[dict]: r = api.search_orders(_to_rms(start), _to_rms(end), date_type=1, progress_list=progress) nums = r.get("orderNumberList", []) if not nums: return [] orders = [] for i in range(0, len(nums), 50): detail = api.get_order(nums[i : i + 50]) orders.extend(detail.get("OrderModelList", [])) return orders