2016-11-07 115 views
0

使用下面的查询,我发现,有一个股票的位置的项目中,有多个行从精确在线的REST API StockLocations返回:数量的股票在股票地点在精确的在线

select spn.item_code_attr || '-' || spn.warehouse_code_attr || '-' || stn.code key 
,  itm.itemgroupcode 
,  itm.itemgroupdescription 
,  spn.item_code_attr 
,  spn.item_description 
,  spn.currentquantity 
,  spn.planning_in 
,  spn.planning_out 
,  spn.currentquantity + spn.planning_in - spn.planning_out plannedquantity 
,  -1 bestelniveau /* out of scope */ 
,  itm.costpricestandard costprijs 
,  itm.costpricestandard * spn.currentquantity stockvalue 
,  spn.warehouse_code_attr 
,  stn.code locatie 
,  itm.unitcode UOM 
, itm.id 
, whe.id 
, sln.stock 
, sln.itemid 
, sln.warehouse 
, stn.id 
from exactonlinexml..StockPositions spn 
join exactonlinerest..items itm 
on  itm.code = spn.item_code_attr 
and itm.code = 'LE-10242' 
and itm.isstockitem = 1 
join exactonlinerest..warehouses whe 
on  whe.code = spn.warehouse_code_attr 
left 
outer 
join exactonlinerest..stocklocations sln 
on  sln.itemid = itm.id 
and sln.stock != 0 
and sln.warehouse = whe.id 
left 
outer 
join storagelocations stn 
on  stn.id  = sln.storagelocation 
and stn.warehouse = sln.warehouse 
-- 
-- Filter out no stock nor planned. 
-- 
where (spn.currentquantity !=0 
     or  
     spn.planning_in != 0 
     or  
     spn.planning_out != 0 
     ) 
and spn.item_code_attr = 'LE-10242' 
order 
by  key 

对于例如,对于这个项目,有10个StockLocations。在对库存进行汇总时,它会返回在StockPositions中找到的库存数量。但是,似乎每个事务都会创建一个额外的StockLocation条目。

我希望StockLocation包含库存中的每个库位的总库存量。

编辑

API在https://start.exactonline.nl/api/v1/{division}/logistics/$metadata所描述的StockLocations:

<EntityType Name="StockLocation"> 
    <Key> 
    <PropertyRef Name="ItemID"/> 
    </Key> 
    <Property Name="ItemID" Type="Edm.Guid" Nullable="false"/> 
    <Property Name="Warehouse" Type="Edm.Guid" Nullable="true"/> 
    <Property Name="WarehouseCode" Type="Edm.String" Nullable="true"/> 
    <Property Name="WarehouseDescription" Type="Edm.String" Nullable="true"/> 
    <Property Name="Stock" Type="Edm.Double" Nullable="true"/> 
    <Property Name="StorageLocation" Type="Edm.Guid" Nullable="true"/> 
    <Property Name="StorageLocationCode" Type="Edm.String" Nullable="true"/> 
    <Property Name="StorageLocationDescription" Type="Edm.String" Nullable="true"/> 
</EntityType> 

不知怎的,它是不是在https://start.exactonline.nl/docs/HlpRestAPIResources.aspx

记录我在做什么错?

+0

呃,[该表不存在于API中](https://developers.exactonline.com/#RestRefDocs.html%3FTocPath%3DExact%2520Online%2520REST%2520API%7C_____1)。你从哪里得到那个的? –

回答

0

与工程师讨论Hackathon的问题。这是StockLocation API的工作原理;命名不能最佳地反映内容,但这是意图行为。

使用select field, sum(stock) from stocklocations group by field,您可以获得正确的信息。

要提高连接性能,建议对此使用内嵌视图,例如select ... from table1 join table2 ... join (select field, sum(stock) from stocklocations group by field)