sap-b1-mcp-server
Version:
SAP Business One Service Layer MCP Server
217 lines (216 loc) • 7.8 kB
TypeScript
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[]>;
}