要解决这个问题,可以通过自定义代码来修改Acumatica默认LocationID返回的负值。具体方法如下所示:
在Acumatica中创建一个自定义维护屏幕,并添加一个Location字段。此屏幕可以使用Acumatica框架的屏幕设计器来创建。
在代码中使用以下方法来获取默认的LocationID:
public int? GetDefaultLocationID()
{
// Get the LocationID of the first location listed in the Location table
Location location = PXSelect>>.Select(this);
return location.LocationID;
}
修改上面的代码以便返回正确的LocationID:
public int? GetDefaultLocationID()
{
// Get the LocationID of the first location listed in the Location table
Location location = PXSelect,
And>>.Select(this);
if (location != null && location.LocationID >= 0)
{
return location.LocationID;
}
else
{
location = PXSelect>>.Select(this);
if (location != null && location.LocationID >= 0)
{
return location.LocationID;
}
}
return null;
}
这个修改的代码会首先检查表中是否存在非负的LocationID,如果存在就返回该值。否则,它会返回表中第一个非空且非负的LocationID。如果表中没有任何非空且非负的LocationID,则返回空值。