stock_count_journal.py•4.47 kB
from typing import Any, Dict, List
from datetime import datetime
from mcp.types import Tool
from ..config import get_base_url
class StockCountJournalController:
def get_tools(self) -> List[Tool]:
return [
Tool(name="stock_count_journal_get", description="Gets StockCountJournal entities as IQueryable.", inputSchema={"type":"object","properties":{"baseUrl":{"type":"string","default":"https://sculxdon4av67499847-rs.su.retail.test.dynamics.com"}},"required":[]}),
Tool(name="stock_count_journal_sync", description="Syncs the Stock Count journal from HQ to Retail Server and returns current list from DB.", inputSchema={"type":"object","properties":{"baseUrl":{"type":"string","default":"https://sculxdon4av67499847-rs.su.retail.test.dynamics.com"}},"required":[]}),
Tool(name="stock_count_journal_sync_transactions", description="Syncs the Stock Count journal transactions and returns current list from DB.", inputSchema={"type":"object","properties":{"journalId":{"type":"string"},"baseUrl":{"type":"string","default":"https://sculxdon4av67499847-rs.su.retail.test.dynamics.com"}},"required":["journalId"]}),
Tool(name="stock_count_journal_remove_journal", description="Deletes the stock count journal from local.", inputSchema={"type":"object","properties":{"journalId":{"type":"string"},"baseUrl":{"type":"string","default":"https://sculxdon4av67499847-rs.su.retail.test.dynamics.com"}},"required":["journalId"]}),
Tool(name="stock_count_journal_remove_transaction", description="Deletes the stock count journal transaction from local.", inputSchema={"type":"object","properties":{"journalId":{"type":"string"},"itemId":{"type":"string"},"inventSizeId":{"type":"string"},"inventColorId":{"type":"string"},"inventStyleId":{"type":"string"},"configId":{"type":"string"},"baseUrl":{"type":"string","default":"https://sculxdon4av67499847-rs.su.retail.test.dynamics.com"}},"required":["journalId","itemId"]}),
Tool(name="stock_count_remove_line_by_line_id", description="Deletes the stock count line by line identifier.", inputSchema={"type":"object","properties":{"journalId":{"type":"string"},"stockCountLineId":{"type":"number"},"baseUrl":{"type":"string","default":"https://sculxdon4av67499847-rs.su.retail.test.dynamics.com"}},"required":["journalId","stockCountLineId"]}),
Tool(name="stock_count_remove_line_by_product_rec_id", description="Deletes the stock count line by product identifier.", inputSchema={"type":"object","properties":{"journalId":{"type":"string"},"productRecId":{"type":"number"},"baseUrl":{"type":"string","default":"https://sculxdon4av67499847-rs.su.retail.test.dynamics.com"}},"required":["journalId","productRecId"]}),
Tool(name="stock_count_journal_commit", description="Commits the list of stock journal transactions to HQ.", inputSchema={"type":"object","properties":{"journalId":{"type":"string"},"baseUrl":{"type":"string","default":"https://sculxdon4av67499847-rs.su.retail.test.dynamics.com"}},"required":["journalId"]}),
Tool(name="stock_count_journal_get_entity_by_key", description="Gets a stock count journal by journal id.", inputSchema={"type":"object","properties":{"journalId":{"type":"string"},"baseUrl":{"type":"string","default":"https://sculxdon4av67499847-rs.su.retail.test.dynamics.com"}},"required":["journalId"]}),
Tool(name="stock_count_journal_update_entity", description="Updates journal entity.", inputSchema={"type":"object","properties":{"entity":{"type":"object"},"baseUrl":{"type":"string","default":"https://sculxdon4av67499847-rs.su.retail.test.dynamics.com"}},"required":["entity"]}),
Tool(name="stock_count_journal_patch_entity", description="Partially updates journal entity.", inputSchema={"type":"object","properties":{"entity":{"type":"object"},"baseUrl":{"type":"string","default":"https://sculxdon4av67499847-rs.su.retail.test.dynamics.com"}},"required":["entity"]}),
]
async def handle_tool(self, name: str, arguments: Dict[str, Any]) -> Dict[str, Any]:
base_url = arguments.get("baseUrl", get_base_url())
return {
"api": f"MOCK {base_url}/api/CommerceRuntime/StockCountJournal/{name}",
"toolName": name,
"arguments": arguments,
"status": "success",
"timestamp": datetime.now().isoformat() + "Z",
"mockData": {"result": "Success", "name": name}
}