2013-12-16 88 views
1

使用我嘗試使用client.create貨幣的ExchangeRateServiceClient每次貨幣代碼對我得到一個異常如何更新現有的匯率

無法建立匯率貨幣對(ExchangeRateCurrencyPair)的記錄。從貨幣:美元,歐元。記錄已經存在。
System.Exception的{} System.ServiceModel.FaultException

我全新的AX API ...我使用C#

AXDev09.ExchangeRateServiceCreateRequest request = 
new AXDev09.ExchangeRateServiceCreateRequest(); 
AXDev09.ExchangeRateServiceClient client = new AXDev09.ExchangeRateServiceClient(); 

request.CallContext = new AXDev09.CallContext(); 
request.CallContext.Language = "en-us"; 
request.CallContext.Company = "T51"; 
request.CallContext.MessageId = Guid.NewGuid().ToString(); 

AXDev09.AxdEntity_CurrencyPair[] myPair = new AXDev09.AxdEntity_CurrencyPair[1]; 
myPair[0] = new AXDev09.AxdEntity_CurrencyPair(); 
myPair[0].ToCurrencyCode = "EUR"; 
myPair[0].FromCurrencyCode = "USD"; 

AXDev09.AxdEntity_ExchangeRate[] myExchange = new AXDev09.AxdEntity_ExchangeRate[1]; 
myExchange[0] = new AXDev09.AxdEntity_ExchangeRate(); 
myExchange[0].ExchangeRate = Convert.ToDecimal("0.708"); 
myExchange[0].ExchangeRateSpecified = true; 

myPair[0].ExchangeRate = myExchange; 
myPair[0].ExchangeRateDisplayFactor = AXDev09.AxdEnum_ExchangeRateDisplayFactor.One; 
myPair[0].ExchangeRateType = "Average"; 

AxdType_DateTime myFromDate = new AxdType_DateTime(); 
myFromDate.localDateTime = DateTime.Now.ToUniversalTime(); 
myFromDate.timezone = AxdEnum_Timezone.GMTMINUS0600CENTRALTIME; 
myFromDate.Value = myFromDate.localDateTime; 

AxdType_DateTime myToDate = new AxdType_DateTime(); 
myToDate.localDateTime = DateTime.Now.ToUniversalTime(); 
myToDate.timezone = AxdEnum_Timezone.GMTMINUS0600CENTRALTIME; 
myToDate.Value = myToDate.localDateTime; 

request.LedgerExchangeRate = new AXDev09.AxdLedgerExchangeRate(); 
request.LedgerExchangeRate.CurrencyPair = myPair; 
request.LedgerExchangeRate.ValidFromDateTime = myFromDate; 
request.LedgerExchangeRate.ValidToDateTime = myToDate; 

client.Open(); 

client.create(request.CallContext, request.LedgerExchangeRate); 
client.Close(); 

回答

0

ExchangeRateServiceClient確實出現了一個標準的API。

標準Web服務稱爲LedgerExchangeRateService

如果您提供兩種貨幣,則嘗試反轉它們。

+0

謝謝你的回答...我想要做的是用新的匯率(0.708)更新現有的ExchangeRateCurrencyPair ... – user3109074

+0

顯示你的代碼。 –

+0

這是爲我們公司使用AX類庫的摘要而創建的類,所以我不認爲我們可以直接實例化它們......我在TechNet上查看AX庫,並且有Update方法。所以我需要那個?我認爲你可以創建一個新的交換對與一個不同的從到日期對,所以這就是爲什麼我想創建。 – user3109074

0

如果錯誤信息是可信的,好像問題是,當它試圖創建ExchangeRateCurrencyPair

有一個沒有重複指數:

  • fromCurrency
  • toCurrency
  • ExchangeRateType

「我想增加一個新的貨幣匯率。 ..從一個新的集合,但我不斷收到「記錄已經存在」錯誤,儘管我設置了新的FROM-TO日期。「

它似乎是反對ExchangeRateCurrencyPair(而不是日期有效位)也許嘗試選擇對,而不是試圖每次創建它 - 或者可能嘗試通過成功的新對調試,看看是否可以調整需要在標準服務