2013-08-02 163 views
1

如何才能打電話到Magento SOAP API v2獲取vb.net中一組日期之間的所有銷售訂單?獲取銷售訂單日期

這是我到目前爲止所嘗試的,但是它仍然會返回0銷售訂單,儘管它們存在。

Dim ae As associativeEntity = New associativeEntity() 
ae.key = "status" 
ae.value = "processing" 
Dim params As filters = New filters 

Dim dateFilter As complexFilter 
dateFilter = New complexFilter() 
dateFilter.key = "created_at" 
Dim nestedFilterFrom As associativeMultiEntity = New associativeMultiEntity() 
nestedFilterFrom.key = "gteq" 
nestedFilterFrom.value = New String() {DateTime.Parse(fromDate).ToUniversalTime.ToString()} 
dateFilter.value = nestedFilterFrom 
Dim dateToFilter As complexFilter = New complexFilter() 
Dim nestedFilterTo As associativeMultiEntity = New associativeMultiEntity() 
nestedFilterTo.key = "lteq" 
nestedFilterTo.value = New String() {DateTime.Parse(toDate).ToUniversalTime.ToString()} 
dateToFilter.key = "created_at" 
dateToFilter.value = nestedFilterTo 

params.complex_filter = New complexFilter() {dateFilter, dateToFilter}  
magentoWS.salesOrderList(sessionID, params) 

我已經能夠獲得相同的代碼工作匹配狀態,如下所示。

Dim ae As associativeEntity = New associativeEntity 
Dim params As filters = New filters() 
ae.key = "status" 
ae.value = "processing" 
params.filter = New associativeEntity() {ae} 
magentoWS.salesOrderList(sessionID, params) 

回答

1

過濾器工作的日期格式必須如下。

YYYY-MM-DD 

我才發現這一點,因爲這是它是如何在Magento的SOAP "v2" XML Request example。在文檔或響應中指定它會很好,但是已選擇。如果有人感興趣,這裏是代碼。

Dim ae As associativeEntity = New associativeEntity With { .key = "status", .value = "processing" } 
Dim params As filters = New filters 

Const createdAt As String = "created_at" 
Const magentoDateTimeFormat As String = "yyyy-MM-dd" 

Dim nestedFilterFrom As associativeMultiEntity = 
    New associativeMultiEntity With {.key = "from", .value = New String() {fromDate.ToString(magentoDateTimeFormat)}} 
Dim dateFromFilter As complexFilter = New complexFilter With {.key = createdAt, .value = nestedFilterFrom} 

Dim nestedFilterTo As associativeMultiEntity = 
    New associativeMultiEntity With {.key = "to", .value = New String() {toDate.ToString(magentoDateTimeFormat)}} 
Dim dateToFilter As complexFilter = New complexFilter With {.key = createdAt, .value = nestedFilterFrom} 

params.complex_filter = New complexFilter() {dateFromFilter, dateToFilter}  
magentoWS.salesOrderList(sessionID, params) 

應當指出的是,在這種情況下,fromto過濾器等同於lteqgteq。我發現fromto在這方面更有意義,但結果相同。

+0

'昏暗dateFromFilter作爲complexFilter =新complexFilter隨着{.KEY = createdAt,.value的= nestedFilterFrom}'你不能做到這一點:nestedFilterFrom是associativeMultiEntity,不能轉換爲associativeEntity –

0
Public Function getMageOrdersListByFilter(ByVal fromDate As DateTime, ByVal toDate As DateTime) As MagentoService.salesOrderListEntity() 
    GetMageSessionId() 

    Dim f As MagentoService.filters = New MagentoService.filters 

    Const createdAt As String = "created_at" 
    Dim magentoDateTimeFormat As String = "yyyy-MM-dd" 
    magentoDateTimeFormat = "yyyy-MM-dd HH:mm:ss" 

    Dim cpf(2) As MagentoService.complexFilter 
    cpf(0) = New MagentoService.complexFilter With {.key = createdAt, .value = New MagentoService.associativeEntity With {.key = "from", .value = New String(fromDate.ToString(magentoDateTimeFormat))}} 
    'HACK FIX: http://www.magentocommerce.com/bug-tracking/issue?issue=8073 
    cpf(1) = New MagentoService.complexFilter With {.key = "/*fake*/created_at", .value = New MagentoService.associativeEntity With {.key = "to", .value = New String(toDate.ToString(magentoDateTimeFormat))}} 

    f.complex_filter = cpf 

    Dim oList() As MagentoService.salesOrderListEntity = Nothing 

    Try 
     oList = mage.salesOrderList(sessionId, f) 
    Catch ex As Exception 

    End Try 

    Return oList 

End Function 
+0

你爲什麼要吞當您調用'mage.salesOrderList(sessionId,f)'時出現異常? –

+0

測試目的,以防萬一我的連接斷開。 – Ricky

相關問題