要通过交叉引用按条形码搜索库存项目,您可以使用Acumatica OpenAPI中的INItemXRef
终结点。以下是一个代码示例,演示如何使用OpenAPI按条形码搜索库存项目:
using PX.Api;
using PX.Api.Models;
using PX.Common;
using System;
using System.Collections.Generic;
namespace AcumaticaOpenAPISample
{
class Program
{
static void Main(string[] args)
{
var endpointUrl = "https://your-acumatica-instance.com/entity/Default/17.200.001";
var screenName = "IN202500"; // 库存项目维护屏幕的名称
var siteID = "YourSiteID"; // 站点ID
var barcode = "YourBarcode"; // 要搜索的条形码
using (var client = new ScreenApi(endpointUrl))
{
// 登录到Acumatica
client.Login("your-username", "your-password");
// 创建屏幕实例
var screen = client.GetSchema(screenName);
// 设置筛选器参数
var filters = new List
{
new Filter
{
Field = new Field
{
ObjectName = screenName,
FieldName = "InventoryItem.barCode"
},
Condition = FilterCondition.Equals,
Value = barcode
}
};
// 设置查询参数
var parameters = new List
{
new Value { Value = siteID, LinkedCommand = screen.PrimaryCommand, Commit = true },
new Value { Value = "true", LinkedCommand = screen.Actions["Search"].Primary }
};
// 运行屏幕操作
var result = client.Submit(screen.Actions["Search"], parameters.ToArray(), filters.ToArray());
// 处理结果
if (result != null && result.Length > 0)
{
// 获取库存项目的信息
var inventoryItem = result[0].LinkedCommandResult.ChildResults[0].Rows[0].Data;
// 输出库存项目信息
Console.WriteLine("Inventory Item ID: " + inventoryItem["InventoryItem.InventoryID"]);
Console.WriteLine("Inventory Item Description: " + inventoryItem["InventoryItem.Descr"]);
// 其他字段...
// 可以在这里进行其他操作,例如创建销售订单等
}
else
{
Console.WriteLine("No inventory item found for the given barcode.");
}
// 注销
client.Logout();
}
Console.ReadKey();
}
}
}
请确保将以下值替换为实际的值:
endpointUrl
:您的Acumatica实例的URL和版本号。screenName
:库存项目维护屏幕的名称。siteID
:要搜索的库存项目所属的站点ID。barcode
:要搜索的条形码。此代码示例使用Acumatica OpenAPI的屏幕操作和查询功能来搜索库存项目,并使用返回的结果进行后续操作。