Monday, 4 January 2010

Sage 200 Transfer Stock Between Locations Example


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