UNPKG

sap-b1-mcp-server

Version:

SAP Business One Service Layer MCP Server

217 lines (216 loc) 7.8 kB
import { SAP_B1_Config, BusinessPartner, Item, SalesOrder, PurchaseOrder, GoodsReceipt, Invoice, Warehouse, PriceList, ItemWarehouseInfo, ItemPrice, ODataResponse, QueryParams, SAPEntityType, SessionInfo } from './types.js'; export declare class SAPClient { private sessionManager; constructor(config: SAP_B1_Config); /** * Login to SAP B1 */ login(): Promise<SessionInfo>; /** * Logout from SAP B1 */ logout(): Promise<void>; /** * Check session status */ getSessionStatus(): Promise<{ valid: boolean; sessionInfo: SessionInfo | null; }>; /** * Get business partners with optional filters */ getBusinessPartners(params?: QueryParams & { cardType?: 'cCustomer' | 'cSupplier' | 'cLid'; }): Promise<BusinessPartner[]>; /** * Get business partners with full OData response including pagination info */ getBusinessPartnersWithPagination(params?: QueryParams & { cardType?: 'cCustomer' | 'cSupplier' | 'cLid'; }): Promise<ODataResponse<BusinessPartner>>; /** * Get a single business partner by code */ getBusinessPartner(cardCode: string, params?: Pick<QueryParams, '$select' | '$expand'>): Promise<BusinessPartner>; /** * Create a new business partner */ createBusinessPartner(businessPartner: Omit<BusinessPartner, 'CardCode'>): Promise<BusinessPartner>; /** * Update an existing business partner */ updateBusinessPartner(cardCode: string, updates: Partial<BusinessPartner>): Promise<void>; /** * Get items with optional filters */ getItems(params?: QueryParams): Promise<Item[]>; /** * Get items with full OData response including pagination info */ getItemsWithPagination(params?: QueryParams): Promise<ODataResponse<Item>>; /** * Get item groups (product categories) with optional filters */ getItemGroups(params?: QueryParams): Promise<any[]>; /** * Get item groups with full OData response including pagination info */ getItemGroupsWithPagination(params?: QueryParams): Promise<ODataResponse<any>>; /** * Get a single item by code */ getItem(itemCode: string, params?: Pick<QueryParams, '$select' | '$expand'>): Promise<Item>; /** * Create a new item */ createItem(item: Omit<Item, 'ItemCode'>): Promise<Item>; /** * Update an existing item */ updateItem(itemCode: string, updates: Partial<Item>): Promise<void>; /** * Get sales orders with optional filters */ getSalesOrders(params?: QueryParams): Promise<SalesOrder[]>; /** * Get sales orders with full OData response including pagination info */ getSalesOrdersWithPagination(params?: QueryParams): Promise<ODataResponse<SalesOrder>>; /** * Get a single sales order by DocEntry or DocNum */ getSalesOrder(identifier: { docEntry?: number; docNum?: number; }, params?: Pick<QueryParams, '$select' | '$expand'>): Promise<SalesOrder>; /** * Create a new sales order */ createSalesOrder(order: Omit<SalesOrder, 'DocEntry' | 'DocNum'>): Promise<SalesOrder>; /** * Update an existing sales order */ updateSalesOrder(docEntry: number, updates: Partial<SalesOrder>): Promise<void>; /** * Get purchase orders with optional filters */ getPurchaseOrders(params?: QueryParams): Promise<PurchaseOrder[]>; /** * Get purchase orders with full OData response including pagination info */ getPurchaseOrdersWithPagination(params?: QueryParams): Promise<ODataResponse<PurchaseOrder>>; /** * Get a single purchase order by DocEntry or DocNum */ getPurchaseOrder(identifier: { docEntry?: number; docNum?: number; }, params?: Pick<QueryParams, '$select' | '$expand'>): Promise<PurchaseOrder>; /** * Create a new purchase order */ createPurchaseOrder(order: Omit<PurchaseOrder, 'DocEntry' | 'DocNum'>): Promise<PurchaseOrder>; /** * Update an existing purchase order */ updatePurchaseOrder(docEntry: number, updates: Partial<PurchaseOrder>): Promise<void>; /** * Get goods receipts with optional filters */ getGoodsReceipts(params?: QueryParams): Promise<GoodsReceipt[]>; /** * Get goods receipts with full OData response including pagination info */ getGoodsReceiptsWithPagination(params?: QueryParams): Promise<ODataResponse<GoodsReceipt>>; /** * Get a single goods receipt by DocEntry or DocNum */ getGoodsReceipt(identifier: { docEntry?: number; docNum?: number; }, params?: Pick<QueryParams, '$select' | '$expand'>): Promise<GoodsReceipt>; /** * Get invoices with optional filters */ getInvoices(params?: QueryParams): Promise<Invoice[]>; /** * Get invoices with full OData response including pagination info */ getInvoicesWithPagination(params?: QueryParams): Promise<ODataResponse<Invoice>>; /** * Get a single invoice by DocEntry or DocNum */ getInvoice(identifier: { docEntry?: number; docNum?: number; }, params?: Pick<QueryParams, '$select' | '$expand'>): Promise<Invoice>; /** * Create a new invoice */ createInvoice(invoice: Omit<Invoice, 'DocEntry' | 'DocNum'>): Promise<Invoice>; /** * Update an existing invoice */ updateInvoice(docEntry: number, updates: Partial<Invoice>): Promise<void>; /** * Execute a custom OData query */ executeQuery<T = any>(entityType: SAPEntityType, params?: QueryParams): Promise<T[]>; /** * Execute a cross-join query for complex data relationships */ executeCrossJoinQuery<T = any>(query: string): Promise<T[]>; /** * Test connection to SAP B1 */ testConnection(): Promise<{ success: boolean; message: string; sessionInfo?: SessionInfo; }>; /** * Build query string from parameters */ private buildQueryString; /** * Get warehouses with optional filters */ getWarehouses(params?: QueryParams): Promise<Warehouse[]>; /** * Get warehouses with full OData response including pagination info */ getWarehousesWithPagination(params?: QueryParams): Promise<ODataResponse<Warehouse>>; /** * Get a single warehouse by WarehouseCode */ getWarehouse(warehouseCode: string, params?: Pick<QueryParams, '$select' | '$expand'>): Promise<Warehouse>; /** * Get price lists with optional filters */ getPriceLists(params?: QueryParams): Promise<PriceList[]>; /** * Get price lists with full OData response including pagination info */ getPriceListsWithPagination(params?: QueryParams): Promise<ODataResponse<PriceList>>; /** * Get a single price list by PriceListNo */ getPriceList(priceListNo: number, params?: Pick<QueryParams, '$select' | '$expand'>): Promise<PriceList>; /** * Get item stock levels for a specific item and warehouse */ getItemStock(itemCode: string, warehouseCode: string, params?: Pick<QueryParams, '$select'>): Promise<ItemWarehouseInfo>; /** * Get all stock levels for a specific item across all warehouses */ getItemStockAll(itemCode: string, params?: QueryParams): Promise<ItemWarehouseInfo[]>; /** * Get item price for a specific item and price list */ getItemPrice(itemCode: string, priceListId: number, params?: Pick<QueryParams, '$select'>): Promise<ItemPrice>; /** * Get all prices for a specific item across all price lists */ getItemPricesAll(itemCode: string, params?: QueryParams): Promise<ItemPrice[]>; }