Imports System
Imports System.ComponentModel
Imports System.Collections.Generic
Imports System.Diagnostics
Imports System.Text
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Actions
Imports DevExpress.Persistent.Base
Imports DevExpress.Xpo.Session
Imports DevExpress.Data.Filtering
Imports DevExpress.Xpo
Imports DevExpress.ExpressApp.Editors
Imports DevExpress.ExpressApp.SystemModule
Imports DevExpress.Persistent.Validation
Imports DevExpress.Persistent.BaseImpl
Imports DevExpress.ExpressApp.Utils
Imports System.Linq
Imports System.Linq.Expressions


Public Class StorageTransactionsInVC
    Inherits DevExpress.ExpressApp.ViewController
    Public Event InitWork(ByVal _Minimum As Long, ByVal _Step As Long, ByVal _Maximum As Long)
    Public Event DoWork()
    Public Event FinalWork

    Public Sub New()
        MyBase.New()
        InitializeComponent()
        RegisterActions(components)
    End Sub
    Protected Overrides Sub OnActivated()
        MyBase.OnActivated()

        Frame.GetController(Of StorageTransactionsInVC)().aToTable_StorageIn.Active.SetItemValue("", False) ' -- Betárolási biz. sor hozzáadása
        Frame.GetController(Of StorageTransactionsInVC)().aFinalizeAndNew_StorageIn.Active.SetItemValue("", False) ' -- Betárolási biz. véglegesítése és új nyitása
        Frame.GetController(Of StorageTransactionsInVC)().aToTableD_SIH.Active.SetItemValue("", False) ' -- Sor törlése Betárolási biz ról
        Frame.GetController(Of StorageTransactionsInVC)().aDown_StorageIn.Active.SetItemValue("", False) ' -- Betárolási sor lejebb
        Frame.GetController(Of StorageTransactionsInVC)().aUp_StorageIn.Active.SetItemValue("", False) ' -- Betárolási sor feljebb
        Frame.GetController(Of StorageTransactionsInVC)().aBackToEdit_StorageInHeader.Active.SetItemValue("", False)
        Frame.GetController(Of StorageTransactionsInVC)().aStorageInStorno.Active.SetItemValue("", False)
        Frame.GetController(Of StorageTransactionsInVC)().aStorageInFromPdaCollection.Active.SetItemValue("", False)
        'Frame.GetController(Of StorageTransactionsInVC)().aStorageInHeader_InsertInventoryTransfer.Active.SetItemValue("", False)

        If View.Id = "StorageOutRows_ListView_Overstored" Then
            Frame.GetController(Of NewObjectViewController).Active.SetItemValue("", False)
            Frame.GetController(Of CloneObject.CloneObjectViewController).Active.SetItemValue("", False)
        End If

        If View.Id Like "Storage*Header_*View" Then '--Anyagmozgást ne lehessen törölni---
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.DeleteObjectsViewController)().Active.SetItemValue("", False)
        End If
        If View.Id Like "Products*" Then
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.DeleteObjectsViewController)().Active.SetItemValue("", False)
        End If

        '------------------------------------------ LISTVIEWS --------------------------------------------------------------------------------------------------------
        If View.Id = "StorageInHeader_ListView" Then
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.DeleteObjectsViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of StorageTransactionsInVC)().aBackToEdit_StorageInHeader.Active.SetItemValue("", True)
            Frame.GetController(Of StorageTransactionsInPrint)().aStorageTransactionsInPrint.Active.SetItemValue("", False)
            Frame.GetController(Of StorageTransactionsInVC)().aStorageInStorno.Active.SetItemValue("", True)



            AddHandler View.SelectionChanged, AddressOf StorageInHeader_ListView_View_SelectionChanged
        End If
        If View.Id = "StorageInHeader_ListView_Editable" Then
            Frame.GetController(Of StorageTransactionsInPrint)().aStorageTransactionsInPrint.Active.SetItemValue("", False)
            Frame.GetController(Of StorageTransactionsInVC)().aStorageInStorno.Active.SetItemValue("", False)
            Frame.GetController(Of DeleteObjectsViewController).Active.SetItemValue("", False)
            Frame.GetController(Of CloneObject.CloneObjectViewController).Active.SetItemValue("", False)
        End If
        If View.Id = "StorageInHeader_StorageInRows_ListView" Then
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.LinkUnlinkController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.DeleteObjectsViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.ListViewProcessCurrentObjectController)().Active.SetItemValue("", False)
            Frame.GetController(Of StorageTransactionsInVC)().aUp_StorageIn.Active.SetItemValue("", True)
            Frame.GetController(Of StorageTransactionsInVC)().aDown_StorageIn.Active.SetItemValue("", True)
        End If
        If View.Id = "StorageInRows_ListView_Order" Then
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.DeleteObjectsViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.ListViewProcessCurrentObjectController)().Active.SetItemValue("", False)
        End If
        If View.Id = "StorageInRows_ListView" Then
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", False)
        End If
        If View.Id = "StorageInRowsFromPDACollectionPopup_ListView" Then
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.DeleteObjectsViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.ListViewProcessCurrentObjectController)().Active.SetItemValue("", False)
        End If
        If View.Id = "StorageInRowsFromPDACollectionPopup_StoragePDACollectionRows_ListView" Then
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.LinkUnlinkController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.DeleteObjectsViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.ListViewProcessCurrentObjectController)().Active.SetItemValue("", False)
        End If
        '------------------------------------------ DETAILVIEWS ------------------------------------------------------------------------------------------------------
        '-- Ne lehessen stornózni, ha stornózott ---------
        If View.Id = "StorageInHeader_DetailView" Then

            Dim _StorageInHeader As StorageInHeader
            _StorageInHeader = View.SelectedObjects(0)
            If _StorageInHeader Is Nothing Then
            Else
                If _StorageInHeader.IsStorno = True Or _StorageInHeader.IsEditable = True Then
                    Frame.GetController(Of StorageTransactionsInVC)().aStorageInStorno.Active.SetItemValue("", False)
                End If
                If _StorageInHeader.IsStorno = False And _StorageInHeader.IsEditable = False Then
                    Frame.GetController(Of StorageTransactionsInVC)().aStorageInStorno.Active.SetItemValue("", True)
                End If
                If _StorageInHeader.IsEditable = False Then
                    Frame.GetController(Of StorageTransactionsInVC)().aFinalize_StorageIn.Active.SetItemValue("", False)
                    Frame.GetController(Of StorageTransactionsInVC)().aFinalizeAndNew_StorageIn.Active.SetItemValue("", False)
                    Frame.GetController(Of DevExpress.ExpressApp.SystemModule.ModificationsController)().Active.SetItemValue("", False)
                    Frame.GetController(Of StorageTransactionsInVC)().aStorageInStorno.Active.SetItemValue("", False)
                    Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)().Active.SetItemValue("", False)
                    Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", False)
                    Frame.GetController(Of StorageTransactionsInPrint)().aStorageTransactionsInPrint.Active.SetItemValue("", False)
                Else
                    Frame.GetController(Of StorageTransactionsInVC)().aFinalizeAndNew_StorageIn.Active.SetItemValue("", True)
                    Frame.GetController(Of StorageTransactionsInVC)().aFinalize_StorageIn.Active.SetItemValue("", True)
                    Frame.GetController(Of StorageTransactionsInVC)().aToTable_StorageIn.Active.SetItemValue("", True)
                    Frame.GetController(Of StorageTransactionsInVC)().aToTableD_SIH.Active.SetItemValue("", True)
                    Frame.GetController(Of StorageTransactionsInVC)().aStorageInFromPdaCollection.Active.SetItemValue("", True)
                    Frame.GetController(Of StorageTransactionsInPrint)().aStorageTransactionsInPrint.Active.SetItemValue("", False)
                    Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)().Active.SetItemValue("", False)
                    Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", False)
                End If
            End If
        End If
        If View.Id = "StorageInRows_Split_PopUp_DetailView" Then
            AddHandler Frame.GetController(Of DialogController)().AcceptAction.Executing, AddressOf StorageInRows_Split_PopUp_DetailView_AcceptAction_Executing
        End If
        If View.Id = "StorageOutRowsInRows_ListView_Overstored" Then
            AddHandler Frame.GetController(Of DialogController)().AcceptAction.Executing, AddressOf StorageOutRowsInRows_ListView_Overstored_AcceptAction_Executing
        End If
    End Sub
    Protected Overrides Sub OnDeactivated()
        MyBase.OnDeactivated()
        Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", True)
        '------------------------------------------ LISTVIEWS --------------------------------------------------------------------------------------------------------
        If View.Id = "StorageInHeader_ListView" Then
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.DeleteObjectsViewController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", True)

            RemoveHandler View.SelectionChanged, AddressOf StorageInHeader_ListView_View_SelectionChanged
        End If
        If View.Id = "StorageInHeader_StorageInRows_ListView" Then
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.LinkUnlinkController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.DeleteObjectsViewController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.ListViewProcessCurrentObjectController)().Active.SetItemValue("", True)
        End If
        If View.Id = "StorageInHeader_ListView_Editable" Then
            Frame.GetController(Of DeleteObjectsViewController).Active.SetItemValue("", True)
            Frame.GetController(Of CloneObject.CloneObjectViewController).Active.SetItemValue("", True)
        End If

        If View.Id = "StorageInRows_ListView" Then
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", True)
        End If
        If View.Id = "StorageInRowsFromPDACollectionPopup_ListView" Then
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.DeleteObjectsViewController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.ListViewProcessCurrentObjectController)().Active.SetItemValue("", True)
        End If
        If View.Id = "StorageInRowsFromPDACollectionPopup_StoragePDACollectionRows_ListView" Then
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.NewObjectViewController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.LinkUnlinkController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.DeleteObjectsViewController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.ListViewProcessCurrentObjectController)().Active.SetItemValue("", True)
        End If
        '------------------------------------------ DETAILVIEWS ------------------------------------------------------------------------------------------------------
        If View.Id = "StorageInRows_Split_PopUp_DetailView" Then
            RemoveHandler Frame.GetController(Of DialogController)().AcceptAction.Executing, AddressOf StorageInRows_Split_PopUp_DetailView_AcceptAction_Executing
        End If
    End Sub
    Private Sub aFinalize_StorageIn_Execute(ByVal sender As System.Object, ByVal e As DevExpress.ExpressApp.Actions.SimpleActionExecuteEventArgs) Handles aFinalize_StorageIn.Execute
        '-- Betárolás véglegesítése

        Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
        Dim _uow As New UnitOfWork(_onew.Session.DataLayer)
        Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
        Dim _uow_lock As New UnitOfWork(_onew.Session.DataLayer)
        Dim _User As User = _onew.GetObject(TryCast(SecuritySystem.CurrentUser, User))
        Dim _StorageInHeader As StorageInHeader = _onew.GetObjectByKey(Of StorageInHeader)(TryCast(e.SelectedObjects(0), StorageInHeader).Oid)
        Try
            If _StorageInHeader.Storage IsNot Nothing And _StorageInHeader.StorageInRows.Count = 0 Then _
                  Throw New Exception("*Nem lehet véglegesíteni a betárolási bizonylatot!" & vbNewLine & vbNewLine & _
                                     "Kérem ellenőrizze, hogy be lett-e állítva raktár, illetve" & vbNewLine & _
                                     "definiált-e betárolási sorokat!")

            If Not LockingModule.LockObject(_uow_lock, GetType(StorageComputed), "-", _User) Then
                Dim _LockingObject As LockingObject = _onew.FindObject(Of LockingObject)(CriteriaOperator.Parse("TableName=?", GetType(StorageComputed).Name + "-" + "-"))

                Dim _Prompt As String = DevExpress.ExpressApp.Utils.CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions\StorageComputed", "CanNotStorageInByLocking")
                Dim _Title As String = DevExpress.ExpressApp.Utils.CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxError")
                MsgBox(String.Format(_Prompt, _LockingObject.User.FullName, _LockingObject.ObjectCreated), MsgBoxStyle.Information + MsgBoxStyle.OkOnly, _Title)

                Exit Sub
            Else
                If _StorageInHeader.IsFinalized Then
                    For Each _StorageInRows As StorageInRows In _StorageInHeader.StorageInRows


                        Dim _StorageComputed As StorageComputed = _onew.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Products=? and Storage=?", _
                                                                                                _onew.GetObject(_StorageInRows.Products), _onew.GetObject(_StorageInHeader.Storage)))
                        Dim _StorageMoveEvents_Collection As New XPCollection(Of StorageMoveEvents)(_onew.Session, CriteriaOperator.Parse("StorageInRows=?", _onew.GetObject(_StorageInRows)))
                        _StorageMoveEvents_Collection.Sorting.Add(New SortProperty("ObjectCreated", DB.SortingDirection.Descending))

                        Dim _StorageMoveEvents As New StorageMoveEvents(_onew.Session)
                        If _StorageInRows.QTT_Will > 0 Then
                            _StorageInRows.QTT = _StorageInRows.QTT_Will
                            _StorageComputed.QTTFree += _StorageInRows.QTT_Will
                            _StorageComputed.QTTReservedIn -= _StorageInRows.QTT_Will

                            If _StorageMoveEvents_Collection.Count < 0 Then
                                _StorageMoveEvents.StorageInRows = _onew.GetObject(_StorageMoveEvents_Collection(0).StorageInRows)
                                _StorageMoveEvents.QTT_Free_Before = _StorageMoveEvents_Collection(0).QTT_Free_After
                            Else
                                _StorageMoveEvents.StorageInRows = _onew.GetObject(_StorageInRows)
                                _StorageMoveEvents.QTT_Free_Before = 0
                            End If

                            _StorageMoveEvents.QTT = _StorageInRows.QTT_Will
                            _StorageMoveEvents.QTT_Free_After = _StorageMoveEvents.QTT_Free_Before + _StorageMoveEvents.QTT
                            _StorageMoveEvents.MoveEventsType = eMoveEventsType.StorageInFinal
                            _StorageMoveEvents.ExecutionDate = GetSQLTime(_ocur.Session)

                            _StorageInRows.QTT_Will = 0
                        End If


                    Next
                    _StorageInHeader.IsEditable = False

                    _onew.CommitChanges()

                    Dim _ReportData As ReportData = _onew.FindObject(Of ReportData)(CriteriaOperator.Parse("Oid=?", _StorageInHeader.Storage.ReportIn.Oid), True)
                    If _ReportData Is Nothing Or _StorageInHeader Is Nothing Then
                    Else
                        Frame.GetController(Of Reports.ReportServiceController).ShowPreview(_ReportData, CriteriaOperator.Parse("StorageInHeader.DocumentNumber =?", _StorageInHeader.DocumentNumber), True)
                    End If
                    If Frame.GetController(Of RefreshController).RefreshAction.Enabled Then
                        Frame.GetController(Of RefreshController).RefreshAction.DoExecute()
                    End If
                    View.Close()
                Else
                    For Each _StorageInRows As StorageInRows In _StorageInHeader.StorageInRows

                        Dim _StorageComputed As StorageComputed = _onew.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Products=? and Storage=?", _
                                                                                _onew.GetObject(_StorageInRows.Products), _onew.GetObject(_StorageInHeader.Storage)))
                        Dim _StorageMoveEvents As New StorageMoveEvents(_onew.Session)
                        If _StorageInRows.QTT_Will > 0 Then
                            _StorageInRows.QTT = _StorageInRows.QTT_Will
                            _StorageComputed.QTTFree += _StorageInRows.QTT_Will
                            _StorageComputed.QTTReservedIn -= _StorageInRows.QTT_Will

                            _StorageMoveEvents.StorageInRows = _onew.GetObject(_StorageInRows)
                            _StorageMoveEvents.QTT = _StorageInRows.QTT_Will
                            _StorageMoveEvents.QTT_Free_After = _StorageComputed.QTTFree
                            _StorageMoveEvents.QTT_Free_Before = _StorageMoveEvents.QTT_Free_After - _StorageMoveEvents.QTT
                            _StorageMoveEvents.MoveEventsType = eMoveEventsType.StorageInFinal
                            _StorageMoveEvents.ExecutionDate = _StorageInRows.StorageInHeader.CreateDate

                            _StorageInRows.QTT_Will = 0
                        End If

                        '_StorageInRows.StorageInRowsFrom.QTT_Overstored_Will -= _StorageInRows.QTT
                        '_StorageInRows.StorageInRowsFrom.QTT_Overstored += _StorageInRows.QTT_Overstored
                        '_StorageInRows.StorageInRowsFrom.QTT_Overstor_Will = _StorageInRows.QTT

                    Next

                    _StorageInHeader.IsEditable = False
                    _StorageInHeader.IsFinalized = True
                    _onew.CommitChanges()

                    If _StorageInHeader.StorageMoveType.MoveType = eMoveType.InventoryTransfer Then
                        CheckInventoryTransferStorageInRows(_uow, _StorageInHeader.StorageInRows)
                    End If

                    Dim _ReportData As ReportData = _onew.FindObject(Of ReportData)(CriteriaOperator.Parse("Oid=?", _StorageInHeader.Storage.ReportIn.Oid), True)
                    If _ReportData Is Nothing Or _StorageInHeader Is Nothing Then
                    Else
                        Frame.GetController(Of Reports.ReportServiceController).ShowPreview(_ReportData, CriteriaOperator.Parse("StorageInHeader.DocumentNumber =?", _StorageInHeader.DocumentNumber), True)
                    End If
                    If Frame.GetController(Of RefreshController).RefreshAction.Enabled Then
                        Frame.GetController(Of RefreshController).RefreshAction.DoExecute()
                    End If
                    View.Close()
                End If

            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, "Hiba")
        Finally
            LockingModule.UnLockObject(_uow_lock, GetType(StorageComputed), "-", _User)
        End Try
    End Sub
    Private Sub aToTable_StorageIn_Execute(ByVal sender As System.Object, ByVal e As DevExpress.ExpressApp.Actions.SimpleActionExecuteEventArgs) Handles aToTable_StorageIn.Execute
        Dim _ocur As Xpo.XPObjectSpace = View.ObjectSpace
        Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
        Dim _uow As New UnitOfWork(_onew.Session.DataLayer)
        Dim _uow_lock As New UnitOfWork(_ocur.Session.DataLayer)
        Dim _user_lock As User = _uow_lock.GetObjectByKey(Of User)(SecuritySystem.CurrentUserId)
        Dim _StorageInHeader As StorageInHeader = TryCast(e.SelectedObjects(0), StorageInHeader)
        Try

            '// Objektum zárolása adott oid-re !
            If Not LockObject(_uow_lock, GetType(StorageComputed), _StorageInHeader.row_Products.Oid.ToString, _user_lock) Then
                Dim _LockingObject As LockingObject = _onew.FindObject(Of LockingObject)(CriteriaOperator.Parse("TableName=?", GetType(StorageComputed).Name + "-" + "-"))

                Dim _Prompt As String = DevExpress.ExpressApp.Utils.CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions\StorageComputed", "CanNotStorageInByLocking")
                Dim _Title As String = DevExpress.ExpressApp.Utils.CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxError")
                MsgBox(String.Format(_Prompt, _LockingObject.User.FullName, _LockingObject.ObjectCreated, MsgBoxStyle.Information + MsgBoxStyle.OkOnly, _Title))

                Exit Sub
            Else
                Dim _StorageInRows As StorageInRows = _ocur.CreateObject(Of StorageInRows)()
                Dim _StorageComputed As StorageComputed = _ocur.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Products=? and Storage=?", _
                                                                                                        _StorageInHeader.row_Products, _StorageInHeader.Storage))

                If _StorageComputed Is Nothing Then
                    _StorageComputed = _ocur.CreateObject(Of StorageComputed)()
                    _StorageComputed.Storage = _StorageInHeader.Storage
                    _StorageComputed.Products = _StorageInHeader.row_Products
                    _StorageComputed.QTTReservedIn = _StorageInHeader.row_QTT_WILL
                Else
                    _StorageComputed.QTTReservedIn += _StorageInHeader.row_QTT_WILL
                End If

                _StorageInRows.AddRows(_StorageInHeader)

                _ocur.CommitChanges()
                If _StorageInHeader.StorageMoveType.MoveType = eMoveType.InventoryTransfer Then
                    CheckInventoryTransferStorageInRows(_uow, _StorageInHeader.StorageInRows)
                End If

                _StorageInHeader.row_Products = Nothing
                _StorageInHeader.row_QTT_WILL = 0
                _StorageInHeader.row_Weight = 0
                _StorageInHeader.row_PacketNumber = ""
                _StorageInHeader.row_SerialNumber = ""

                View.Refresh()
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
        Finally
            If Not ReleaseAllLocking(_uow_lock, _user_lock) Then _
                Throw New Exception("*Váratlan hiba történt a(z) " + _StorageInHeader.row_Products.ShortName + " termék zárolását nem lehet feoldani! Kérem, forduljon a rendszergazdához!")
        End Try
    End Sub
    Private Sub aFinalizeAndNew_StorageIn_Execute(ByVal sender As System.Object, ByVal e As DevExpress.ExpressApp.Actions.SimpleActionExecuteEventArgs) Handles aFinalizeAndNew_StorageIn.Execute
        Try
            Dim _ocur As Xpo.XPObjectSpace = View.ObjectSpace
            Dim _StorageInHeader As StorageInHeader = TryCast(e.SelectedObjects(0), StorageInHeader)

            If _StorageInHeader.Storage IsNot Nothing And _StorageInHeader.StorageInRows.Count > 0 Then Throw New Exception("*Nem lehet véglegesíteni a betárolási bizonylatot!" & vbNewLine & vbNewLine & _
                                "Kérem ellenőrizze, hogy be lett-e állítva raktár, illetve" & vbNewLine & _
                                "definiált-e betárolási sorokat!")

            Frame.GetController(Of StorageTransactionsInVC).aFinalize_StorageIn.DoExecute()

            Frame.GetController(Of NewObjectViewController)().NewObjectAction.DoExecute(Frame.GetController(Of NewObjectViewController)().NewObjectAction.Items(0))
            View.Close(False)

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
        End Try
    End Sub
    Private Sub aStorageInStorno_Execute(ByVal sender As System.Object, ByVal e As DevExpress.ExpressApp.Actions.SimpleActionExecuteEventArgs) Handles aStorageInStorno.Execute
        Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
        Dim _uow_lock As New UnitOfWork(_onew.Session.DataLayer)
        Dim _User As User = _onew.GetObject(TryCast(SecuritySystem.CurrentUser, User))

        Try
            '   Ellenőrzések
            '__________________________________________________________________________
            Dim _StorageInHeader As StorageInHeader = _onew.GetObject(TryCast(View.SelectedObjects(0), StorageInHeader))
            If _StorageInHeader Is Nothing Then Throw New Exception("*Váratlan hiba történt a folyamat megszakadt!")
            If _StorageInHeader.IsEditable = True Or
                _StorageInHeader.IsStorno = True Then Throw New Exception(String.Format("A {0} számú betárolási bizonylatot nem lehet stornírozni, mert", _StorageInHeader.DocumentNumber) + _
                    vbNewLine + "még nem lett véglegesítve, vagy már stornózásra kerűlt!" + vbNewLine + "Kérem, ellenőrizze!")

            Dim _StorageInRowsError_Collection As New ArrayList
            For Each _StorageInRows As StorageInRows In _StorageInHeader.StorageInRows
                If _StorageInRows.QTT_Out > 0 Then _
                    _StorageInRowsError_Collection.Add(_StorageInRows)
            Next

            If _StorageInRowsError_Collection.Count > 0 Then
                Dim _ErrorMessage As String = "Probléma merült fel a következő betárolási sorokkal:" + vbNewLine
                For Each _StorageInRows As StorageInRows In _StorageInRowsError_Collection
                    _ErrorMessage += _StorageInRows.RowIndex + " " + _StorageInRows.Products.ShortName _
                        + " " + _StorageInRows.QTT + vbNewLine
                Next
                _ErrorMessage += "Valószínűleg történt már kitárolás a betárolási sorról."
                _ErrorMessage += "Kérem, ellenőrizze!"

                Throw New Exception(_ErrorMessage)
            End If
            '   StorageComputed zárolás
            '__________________________________________________________________________
            If Not LockingModule.LockObject(_uow_lock, GetType(StorageComputed), "-", _User) Then
                Dim _LockingObject As LockingObject = _onew.FindObject(Of LockingObject)(CriteriaOperator.Parse("TableName=?", GetType(StorageComputed).Name + "-" + "-"))

                Dim _Prompt As String = DevExpress.ExpressApp.Utils.CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions\StorageComputed", "CanNotStorageInByLocking")
                Dim _Title As String = DevExpress.ExpressApp.Utils.CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxError")
                MsgBox(String.Format(_Prompt, _LockingObject.User.FullName, _LockingObject.ObjectCreated), MsgBoxStyle.Information + MsgBoxStyle.OkOnly, _Title)

                Exit Sub
            Else
                '   Betárolás stornózás
                '__________________________________________________________________________
                Dim _StorageInHeaderNew As New StorageInHeader(_onew.Session)
                With _StorageInHeaderNew
                    .Storage = _StorageInHeader.Storage
                    .StorageMoveType = _StorageInHeader.StorageMoveType
                    .Active = False
                    .IsStorno = True
                    .IsEditable = False
                    .IsFinalized = False
                    .CreateDate = GetSQLTime(_onew.Session)
                End With

                _StorageInHeader.IsStorno = True
                _StorageInHeader.Active = False
                _StorageInHeader.IsEditable = False

                For Each _StorageInRows As StorageInRows In _StorageInHeader.StorageInRows
                    Dim _StorageInRowsNew As New StorageInRows(_onew.Session)
                    With _StorageInRowsNew
                        .StorageInHeader = _StorageInHeaderNew
                        .RowIndex = _StorageInHeaderNew.StorageInRows.Count
                        .Products = _StorageInRows.Products
                        .QTT = _StorageInRows.QTT * (-1)
                        .QTT_Will = 0
                        .QTT_Out = 0
                        .QTT_Out_Will = 0
                        .Active = False
                        .OnStorno = True
                        .PacketNumber = _StorageInRows.PacketNumber
                        .SerialNumber = _StorageInRows.SerialNumber
                        .Storage = _StorageInHeaderNew.Storage
                        .Weight = _StorageInRows.Weight
                        If _StorageInRows.DeliveryNoteInRows IsNot Nothing Then
                            .DeliveryNoteInRows = _StorageInRows.DeliveryNoteInRows
                        End If
                    End With
                    Dim _StorageComputed As StorageComputed = _onew.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Storage=? AND Products=?", _StorageInHeader.Storage, _StorageInRows.Products))

                    _StorageComputed.QTTFree -= _StorageInRows.QTT

                    Dim _StorageMoveEvents_Collection As New XPCollection(Of StorageMoveEvents)(_onew.Session, CriteriaOperator.Parse("StorageInRows=?", _StorageInRows), _
                                                                                                New SortProperty("ObjectCreated", DB.SortingDirection.Descending))

                    Dim _StorageMoveEvents As New StorageMoveEvents(_onew.Session)
                    With _StorageMoveEvents
                        .StorageInRows = _StorageInRows
                        .QTT = (-1) * _StorageInRows.QTT
                        .QTT_Free_Before = _StorageMoveEvents_Collection(0).QTT_Free_After
                        .QTT_Free_After = _StorageMoveEvents.QTT_Free_Before + _StorageMoveEvents.QTT
                        .MoveEventsType = eMoveEventsType.StorageInStorno
                        .ObjectCreated = GetSQLTime(_onew.Session)
                    End With
                Next
            End If

            _onew.CommitChanges()
            Frame.GetController(Of RefreshController).RefreshAction.DoExecute()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
        Finally
            LockingModule.UnLockObject(_uow_lock, GetType(StorageComputed), "-", _User)
        End Try
    End Sub
    Private Sub aToTableD_SIH_Execute(ByVal sender As System.Object, ByVal e As DevExpress.ExpressApp.Actions.SimpleActionExecuteEventArgs) Handles aToTableD_SIH.Execute
        Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
        Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
        Dim _uow As New UnitOfWork(_onew.Session.DataLayer)
        Dim _StorageInHeader As StorageInHeader = TryCast(View.SelectedObjects(0), StorageInHeader)
        Dim _uow_lock As New UnitOfWork(_ocur.Session.DataLayer)
        Dim _User As User = _uow_lock.GetObjectByKey(Of User)(SecuritySystem.CurrentUserId)
        Dim _StorageInHeader_ListEditor As ListPropertyEditor = TryCast(View, DetailView).FindItem("StorageInRows")
        Try

            Dim _StorageInRows As StorageInRows
            Dim _StorageInRows_Collection As New ArrayList

            If Not LockingModule.LockObject(_uow_lock, GetType(StorageComputed), "-", _User) Then
                Dim _LockingObject As LockingObject = _onew.FindObject(Of LockingObject)(CriteriaOperator.Parse("TableName=?", GetType(StorageComputed).Name + "-" + "-"))

                Dim _Prompt As String = DevExpress.ExpressApp.Utils.CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions\StorageComputed", "CanNotStorageInByLocking")
                Dim _Title As String = DevExpress.ExpressApp.Utils.CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxError")
                MsgBox(String.Format(_Prompt, _LockingObject.User.FullName, _LockingObject.ObjectCreated), MsgBoxStyle.Information + MsgBoxStyle.OkOnly, _Title)

                Exit Sub
            Else
                For Each _StorageInRows In _StorageInHeader_ListEditor.ListView.SelectedObjects
                    _StorageInRows.RemoveRows()
                    Dim _StorageComputed As StorageComputed = _ocur.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Storage=? AND Products=?", _
                                                                                                    _StorageInHeader.Storage, _StorageInRows.Products))

                    If _StorageComputed Is Nothing Then Throw New Exception("*Váratlan hiba történt, a folyamat megszakadt!")
                    _StorageComputed.QTTReservedIn -= _StorageInRows.QTT_Will

                    'If _StorageComputed.QTTFree = 0 And _
                    '    _StorageComputed.QTTReserved = 0 And _
                    '    _StorageComputed.QTTReservedIn = 0 And _
                    '    _StorageComputed.QTTReservedOut = 0 Then
                    '    _StorageComputed.Delete()
                    'End If
                    If _StorageInHeader.StorageMoveType.MoveType = eMoveType.InventoryTransfer Then
                        _StorageInRows.StorageInRowsFrom.QTT_Overstored -= _StorageInRows.QTT_Will
                        _StorageInRows.StorageInRowsFrom = Nothing
                    End If
                    _StorageInRows_Collection.Add(_StorageInRows)
                Next

                _ocur.Delete(_StorageInRows_Collection)
                _ocur.CommitChanges()
                If _StorageInHeader.StorageMoveType.MoveType = eMoveType.InventoryTransfer Then
                    CheckInventoryTransferStorageInRows(_uow, _StorageInHeader.StorageInRows)
                End If
                View.Refresh()
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
        Finally
            LockingModule.UnLockObject(_uow_lock, GetType(StorageComputed), "-", _User)
        End Try
    End Sub
    Private Sub aUp_StorageIn_Execute(ByVal sender As System.Object, ByVal e As DevExpress.ExpressApp.Actions.SimpleActionExecuteEventArgs) Handles aUp_StorageIn.Execute
        Try
            Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
            Dim _StorageInHeader As StorageInHeader = TryCast(View.SelectedObjects(0), StorageInRows).StorageInHeader
            Dim _StorageInRowsMinus As StorageInRows = Nothing
            Dim _StorageInRowsSelected As StorageInRows = TryCast(View.SelectedObjects(0), StorageInRows)
            If _StorageInRowsSelected Is Nothing Then Throw New Exception("*Nincs sor kiválasztva, vagy nem a sor kijelölése az aktív!")

            If _StorageInRowsSelected.RowIndex > 0 Then
                For Each _StorageInrows As StorageInRows In _StorageInHeader.StorageInRows
                    If _StorageInrows.RowIndex = _StorageInRowsSelected.RowIndex - 1 Then
                        _StorageInRowsMinus = _StorageInrows
                        Exit For
                    End If
                Next

                If _StorageInRowsMinus IsNot Nothing Then
                    _StorageInRowsSelected.RowIndex -= 1
                    _StorageInRowsMinus.RowIndex += 1
                End If
            End If
            _ocur.CommitChanges()
            View.Refresh()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
        End Try
    End Sub
    Private Sub aDown_StorageIn_Execute(ByVal sender As System.Object, ByVal e As DevExpress.ExpressApp.Actions.SimpleActionExecuteEventArgs) Handles aDown_StorageIn.Execute
        Try
            Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
            Dim _StorageInHeader As StorageInHeader = TryCast(View.SelectedObjects(0), StorageInRows).StorageInHeader
            Dim _StorageInRowsPlus As StorageInRows = Nothing
            Dim _StorageInRowsSelected As StorageInRows = TryCast(View.SelectedObjects(0), StorageInRows) ' Kiveszi a kijelölt sorok közül az elsőt
            If _StorageInRowsSelected Is Nothing Then Throw New Exception("*Nincs sor kiválasztva, vagy nem a sor kijelölése az aktív!")

            If _StorageInRowsSelected.RowIndex < _StorageInHeader.StorageInRows.Count - 1 Then
                For Each _StorageInrows As StorageInRows In _StorageInHeader.StorageInRows
                    If _StorageInrows.RowIndex = _StorageInRowsSelected.RowIndex + 1 Then
                        _StorageInRowsPlus = _StorageInrows
                        Exit For
                    End If
                Next

                If _StorageInRowsPlus IsNot Nothing Then
                    _StorageInRowsSelected.RowIndex += 1
                    _StorageInRowsPlus.RowIndex -= 1
                End If
            End If
            _ocur.CommitChanges()
            View.Refresh()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
        End Try
    End Sub
    'Private Sub sis_SIFinal(ByVal p_StorageInHeader As StorageInHeader, ByVal _p_ocur As Xpo.XPObjectSpace)
    '    For Each _StorageInRows As StorageInRows In p_StorageInHeader.StorageInRows
    '        Dim _StorageComputed As StorageComputed = _p_ocur.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Products=? and Storage=?", _StorageInRows.Products, p_StorageInHeader.Storage))
    '        Dim _StorageMoveEvents As StorageMoveEvents = _p_ocur.CreateObject(Of StorageMoveEvents)()
    '        If _StorageInRows.QTT_Will > 0 Then
    '            _StorageInRows.QTT = _StorageInRows.QTT_Will
    '            _StorageComputed.QTTFree += _StorageInRows.QTT_Will
    '            _StorageComputed.QTTReservedIn -= _StorageInRows.QTT_Will

    '            _StorageMoveEvents.StorageInRows = _StorageInRows
    '            _StorageMoveEvents.QTT = _StorageInRows.QTT_Will
    '            _StorageMoveEvents.QTT_Free_After = _StorageComputed.QTTFree
    '            _StorageMoveEvents.QTT_Free_Before = _StorageMoveEvents.QTT_Free_After - _StorageMoveEvents.QTT
    '            _StorageMoveEvents.MoveEventsType = eMoveEventsType.StorageInFinal
    '            _StorageMoveEvents.ExecutionDate = GetSQLTime(_p_ocur.Session)

    '            _StorageInRows.QTT_Will = 0
    '        End If
    '    Next
    '    p_StorageInHeader.IsEditable = False
    '    p_StorageInHeader.IsFinalized = True
    '    _p_ocur.CommitChanges()
    'End Sub
    Private Sub aBackToEdit_StorageInHeader_Execute(sender As System.Object, e As DevExpress.ExpressApp.Actions.SimpleActionExecuteEventArgs) Handles aBackToEdit_StorageInHeader.Execute
        Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
        Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
        Dim _uow_lock As New UnitOfWork(_onew.Session.DataLayer)
        Dim _User As User = _onew.GetObject(TryCast(SecuritySystem.CurrentUser, User))
        Dim _StorageInHeader As StorageInHeader = _onew.FindObject(Of StorageInHeader)(CriteriaOperator.Parse("Oid=?", TryCast(View.SelectedObjects(0), StorageInHeader).Oid))

        Try
            If _StorageInHeader.Storage IsNot Nothing And _StorageInHeader.StorageInRows.Count = 0 Then _
                  Throw New Exception("*Nem lehet véglegesíteni a betárolási bizonylatot!" & vbNewLine & vbNewLine & _
                                     "Kérem ellenőrizze, hogy be lett-e állítva raktár, illetve" & vbNewLine & _
                                     "definiált-e betárolási sorokat!")

            If Not LockingModule.LockObject(_uow_lock, GetType(StorageComputed), "-", _User) Then
                Dim _LockingObject As LockingObject = _onew.FindObject(Of LockingObject)(CriteriaOperator.Parse("TableName=?", GetType(StorageComputed).Name + "-" + "-"))

                Dim _Prompt As String = DevExpress.ExpressApp.Utils.CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions\StorageComputed", "CanNotStorageInByLocking")
                Dim _Title As String = DevExpress.ExpressApp.Utils.CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxError")
                MsgBox(String.Format(_Prompt, _LockingObject.User.FullName, _LockingObject.ObjectCreated), MsgBoxStyle.Information + MsgBoxStyle.OkOnly, _Title)

                Exit Sub
            Else
                If _StorageInHeader.Active = True Then
                    Dim _AllowBackToEdit As Boolean = False
                    For Each _StorageInRows As StorageInRows In _StorageInHeader.StorageInRows
                        If _StorageInRows.QTT_Out = 0 Then
                            _AllowBackToEdit = True
                            Exit For
                        End If
                    Next
                    If _AllowBackToEdit = True Then
                        _StorageInHeader.IsEditable = True


                        For Each _StorageInRows As StorageInRows In _StorageInHeader.StorageInRows
                            Dim _StorageComputed As StorageComputed = _onew.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Storage=? AND Products=?", _
                                                                        _onew.GetObject(_StorageInRows.StorageInHeader.Storage), _onew.GetObject(_StorageInRows.Products)))
                            _StorageComputed.QTTFree -= _StorageInRows.QTT
                            _StorageComputed.QTTReservedIn += _StorageInRows.QTT

                            Dim _StorageMoveEvents_Collection As New XPCollection(Of StorageMoveEvents)(_onew.Session, CriteriaOperator.Parse("StorageInRows=?", _onew.GetObject(_StorageInRows)))
                            _StorageMoveEvents_Collection.Sorting.Add(New SortProperty("ObjectCreated", DB.SortingDirection.Descending))

                            _StorageInRows.QTT_Will = _StorageInRows.QTT
                            _StorageInRows.QTT = 0

                            Dim _StorageMoveEvents As New StorageMoveEvents(_onew.Session)
                            _StorageMoveEvents.StorageInRows = _onew.GetObject(_StorageMoveEvents_Collection(0).StorageInRows)
                            _StorageMoveEvents.StorageOutRows = _onew.GetObject(_StorageMoveEvents_Collection(0).StorageOutRows)
                            _StorageMoveEvents.QTT_Free_Before = _StorageMoveEvents_Collection(0).QTT_Free_After
                            _StorageMoveEvents.QTT = (-1) * _StorageInRows.QTT_Will
                            _StorageMoveEvents.QTT_Free_After = _StorageMoveEvents.QTT_Free_Before + _StorageMoveEvents.QTT
                            _StorageMoveEvents.MoveEventsType = eMoveEventsType.StorageInBackToEdit
                            _StorageMoveEvents.ExecutionDate = GetSQLTime(_ocur.Session)

                        Next
                        _onew.CommitChanges()
                    End If
                End If
                If Frame.GetController(Of RefreshController).RefreshAction.Enabled Then
                    Frame.GetController(Of RefreshController).RefreshAction.DoExecute()
                End If
            End If

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, "Hiba")

        Finally
            LockingModule.UnLockObject(_uow_lock, GetType(StorageComputed), "-", _User)
        End Try
    End Sub
    Private Sub StorageInHeader_ListView_View_SelectionChanged(sender As Object, e As EventArgs)
        If View.SelectedObjects.Count = 1 Then
            Dim _StorageInHeader As StorageInHeader = TryCast(View.SelectedObjects(0), StorageInHeader)
            If _StorageInHeader IsNot Nothing Then
                If _StorageInHeader.IsStorno = False Then
                    Frame.GetController(Of StorageTransactionsInVC)().aStorageInStorno.Enabled.SetItemValue("", True)
                    Frame.GetController(Of StorageTransactionsInVC)().aBackToEdit_StorageInHeader.Enabled.SetItemValue("", True)
                Else
                    Frame.GetController(Of StorageTransactionsInVC)().aStorageInStorno.Enabled.SetItemValue("", False)
                    Frame.GetController(Of StorageTransactionsInVC)().aBackToEdit_StorageInHeader.Enabled.SetItemValue("", False)
                End If
            End If
        End If
    End Sub
    Private Sub aStorageInFromPdaCollection_CustomizePopupWindowParams(sender As Object, e As DevExpress.ExpressApp.Actions.CustomizePopupWindowParamsEventArgs) Handles aStorageInFromPdaCollection.CustomizePopupWindowParams
        Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
        Dim _StoragePDACollectionHeader_Collection As New XPCollection(Of StoragePDACollectionHeader)(_onew.Session, CriteriaOperator.Parse("StoragePDACollectionHeaderStatus=0 " _
                                                                                                                                            + "AND StoragePDACollectionRows.Count>0"))

        Dim _CS As New CollectionSource(_onew, GetType(StorageInRowsFromPDACollectionPopup))

        For Each _StoragePDACollectionHeader As StoragePDACollectionHeader In _StoragePDACollectionHeader_Collection
            Dim _StorageInRowsFromPDACollectionPopup As StorageInRowsFromPDACollectionPopup = _onew.CreateObject(Of StorageInRowsFromPDACollectionPopup)()
            _StorageInRowsFromPDACollectionPopup.StoragePDACollectionHeader = _StoragePDACollectionHeader

            _CS.Add(_StorageInRowsFromPDACollectionPopup)
        Next

        e.View = Application.CreateListView("StorageInRowsFromPDACollectionPopup_ListView", _CS, False)
    End Sub
    Private Sub aStorageInFromPdaCollection_Execute(sender As System.Object, e As DevExpress.ExpressApp.Actions.PopupWindowShowActionExecuteEventArgs) Handles aStorageInFromPdaCollection.Execute
        Try
            If e.PopupWindow.View.SelectedObjects.Count = 0 Then Throw New Exception("*Nincs kiválasztva egyetlen kollekció sem!" + vbNewLine _
                                                                                    + "A művelet megszakadt.")
            Dim _ocur As Xpo.XPObjectSpace = View.ObjectSpace
            Dim _StorageInHeader As StorageInHeader = TryCast(View.SelectedObjects(0), StorageInHeader)
            For Each _StorageInRowsFromPDACollectionPopup As StorageInRowsFromPDACollectionPopup In e.PopupWindow.View.SelectedObjects
                If _StorageInRowsFromPDACollectionPopup.StoragePDACollectionHeader.StoragePDACollectionRows.Count > 0 Then
                    _StorageInRowsFromPDACollectionPopup.StoragePDACollectionHeader.StoragePDACollectionHeaderStatus = 1
                    For Each _StoragePDACollectionRows As StoragePDACollectionRows In _StorageInRowsFromPDACollectionPopup.StoragePDACollectionHeader.StoragePDACollectionRows
                        _StorageInHeader.row_Products = _ocur.GetObjectByKey(Of Products)(_StoragePDACollectionRows.Products.Oid)
                        _StorageInHeader.row_QTT_WILL = _StoragePDACollectionRows.QTT
                        Frame.GetController(Of StorageTransactionsInVC).aToTable_StorageIn.DoExecute()
                    Next
                End If
            Next
            _ocur.CommitChanges()
        Catch ext As Exception
            MsgBox(ext.Message)
        End Try
    End Sub
    Private Sub aGenerateStorageInPDACollection_CustomizePopupWindowParams(sender As Object, e As DevExpress.ExpressApp.Actions.CustomizePopupWindowParamsEventArgs) Handles aGenerateStorageInPDACollection.CustomizePopupWindowParams
        Try
            Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
            Dim _GenerateStorageInPDALocationCollection As GenerateStorageInPDALocationCollection = _onew.CreateObject(Of GenerateStorageInPDALocationCollection)()
            e.View = Application.CreateDetailView(_onew, "GenerateStorageInPDALocationCollection_DetailView", False, _GenerateStorageInPDALocationCollection)

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly)
        End Try
    End Sub
    Private Sub aGenerateStorageInPDACollection_Execute(sender As System.Object, e As DevExpress.ExpressApp.Actions.PopupWindowShowActionExecuteEventArgs) Handles aGenerateStorageInPDACollection.Execute
        Try
            Dim _ocur As Xpo.XPObjectSpace = View.ObjectSpace
            Dim _StorageInHeader As StorageInHeader = TryCast(View.SelectedObjects(0), StorageInHeader)
            Dim _GenerateStorageInPDALocationCollection As GenerateStorageInPDALocationCollection = TryCast(e.PopupWindow.View.SelectedObjects(0), GenerateStorageInPDALocationCollection)
            If _StorageInHeader Is Nothing Then Throw New Exception("*Nincs kijelölve egyetlen véglegesített betárolás sem!")

            Dim _StoragePDACollectionHeader As StoragePDACollectionHeader = _ocur.CreateObject(Of StoragePDACollectionHeader)()
            _StoragePDACollectionHeader.StoragePDACollectionHeaderStatus = eStoragePDACollectionHeaderStatus.eOpen
            _StoragePDACollectionHeader.StorageCollectionType = eStoragePDACollectionType.eIsLocationIn
            _StoragePDACollectionHeader.StoragePDAParameters = _ocur.GetObjectByKey(Of StoragePDAParameters)(_GenerateStorageInPDALocationCollection.StoragePDAParameters.Oid)
            _StoragePDACollectionHeader.StorageInHeader = _StorageInHeader
            _StoragePDACollectionHeader.CustomersFrom = _ocur.GetObject(_GenerateStorageInPDALocationCollection.StoragePDAParameters.CustomersFrom)

            If _StorageInHeader.StorageInRows.Count > 0 Then
                For Each _StorageInRows As StorageInRows In _StorageInHeader.StorageInRows
                    Dim _StoragePDACollectionRows As StoragePDACollectionRows = _ocur.CreateObject(Of StoragePDACollectionRows)()
                    _StoragePDACollectionRows.StoragePDACollectionHeader = _StoragePDACollectionHeader
                    _StoragePDACollectionRows.Products = _StorageInRows.Products
                    _StoragePDACollectionRows.QTT = _StorageInRows.QTT
                    _StoragePDACollectionRows.DateModified = GetSQLTime(_ocur.Session)
                    _StoragePDACollectionRows.SerialNumber = _StorageInRows.SerialNumber
                    _StoragePDACollectionRows.PacketNumber = _StorageInRows.PacketNumber
                    _StoragePDACollectionRows.ConnectOid = _StorageInRows.Oid 'A kötés miatt kell !!!
                    If _StorageInRows.Products.ProductsBarcodes.Count > 0 Then
                        _StoragePDACollectionRows.Barcode = _StorageInRows.Products.ProductsBarcodes(0).Barcode
                    End If
                Next
            End If

            _ocur.CommitChanges()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly)
        End Try
    End Sub
    Private Sub aStorageInHeader_InsertInventoryTransfer_CustomizePopupWindowParams(sender As Object, e As CustomizePopupWindowParamsEventArgs) Handles aStorageInHeader_InsertInventoryTransfer.CustomizePopupWindowParams
        Try
            Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
            Dim _StorageInHeader As StorageInHeader = TryCast(View.SelectedObjects(0), StorageInHeader)
            Dim _StorageInRows_InTable As StorageInRows
            Dim _StorageInRowsFrom_Collection As New XPCollection(Of StorageInRows)(_onew.Session, CriteriaOperator.Parse("1=2"))
            Dim _StorageOutHeader_Collection As New XPCollection(Of StorageOutHeader)(_onew.Session, CriteriaOperator.Parse("IsEditable=False AND StorageTo=? AND Storage=?", _
                                                                                                _onew.GetObject(_StorageInHeader.Storage), _onew.GetObject(_StorageInHeader.StorageFrom)))

            Dim _StorageOutRows_CollectionSource As New CollectionSource(_onew, GetType(StorageOutRows))
            Dim _Filter As String = "Oid in("
            Dim _StorageOutRowsInRows As StorageOutRowsInRows
            For Each _StorageOutHeader As StorageOutHeader In _StorageOutHeader_Collection
                For Each _StorageOutRows As StorageOutRows In _StorageOutHeader.StorageOutRows
                    Dim _Need As Boolean = True
                    For Each _StorageOutRowsInRows In _StorageOutRows.StorageOutRowsInRows
                        If _StorageOutRowsInRows.StorageInRows.QTT_Overstored < _StorageOutRowsInRows.StorageInRows.QTT_Out Then

                            For Each _StorageInRows_InTable In _StorageInHeader.StorageInRows
                                If _StorageOutRowsInRows.StorageInRows.Oid = _StorageInRows_InTable.StorageInRowsFrom.Oid Then
                                    _Need = False
                                    Exit For
                                End If
                            Next
                        Else
                            _Need = False
                        End If
                    Next
                    If _need Then
                        _Filter += "'" + _StorageOutRows.Oid.ToString + "',"
                    End If
                Next

            Next

            _Filter = _Filter.Remove(_Filter.Length - 1, 1)
            _Filter += ")"
            _StorageOutRows_CollectionSource.BeginUpdateCriteria()
            _StorageOutRows_CollectionSource.Criteria.Clear()
            If _Filter.Length > 8 Then
                _StorageOutRows_CollectionSource.Criteria("Filter") = CriteriaOperator.Parse(_Filter)
            Else
                _StorageOutRows_CollectionSource.Criteria.Add("1", CriteriaOperator.Parse("1=2"))
            End If
            _StorageOutRows_CollectionSource.EndUpdateCriteria()

            e.View = Application.CreateListView("StorageOutRows_ListView_Overstored", _StorageOutRows_CollectionSource, False)
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
        End Try
    End Sub
    Private Sub aStorageInHeader_InsertInventoryTransfer_Execute(sender As Object, e As PopupWindowShowActionExecuteEventArgs) Handles aStorageInHeader_InsertInventoryTransfer.Execute
        Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
        Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
        Dim _uow_lock As New UnitOfWork(_onew.Session.DataLayer)
        Dim _User As User = _onew.GetObject(TryCast(SecuritySystem.CurrentUser, User))

        Try
            If Not LockingModule.LockObject(_uow_lock, GetType(StorageComputed), "-", _User) Then
                Dim _LockingObject As LockingObject = _onew.FindObject(Of LockingObject)(CriteriaOperator.Parse("TableName=?", GetType(StorageComputed).Name + "-" + "-"))

                Dim _Prompt As String = DevExpress.ExpressApp.Utils.CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions\StorageComputed", "CanNotStorageInByLocking")
                Dim _Title As String = DevExpress.ExpressApp.Utils.CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxError")
                MsgBox(String.Format(_Prompt, _LockingObject.User.FullName, _LockingObject.ObjectCreated), MsgBoxStyle.Information + MsgBoxStyle.OkOnly, _Title)

                Exit Sub
            Else
                Dim _StorageInHeader As StorageInHeader = TryCast(View.SelectedObjects(0), StorageInHeader)
                For Each _StorageOutRows As StorageOutRows In e.PopupWindow.View.SelectedObjects
                    For Each _StorageOutRowsInRows As StorageOutRowsInRows In _StorageOutRows.StorageOutRowsInRows
                        _StorageOutRowsInRows = _ocur.GetObject(_StorageOutRowsInRows)

                        Dim _StorageComputed As StorageComputed = _ocur.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Products=? and Storage=?", _
                                                                             _ocur.GetObject(_StorageOutRowsInRows.StorageInRows.Products), _ocur.GetObject(_StorageInHeader.Storage)))

                        If _StorageComputed Is Nothing Then
                            _StorageComputed = _ocur.CreateObject(Of StorageComputed)()
                            _StorageComputed.Storage = _StorageInHeader.Storage
                            _StorageComputed.Products = _ocur.GetObject(_StorageOutRowsInRows.StorageInRows.Products)
                            _StorageComputed.QTTReservedIn = _StorageOutRowsInRows.QTT
                        Else
                            _StorageComputed.QTTReservedIn += _StorageOutRowsInRows.QTT
                        End If

                        Dim _StorageInRows As New StorageInRows(_ocur.Session)
                        With _StorageInRows
                            .StorageInHeader = _StorageInHeader
                            .Products = _ocur.GetObject(_StorageOutRowsInRows.StorageInRows.Products)
                            .QTT_Will = _StorageOutRowsInRows.QTT
                            .PacketNumber = _StorageOutRowsInRows.StorageInRows.PacketNumber
                            .SerialNumber = _StorageOutRowsInRows.StorageInRows.SerialNumber
                            .WeightMode = _StorageOutRowsInRows.StorageInRows.WeightMode
                            .Weight = .QTT_Will * (_StorageOutRowsInRows.StorageInRows.Weight / _StorageOutRowsInRows.StorageInRows.QTT)
                            .RowIndex = _StorageInHeader.StorageInRows.Count
                            .StorageInRowsFrom = _StorageOutRowsInRows.StorageInRows
                            .DeliveryNoteInRows = _ocur.GetObject(_StorageOutRowsInRows.StorageInRows.DeliveryNoteInRows)
                        End With
                        _StorageOutRowsInRows.StorageInRows.QTT_Overstored += _StorageOutRowsInRows.QTT
                    Next
                Next
                _ocur.CommitChanges()

            End If

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
        Finally
            LockingModule.UnLockObject(_uow_lock, GetType(StorageComputed), "-", _User)
        End Try
    End Sub
    Private Sub aStorageInRows_Split_CustomizePopupWindowParams(sender As Object, e As CustomizePopupWindowParamsEventArgs) Handles aStorageInRows_Split.CustomizePopupWindowParams
        Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
        Dim _StorageInRows As StorageInRows = TryCast(View.SelectedObjects(0), StorageInRows)
        Dim _StorageInRows_Split_PopUp As New StorageInRows_Split_PopUp(_onew.Session)

        _StorageInRows_Split_PopUp.QTT_Max = _StorageInRows.QTT - _StorageInRows.QTT_Out
        _StorageInRows_Split_PopUp.StorageInRows = _onew.GetObject(_StorageInRows)

        e.View = Application.CreateDetailView(_onew, "StorageInRows_Split_PopUp_DetailView", False, _StorageInRows_Split_PopUp)
    End Sub
    Private Sub aStorageInRows_Split_Execute(sender As Object, e As PopupWindowShowActionExecuteEventArgs) Handles aStorageInRows_Split.Execute
        Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
        Dim _StorageInRows As StorageInRows = TryCast(View.SelectedObjects(0), StorageInRows)

        Dim _QTT_Max As Double = TryCast(e.PopupWindow.View.SelectedObjects(0), StorageInRows_Split_PopUp).QTT_Max

        If _QTT_Max > 0 And _QTT_Max < _StorageInRows.QTT Then
            Dim _StorageInRows_New As New StorageInRows(_ocur.Session)
            With _StorageInRows_New
                .StorageInHeader = _StorageInRows.StorageInHeader
                .Products = _StorageInRows.Products
                .QTT = _QTT_Max
                .QTT_Will = 0
                .QTT_Out = 0
                .QTT_Out_Will = 0
                .QTT_Overstored = 0
                .Active = _StorageInRows.Active
                .DeliveryNoteInRows = _StorageInRows.DeliveryNoteInRows
                .PacketNumber = _StorageInRows.PacketNumber
                .SerialNumber = _StorageInRows.SerialNumber
                .Weight = _StorageInRows.Weight
                .WeightMode = _StorageInRows.WeightMode
                .Storage = _StorageInRows.Storage
                .StorageInRowsFrom = _StorageInRows.StorageInRowsFrom
                .AveragePriceInHUF = _StorageInRows.AveragePriceInHUF
            End With

            _StorageInRows.QTT -= _QTT_Max

            Dim _StorageMoveEvents As StorageMoveEvents = _ocur.FindObject(Of StorageMoveEvents)(CriteriaOperator.Parse("StorageInRows=? AND MoveEventsType=0", _StorageInRows))
            With _StorageMoveEvents
                .QTT -= _QTT_Max
                .QTT_Free_After -= _QTT_Max
            End With

            Dim _StorageMoveEvents_New As New StorageMoveEvents(_ocur.Session)
            With _StorageMoveEvents_New
                .StorageInRows = _StorageInRows_New
                .QTT = _StorageInRows_New.QTT
                .QTT_Free_Before = _StorageMoveEvents.QTT_Free_After
                .QTT_Free_After = .QTT_Free_Before + .QTT
                .ExecutionDate = _StorageMoveEvents.ExecutionDate
                .MoveEventsType = eMoveEventsType.StorageInFinal
            End With

            _ocur.CommitChanges()
        End If
    End Sub
    Private Sub StorageInRows_Split_PopUp_DetailView_AcceptAction_Executing(sender As Object, e As CancelEventArgs)
        Try
            Dim _StorageInRows_Split_PopUp As StorageInRows_Split_PopUp = TryCast(View.SelectedObjects(0), StorageInRows_Split_PopUp)

            If _StorageInRows_Split_PopUp.StorageInRows.QTT < _StorageInRows_Split_PopUp.QTT_Max Then Throw New Exception("*A beírt érték meghaladja a maximális értéket!")
            If _StorageInRows_Split_PopUp.QTT_Max = 0 Then Throw New Exception("*Nulla mennyiséggel nem lehet sort bontani!")
            If _StorageInRows_Split_PopUp.QTT_Max < 0 Then Throw New Exception("*Negatív mennyiséggel nem lehet sort bontani!")
            If _StorageInRows_Split_PopUp.QTT_Max - _StorageInRows_Split_PopUp.StorageInRows.QTT = 0 Then Throw New Exception("*Nem maradhat nulla értékű sor a sorbontás után!")
        Catch ex As Exception
            e.Cancel = True
            MsgBox(ex.Message, MsgBoxStyle.OkOnly)
        End Try
    End Sub
    Private Sub aStorageInHeader_InsertInventoryTransfer_FIFO_CustomizePopupWindowParams(sender As Object, e As CustomizePopupWindowParamsEventArgs) Handles aStorageInHeader_InsertInventoryTransfer_FIFO.CustomizePopupWindowParams
        Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
        Dim _StorageOutRowsInRows_Collection As New CollectionSource(_onew, GetType(StorageOutRowsInRows))
        Dim _StorageInHeader As StorageInHeader = TryCast(View.SelectedObjects(0), StorageInHeader)
        Dim _StorageOutRowsInRows As StorageOutRowsInRows = Nothing

        _StorageOutRowsInRows_Collection.BeginUpdateCriteria()
        _StorageOutRowsInRows_Collection.Criteria("ByNotOverstored") = CriteriaOperator.Parse("StorageOutRows.StorageOutHeader.StorageTo.Oid=? and " _
                                                                                              + "[StorageOutRows.StorageOutHeader.IsStorno] = False and [StorageOutRows.StorageOutHeader.IsEditable] = False And" _
                                                                                              + "[StorageOutRows.StorageOutHeader.StorageMoveType.MoveType] = ##Enum#Nuvolar.Module.eMoveType,InventoryTransfer# And " _
                                                                                              + "Round([StorageInRows.QTT_Overstor], 4) > Round([StorageInRows.QTT_Overstored], 4)", _
                                                                                              _StorageInHeader.Storage.Oid)
        _StorageOutRowsInRows_Collection.EndUpdateCriteria()

        
        e.View = Application.CreateListView("StorageOutRowsInRows_ListView_Overstored", _StorageOutRowsInRows_Collection, False)
    End Sub
    Private Sub aStorageInHeader_InsertInventoryTransfer_FIFO_Execute(sender As Object, e As PopupWindowShowActionExecuteEventArgs) Handles aStorageInHeader_InsertInventoryTransfer_FIFO.Execute
        Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
        Dim _uow As New UnitOfWork(_onew.Session.DataLayer)
        Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
        Dim _uow_lock As New UnitOfWork(_onew.Session.DataLayer)
        Dim _User As User = _onew.GetObject(TryCast(SecuritySystem.CurrentUser, User))

        Try
            If Not LockingModule.LockObject(_uow_lock, GetType(StorageComputed), "-", _User) Then
                Dim _LockingObject As LockingObject = _onew.FindObject(Of LockingObject)(CriteriaOperator.Parse("TableName=?", GetType(StorageComputed).Name + "-" + "-"))

                Dim _Prompt As String = DevExpress.ExpressApp.Utils.CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions\StorageComputed", "CanNotStorageInByLocking")
                Dim _Title As String = DevExpress.ExpressApp.Utils.CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxError")
                MsgBox(String.Format(_Prompt, _LockingObject.User.FullName, _LockingObject.ObjectCreated), MsgBoxStyle.Information + MsgBoxStyle.OkOnly, _Title)

                Exit Sub
            Else
                Dim _StorageInHeader As StorageInHeader = TryCast(View.SelectedObjects(0), StorageInHeader)
                If _StorageInHeader Is Nothing Then Throw New Exception("*Váratlan hiba történt, a folyamat megszakadt!")

                For Each _StorageOutRowsInRows As StorageOutRowsInRows In e.PopupWindow.View.SelectedObjects
                    If _StorageOutRowsInRows.QTT_Will > 0 Then
                        Dim _QTT_Will As Double = _StorageOutRowsInRows.QTT_Will
                        _StorageOutRowsInRows = _ocur.GetObject(_StorageOutRowsInRows)

                        Dim _StorageComputed As StorageComputed = _ocur.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Products=? and Storage=?", _
                                                                             _ocur.GetObject(_StorageOutRowsInRows.StorageInRows.Products), _ocur.GetObject(_StorageInHeader.Storage)))

                        If _StorageComputed Is Nothing Then
                            _StorageComputed = _ocur.CreateObject(Of StorageComputed)()
                            _StorageComputed.Storage = _StorageInHeader.Storage
                            _StorageComputed.Products = _ocur.GetObject(_StorageOutRowsInRows.StorageInRows.Products)
                            _StorageComputed.QTTReservedIn = _QTT_Will
                        Else
                            _StorageComputed.QTTReservedIn += _QTT_Will
                        End If

                        Dim _StorageInRows As New StorageInRows(_ocur.Session)
                        With _StorageInRows
                            .StorageInHeader = _StorageInHeader
                            .Products = _ocur.GetObject(_StorageOutRowsInRows.StorageInRows.Products)
                            .QTT_Will = _QTT_Will
                            .PacketNumber = _StorageOutRowsInRows.StorageInRows.PacketNumber
                            .SerialNumber = _StorageOutRowsInRows.StorageInRows.SerialNumber
                            .WeightMode = _StorageOutRowsInRows.StorageInRows.WeightMode
                            .Weight = .QTT_Will * (_StorageOutRowsInRows.StorageInRows.Weight / _StorageOutRowsInRows.StorageInRows.QTT)
                            .RowIndex = _StorageInHeader.StorageInRows.Count
                            If _StorageOutRowsInRows.StorageInRows.StorageInRowsFrom Is Nothing Then
                                .StorageInRowsFrom = _StorageOutRowsInRows.StorageInRows
                            Else
                                .StorageInRowsFrom = _StorageOutRowsInRows.StorageInRows.StorageInRowsFrom
                            End If

                            .DeliveryNoteInRows = _ocur.GetObject(_StorageOutRowsInRows.StorageInRows.DeliveryNoteInRows)

                        End With

                    End If
                Next

                _ocur.CommitChanges()
                If _StorageInHeader.StorageMoveType.MoveType = eMoveType.InventoryTransfer Then
                    CheckInventoryTransferStorageInRows(_uow, _StorageInHeader.StorageInRows)
                End If
            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
        Finally
            LockingModule.UnLockObject(_uow_lock, GetType(StorageComputed), "-", _User)
        End Try
    End Sub
    Private Sub aCheckInventoryTransfer_Execute(sender As Object, e As SimpleActionExecuteEventArgs) Handles aCheckInventoryTransfer.Execute
        CheckInventoryTransfer()
    End Sub
    Private Sub StorageOutRowsInRows_ListView_Overstored_AcceptAction_Executing(sender As Object, e As CancelEventArgs)
        For Each _StorageOutRowsInRows As StorageOutRowsInRows In View.SelectedObjects
            If _StorageOutRowsInRows.QTT_Will > 0 Then
                If _StorageOutRowsInRows.QTT < (_StorageOutRowsInRows.StorageInRows.QTT_Overstored_Will + _StorageOutRowsInRows.StorageInRows.QTT_Overstored + _StorageOutRowsInRows.QTT_Will) Then
                    e.Cancel = True
                    MsgBox("A fogadni kívánt mennyiség meghaladja a maximálisan fogadható mennyiséget!")
                End If
            End If
        Next
    End Sub

    Public Sub CheckInventoryTransfer()
        Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace

        Select Case GLOBAL_SQLType
            Case eSQLType.MSSQL, eSQLType.MySQL
                _onew.Session.ExecuteNonQuery("update StorageInRows set QTT_Overstor=0,QTT_Overstor_Will=0,QTT_Overstored=0,QTT_Overstored_Will=0")

            Case eSQLType.PostgreSQL
                _onew.Session.ExecuteNonQuery("update ""StorageInRows"" set ""QTT_Overstor""=0,""QTT_Overstor_Will""=0,""QTT_Overstored""=0,""QTT_Overstored_Will""=0")
        End Select
        _onew.CommitChanges()

        Dim _StorageOutRowsInRows_XPQuery As New XPQuery(Of StorageOutRowsInRows)(_onew.Session)

        Dim query = From _StorageOutRowsInRows In _StorageOutRowsInRows_XPQuery
                    Where _StorageOutRowsInRows.StorageOutRows.StorageOutHeader.StorageMoveType.MoveType = eMoveType.InventoryTransfer And
                          _StorageOutRowsInRows.StorageOutRows.StorageOutHeader.IsEditable = False And
                          String.IsNullOrEmpty(_StorageOutRowsInRows.StorageOutRows.StorageOutHeader.DocumentNumber) = False And
                          _StorageOutRowsInRows.StorageOutRows.StorageOutHeader IsNot Nothing
                Group _StorageOutRowsInRows By _StorageOutRowsInRows.StorageInRows.Oid Into g = Group
                Select New With {.StorageInRows = Oid,
                                 .QTT_Sum = g.Sum(Function(inv) inv.QTT)}


        RaiseEvent InitWork(1, 1, query.Count)
        For Each item In query
            RaiseEvent DoWork()
            Dim _StorageInRows As StorageInRows = _onew.FindObject(Of StorageInRows)(CriteriaOperator.Parse("Oid=?", item.StorageInRows.ToString))

            If _StorageInRows IsNot Nothing Then
                _StorageInRows.QTT_Overstor = item.QTT_Sum
                _onew.CommitChanges()
            End If
        Next
        RaiseEvent FinalWork

        query = From _StorageOutRowsInRows In _StorageOutRowsInRows_XPQuery
                    Where _StorageOutRowsInRows.StorageOutRows.StorageOutHeader.StorageMoveType.MoveType = eMoveType.InventoryTransfer And
                          _StorageOutRowsInRows.StorageOutRows.StorageOutHeader.IsEditable = True And
                          _StorageOutRowsInRows.StorageOutRows.StorageOutHeader IsNot Nothing
                Group _StorageOutRowsInRows By _StorageOutRowsInRows.StorageInRows.Oid Into g = Group
                Select New With {.StorageInRows = Oid,
                                 .QTT_Sum = g.Sum(Function(inv) inv.QTT_Will)}


        RaiseEvent InitWork(1, 1, query.Count)
        For Each item In query
            RaiseEvent DoWork()
            Dim _StorageInRows As StorageInRows = _onew.FindObject(Of StorageInRows)(CriteriaOperator.Parse("Oid=?", item.StorageInRows.ToString))

            If _StorageInRows IsNot Nothing Then
                _StorageInRows.QTT_Overstor_Will = item.QTT_Sum
                _onew.CommitChanges()
            End If
        Next
        RaiseEvent FinalWork


        '__Overstored renberakása
        Dim _StorageInRows_XPQuery As New XPQuery(Of StorageInRows)(_onew.Session)
        Dim query1 = From _StorageInRows In _StorageInRows_XPQuery
                     Where _StorageInRows.StorageInHeader IsNot Nothing And
                         String.IsNullOrEmpty(_StorageInRows.StorageInHeader.DocumentNumber) = False And
                         _StorageInRows.StorageInHeader.StorageMoveType.MoveType = eMoveType.InventoryTransfer And
                         _StorageInRows.StorageInHeader.IsEditable = False
                     Group _StorageInRows By _StorageInRows.StorageInRowsFrom.Oid Into g = Group
                    Select New With {.StorageInRows = Oid,
                                 .QTT_Sum = g.Sum(Function(inv) inv.QTT)}
        RaiseEvent InitWork(1, 1, query1.Count)
        For Each item In query1
            RaiseEvent DoWork()
            Dim _StorageInRows As StorageInRows = _onew.FindObject(Of StorageInRows)(CriteriaOperator.Parse("Oid=?", item.StorageInRows.ToString))

            If _StorageInRows IsNot Nothing Then
                _StorageInRows.QTT_Overstored = item.QTT_Sum
                _onew.CommitChanges()
            End If
        Next
        RaiseEvent FinalWork

        query1 = From _StorageInRows In _StorageInRows_XPQuery
                     Where _StorageInRows.StorageInHeader IsNot Nothing And
                         String.IsNullOrEmpty(_StorageInRows.StorageInHeader.DocumentNumber) = False And
                         _StorageInRows.StorageInHeader.StorageMoveType.MoveType = eMoveType.InventoryTransfer And
                         _StorageInRows.StorageInHeader.IsEditable = True
                     Group _StorageInRows By _StorageInRows.StorageInRowsFrom.Oid Into g = Group
                    Select New With {.StorageInRows = Oid,
                                 .QTT_Sum = g.Sum(Function(inv) inv.QTT_Will)}
        RaiseEvent InitWork(1, 1, query1.Count)
        For Each item In query1
            RaiseEvent DoWork()
            Dim _StorageInRows As StorageInRows = _onew.FindObject(Of StorageInRows)(CriteriaOperator.Parse("Oid=?", item.StorageInRows.ToString))

            If _StorageInRows IsNot Nothing Then
                _StorageInRows.QTT_Overstored_Will = item.QTT_Sum
                _onew.CommitChanges()
            End If
        Next
        RaiseEvent FinalWork


    End Sub
End Class
