Public Function StockMovement(ByVal oSale As StockReplenishment) As Boolean
Using locationMovementTransfer As New Sage.Accounting.Stock.LocationMovementTransfer
Try
Dim oStockItem As Sage.Accounting.Stock.StockItem = Nothing
oStockItem = ImportCSVInfomationFromMSI.StockItemLookup(oSale.SKU)
If oStockItem Is Nothing Then
oStockItem = ImportCSVInfomationFromMSI.StockItemLookup(oSale.WinPafArticleID)
End If
If oStockItem IsNot Nothing Then
locationMovementTransfer.StockItem = oStockItem
locationMovementTransfer.TransferDate = oSale.DateOfInventory
locationMovementTransfer.TransferQuantity = Math.Abs(oSale.ReplenishmentQuantity)
Dim oNarrative As String
If _ReverseAllTransactions = False Then
locationMovementTransfer.LocationFrom = ImportCSVInfomationFromMSI.BinItemLookup(locationMovementTransfer.StockItem, Tsg.Penhaligons.DataAccess.Startup.IntegrationSettings.CRMWarehouseName, "")
locationMovementTransfer.LocationTo = ImportCSVInfomationFromMSI.BinItemLookup(locationMovementTransfer.StockItem, oSale.ToStoreNumber, "")
oNarrative = "Transfer from warehouse " & Tsg.Penhaligons.DataAccess.Startup.IntegrationSettings.CRMWarehouseName _
& " to warehouse " & oSale.ToStoreNumber & "Processed By " & oSale.SageOrderID & " Posted By " & Sage.Accounting.Application.ActiveUser.UserName
Else
locationMovementTransfer.LocationFrom = ImportCSVInfomationFromMSI.BinItemLookup(locationMovementTransfer.StockItem, oSale.ToStoreNumber, "")
locationMovementTransfer.LocationTo = ImportCSVInfomationFromMSI.BinItemLookup(locationMovementTransfer.StockItem, Tsg.Penhaligons.DataAccess.Startup.IntegrationSettings.CRMWarehouseName, "")
oNarrative = "Transfer from warehouse " & oSale.ToStoreNumber _
& " to warehouse " & Tsg.Penhaligons.DataAccess.Startup.IntegrationSettings.CRMWarehouseName _
& "Processed By " & oSale.SageOrderID & " Posted By " & Sage.Accounting.Application.ActiveUser.UserName
End If
locationMovementTransfer.Reference = oSale.SageOrderID
locationMovementTransfer.SecondReference = oSale.WinPafArticleID
locationMovementTransfer.Memo = oNarrative
Using oTransaction As New Sage.ObjectStore.PersistentObjectTransaction
Try
locationMovementTransfer.Validate()
locationMovementTransfer.Post()
If oNarrative.Length > 60 Then
oNarrative = oNarrative.Substring(0, 60)
End If
Dim Urn As Int64 = PostNominalJournal(oSale, oStockItem, oNarrative)
If Urn > 0 Then
oTransaction.Commit()
Return True
Else
Return False
End If
Catch ex As Exception
Throw ex
End Try
End Using
Else
LogFailedInformation(oSale.RawLine)
Throw New Exception("Invalid Stock Code or SKU for stock exchange/transfer.")
End If
Catch ex As Exception
LogException(New ImportExecption(ex))
End Try
End Using
End Function