我使用的是IPP .NET SDK(版本2.0.1.0),VS2013和C#
我提交新项目的代码如下(我已插入静态数据进行验证)。
var item = new Item()
{
Type = ItemTypeEnum.Inventory,
TrackQtyOnHand = true,
QtyOnHand = 12,
InvStartDate = DateTime.Today,
Active = true,
Name = "TEST0004",
Description = "Test Product",
PurchaseDesc = "Test Product",
Taxable = true,
SalesTaxIncluded = false,
IncomeAccountRef = new ReferenceType() { Value = "1" }, // SALES
ExpenseAccountRef = new ReferenceType() { Value = "50" }, // COGS
AssetAccountRef = new ReferenceType() { Value = "49" }, // Inventory Asset
UnitPrice = 10M,
PurchaseCost = 7.5M,
sparse = true
};
ServiceContext serviceContext = getServiceContext(profile);
var data = new DataService(serviceContext).Add<Item>(item);
我的期望是添加新的库存商品并启用数量跟踪。以下是使用API Explorer查询此产品时的响应。
<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2013-12-30T11:45:02.640-08:00">
<QueryResponse startPosition="1" maxResults="1">
<Item domain="QBO" sparse="false">
<Id>21</Id>
<SyncToken>0</SyncToken>
<MetaData>
<CreateTime>2013-12-30T11:40:41-08:00</CreateTime>
<LastUpdatedTime>2013-12-30T11:40:41-08:00</LastUpdatedTime>
</MetaData>
<Name>TEST0004</Name>
<Description>Test Product</Description>
<Active>true</Active>
<FullyQualifiedName>TEST0004</FullyQualifiedName>
<Taxable>false</Taxable>
<UnitPrice>0</UnitPrice>
<Type>Service</Type>
<IncomeAccountRef name="Sales">1</IncomeAccountRef>
<PurchaseDesc>Test Product</PurchaseDesc>
<PurchaseCost>0</PurchaseCost>
<ExpenseAccountRef name="Cost of Goods Sold">50</ExpenseAccountRef>
<TrackQtyOnHand>false</TrackQtyOnHand>
</Item>
</QueryResponse>
</IntuitResponse>
我遇到的最关键问题是: 1.该项目作为服务类型而非库存添加 2. TrackQtyOnHand是假的,不是真的 3.缺少AssetAccountRef, 最初的QtyOnHand是missin, 5. PurchaseCost和UnitPrice为0
发生了什么事?这个SDK坏了吗?或者我错过了什么。我已经能够获得非常类似的代码(部门),类别(类)的代码。
提前感谢您提供的任何帮助。
答案 0 :(得分:0)
请检查您是否已从QBO的首选项菜单中启用“QtyOnHand”。
我是从APIExplorer尝试过的。它在那里工作正常。请看看。
创建请求
<Item xmlns="http://schema.intuit.com/finance/v3" sparse="false">
<Name>ABCD_CLONE</Name>
<Active>true</Active>
<FullyQualifiedName>ABCD</FullyQualifiedName>
<Taxable>false</Taxable>
<UnitPrice>45</UnitPrice>
<Type>Inventory</Type>
<IncomeAccountRef name="Sales of Product Income">49</IncomeAccountRef>
<PurchaseCost>0</PurchaseCost>
<ExpenseAccountRef name="Cost of Goods Sold">50</ExpenseAccountRef>
<AssetAccountRef name="Inventory Asset">51</AssetAccountRef>
<TrackQtyOnHand>true</TrackQtyOnHand>
<QtyOnHand>1000</QtyOnHand>
<InvStartDate>2013-12-31</InvStartDate>
</Item>
<强>响应强>
<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2013-12-30T19:42:45.781-08:00">
<Item domain="QBO" sparse="false">
<Id>6</Id>
<SyncToken>0</SyncToken>
<MetaData>
<CreateTime>2013-12-30T19:42:45-08:00</CreateTime>
<LastUpdatedTime>2013-12-30T19:42:45-08:00</LastUpdatedTime>
</MetaData>
<Name>ABCD_CLONE</Name>
<Active>true</Active>
<FullyQualifiedName>ABCD_CLONE</FullyQualifiedName>
<Taxable>false</Taxable>
<UnitPrice>45</UnitPrice>
<Type>Inventory</Type>
<IncomeAccountRef name="Sales of Product Income">49</IncomeAccountRef>
<PurchaseCost>0</PurchaseCost>
<ExpenseAccountRef name="Cost of Goods Sold">50</ExpenseAccountRef>
<AssetAccountRef name="Inventory Asset">51</AssetAccountRef>
<TrackQtyOnHand>true</TrackQtyOnHand>
<QtyOnHand>1000</QtyOnHand>
<InvStartDate>2013-12-31</InvStartDate>
</Item>
</IntuitResponse>
如果可能,请通过在调试模式下配置记录器来从代码中获取原始请求XML。
PN - 有一个与QtyOnHand更新相关的开放式错误。预计将在下一版本中修复。
由于
答案 1 :(得分:0)
你的C#代码不起作用的主要原因是因为Intuit要求你设置各种&#34;被指定&#34;属性,例如TrackQtyOnHandSpecified = true。
希望他们改进他们的属性设置,以便在我们为他们分配数据时自动将这些Specified字段设置为true。现在,您需要查看您设置的每个属性,以查看是否同时设置了关联的Specified属性。现在很尴尬。
干杯, 格雷格
答案 2 :(得分:0)
似乎他们仍然没有解决这个问题。但我在这里,我可以告诉你一个解决方法来解决这个问题。
像往常一样创建一个新项目:
Item i = new Item();
i.Name = "Art 1";
i.TrackQtyOnHand = true;
i.TypeSpecified = true;
i.Type = ItemTypeEnum.Inventory;
i.QtyOnHand = 0;
i.InvStartDate = DateTime.Now;
i.PurchaseCost = 10;
i.UnitPrice = 111;
i.FullyQualifiedName = "Art 1";
i.IncomeAccountRef = new ReferenceType
{
Value = "63"
};
i.ExpenseAccountRef = new ReferenceType
{
Value = "64"
};
i.AssetAccountRef = new ReferenceType
{
Value = "65",
name = "Inventory Asset"
};
Item newItem = dataService.Add(i) as Item;
现在要修复此问题,您必须立即更新新添加的产品,如下所示:
newItem.UnitPrice = i.UnitPrice;
newItem.PurchaseCost = i.PurchaseCost;
newItem.QtyOnHand = i.QtyOnHand;
newItem.InvStartDate = i.InvStartDate;
newItem.Type = i.Type;
newItem.TypeSpecified = true;
newItem.AssetAccountRef = i.AssetAccountRef;
i = dataService.Update(newItem) as Item;
而wala,就是这样。 希望它对某人有所帮助;)