Private StockItemCtx As StockItemService.ctx
Private StockItemErrors As StockItemService.Errors = Nothing
Private PriceListCtx As PriceListService.ctx
Private PriceListErrors As PriceListService.Errors = Nothing
Private Sub InitServices(ByVal UpdateStockItem As Boolean, ByVal UpdatePriceList As Boolean)
If UpdateStockItem Then
StockItemCtx = New StockItemService.ctx
StockItemCtx.CompanyCode = "11"
StockItemCtx.FiscalYear = Today.Year
StockItemErrors = Nothing
End If
If UpdatePriceList Then
PriceListCtx = New PriceListService.ctx
PriceListCtx.CompanyCode = "11"
PriceListCtx.FiscalYear = Today.Year
PriceListErrors = Nothing
End If
End Sub
Private Sub ProcessStockItem(ByVal item As Dictionary(Of String, String), ByVal UpdatePriceList As Boolean)
Dim req = New StockItemService.Requests
Dim StockItem = New StockItemService.StockItem
StockItem.StockCode = item("STOCKCODE")
If fields.Contains("DISCOUNTCODE") Then
StockItem.DiscountCode = item("DISCOUNTCODE")
StockItem.DiscountCodeSpecified = True
End If
If fields.Contains("UNITNAMESTOCK") Then StockItem.UnitNameStock = item("UNITNAMESTOCK")
If fields.Contains("UNITNAMEPURCHASE") Then StockItem.UnitNamePurchase = item("UNITNAMEPURCHASE")
If fields.Contains("UNITNAMESALES") Then StockItem.UnitNameSales = item("UNITNAMESALES")
‘ цену обновляем, если только не будет обновления прейскурантов
If Not UpdatePriceList AndAlso fields.Contains("PRICE") Then
StockItem.Price = Val(item("PRICE"))
StockItem.PriceSpecified = True
End If
Dim StockItems(0) As StockItemService.StockItem
StockItems(0) = StockItem
req._requests = StockItems
Using svc As New StockItemService.StockItemUpdateSoapClient
svc.Execute(req, StockItemCtx, Nothing, StockItemErrors)
End Using
For Each ErrMsg In StockItemErrors._errors
If ErrMsg.type <> StockItemService.typeErrType.info Then
Log(MsgType.Error, String.Format("{0} — {1}", ErrMsg.description, ErrMsg.source))
End If
Next
End Sub
Private Sub ProcessPriceList(ByVal item As Dictionary(Of String, String), ByVal Levels As Integer)
Dim req = New PriceListService.Requests
Dim PriceList = New PriceListService.PriceList
PriceList.ID = "00"
PriceList.Currency = "RUB"
PriceList.Items = Array.CreateInstance(GetType(PriceListService.Item), 1)
PriceList.Items(0) = New PriceListService.Item
PriceList.Items(0).StockCode = item("STOCKCODE")
PriceList.Items(0).Prices = Array.CreateInstance(GetType(PriceListService.Price), 1)
PriceList.Items(0).Prices(0) = New PriceListService.Price
PriceList.Items(0).Prices(0).Value = Val(item("PRICE"))
If Levels > 0 Then
PriceList.Items(0).Prices(0).DiscLevels = Array.CreateInstance(GetType(PriceListService.typeDiscLevels), Levels)
Dim lev As Integer = 0
For Each qty As String In fields.Where(Function(key) key Like "QTY[1-8]")
PriceList.Items(0).Prices(0).DiscLevels(lev) = New PriceListService.typeDiscLevels
PriceList.Items(0).Prices(0).DiscLevels(lev).Qty = Val(item(qty))
PriceList.Items(0).Prices(0).DiscLevels(lev).Price = Val(item("PRICE" + qty.Last()))
PriceList.Items(0).Prices(0).DiscLevels(lev).PriceSpecified = True
lev += 1
Next
End If
Dim PriceLists(0) As PriceListService.PriceList
PriceLists(0) = PriceList
req._requests = PriceLists
Using svc As New PriceListService.PriceListUpdateSoapClient
svc.Execute(req, PriceListCtx, Nothing, PriceListErrors)
End Using
For Each ErrMsg In PriceListErrors._errors
If ErrMsg.type <> PriceListService.typeErrType.info Then
Log(MsgType.Error, ErrMsg.description)
End If
Next
End Sub |