[解決済み] 「表示形式」フィールドが更新不可のフィールドのようです。他のフィールドを使用すると、完全に機能します。
今日、QB Enterprise の QB API V2 を使い始めました。ASP.NET Webフォームで追加/更新/表示/削除操作を行う方法を学んでいます。ここの QB からサンプルをダウンロードしましたhttps://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/sample_code
会社のリストを見ることができます。以下のコードから会社のフィールドを更新しようとしましたが、更新されておらず、エラーも発生していません。私が何か見逃しているかどうか、誰でも見ることができますか?
appToken = ConfigurationManager.AppSettings["applicationToken"];
realmId = HttpContext.Current.Session["realm"].ToString();
accessToken = HttpContext.Current.Session["accessToken"].ToString();
accessTokenSecret = HttpContext.Current.Session["accessTokenSecret"].ToString();
consumerKey = ConfigurationManager.AppSettings["consumerKey"].ToString(CultureInfo.InvariantCulture);
consumerSecret = ConfigurationManager.AppSettings["consumerSecret"];
dataSourcetype = HttpContext.Current.Session["dataSource"].ToString().ToLower() == "qbd" ? IntuitServicesType.QBD : IntuitServicesType.QBO;
OAuthRequestValidator oauthValidator = new OAuthRequestValidator(accessToken, accessTokenSecret, consumerKey, consumerSecret);
ServiceContext context = new ServiceContext(oauthValidator, appToken, realmId, dataSourcetype);
DataServices commonService = new DataServices(context);
var qbdCustomerQuery = new Intuit.Ipp.Data.Qbd.CustomerQuery();
qbdCustomerQuery.ItemElementName = Intuit.Ipp.Data.Qbd.ItemChoiceType4.StartPage;
qbdCustomerQuery.Item = "1";
qbdCustomerQuery.ChunkSize = "10";
var qbdCustomers = qbdCustomerQuery.ExecuteQuery<Intuit.Ipp.Data.Qbd.Customer>(context).ToList();
Intuit.Ipp.Data.Qbd.Customer bb = qbdCustomers.FirstOrDefault();
bb.ShowAs = "TTTTT";
Intuit.Ipp.Data.Qbd.Customer bbUpdate = commonService.Update(bb) as Intuit.Ipp.Data.Qbd.Customer;
ログを有効にしました。これがリクエストとレスポンスです。
リクエスト
<?xml version="1.0" encoding="utf-8"?><Mod xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" RequestId="07e1d63eae654991aca3438ff787b6f4" FullResponse="true" xmlns="http://www.intuit.com/sb/cdm/v2"><ExternalRealmId>832118285</ExternalRealmId><Object xsi:type="Customer"><Id idDomain="QB">1</Id><SyncToken>3</SyncToken><MetaData><CreatedBy>app</CreatedBy><CreateTime>2013-11-05T19:03:18Z</CreateTime><LastModifiedBy>app</LastModifiedBy><LastUpdatedTime>2013-11-05T19:06:21Z</LastUpdatedTime></MetaData><ExternalKey>1001741590</ExternalKey><Synchronized>false</Synchronized><PartyReferenceId idDomain="QB">1</PartyReferenceId><TypeOf>Person</TypeOf><Name>Samurai</Name><Address><Id>2213595</Id><Line1>Samurai</Line1><Line2>Samu Rai</Line2><Default>true</Default><Tag>Billing</Tag></Address><Phone><Id>1317517</Id><DeviceType>LandLine</DeviceType><FreeFormNumber>111-111-1111</FreeFormNumber><Default>true</Default><Tag>Business</Tag></Phone><Email><Id>603369</Id><Address>samu@gmail.com</Address><Default>true</Default><Tag>Business</Tag></Email><Title>Mr.</Title><GivenName>Samu</GivenName><FamilyName>Rai</FamilyName><DBAName>Samurai</DBAName><Active>true</Active><ShowAs>TTTTT</ShowAs><OpenBalance><CurrencyCode>USD</CurrencyCode><Amount>0</Amount></OpenBalance><JobInfo><Status>None</Status></JobInfo></Object></Mod>
応答
<?xml version="1.0" ?><RestResponse xmlns="http://www.intuit.com/sb/cdm/v2"><Success RequestId="07e1d63eae654991aca3438ff787b6f4"><Customer><Id idDomain="QB">1</Id><SyncToken>4</SyncToken><MetaData><CreatedBy>app</CreatedBy><CreateTime>2013-11-05T19:03:18Z</CreateTime><LastModifiedBy>app</LastModifiedBy><LastUpdatedTime>2013-11-05T19:11:33Z</LastUpdatedTime></MetaData><ExternalKey idDomain="NG">1001741590</ExternalKey><Synchronized>false</Synchronized><PartyReferenceId idDomain="QB">1</PartyReferenceId><TypeOf>Person</TypeOf><Name>Samurai</Name><Address><Id idDomain="NG">2213620</Id><Line1>Samurai</Line1><Line2>Samu Rai</Line2><Default>true</Default><Tag>Billing</Tag></Address><Phone><Id idDomain="NG">1317538</Id><DeviceType>LandLine</DeviceType><FreeFormNumber>111-111-1111</FreeFormNumber><Default>true</Default><Tag>Business</Tag></Phone><Email><Id idDomain="NG">603372</Id><Address>samu@gmail.com</Address><Default>true</Default><Tag>Business</Tag></Email><Title>Mr.</Title><GivenName>Samu</GivenName><FamilyName>Rai</FamilyName><DBAName>Samurai</DBAName><Active>true</Active><ShowAs>Samurai</ShowAs><OpenBalance><CurrencyCode>USD</CurrencyCode><Amount>0</Amount></OpenBalance><JobInfo><Status>None</Status></JobInfo></Customer><RequestName>CustomerMod</RequestName><ProcessedTime>2013-11-05T19:11:33Z</ProcessedTime></Success></RestResponse>
リクエストから「Show As」フィールドに「TTTTT」を送信したことがわかりますが、レスポンスには古い値「Samurai」が表示されます
QBD の API Explorer にリクエストを貼り付けました。以下がレスポンスです。エラーの意味がわかりません。
<RestResponse xmlns="http://www.intuit.com/sb/cdm/v2"><Error RequestId="07e1d63eae654991aca3438ff787b6f4">
<RequestName>ErrorRequest</RequestName>
<ProcessedTime>2013-11-05T19:22:23.372Z</ProcessedTime>
<ErrorCode>-3002</ErrorCode>
<ErrorDesc>unique constraint (ESB.PTYAPI_IDX_RID) violated</ErrorDesc>
<DBErrorCode>00001</DBErrorCode>