First create solution

This commit is contained in:
2017-03-08 11:21:27 +01:00
commit a2fb86bacf
5508 changed files with 1082238 additions and 0 deletions
@@ -0,0 +1,703 @@
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.Data.Filtering
Imports DevExpress.Xpo
Imports DevExpress.ExpressApp.Utils
Imports DevExpress.Persistent.BaseImpl
Public Class RecipeExecutionSimpleVC
Inherits DevExpress.ExpressApp.ViewController
Dim _RecipeExecutionFrom_Collection As New ArrayList
Dim _RecipeExecutionTo_Collection As New ArrayList
Dim _VaildData As Boolean = True
Public Sub New()
MyBase.New()
InitializeComponent()
RegisterActions(components)
End Sub
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
If View.Id = "RecipeTo_ListView" Then
Frame.GetController(Of DevExpress.ExpressApp.SystemModule.LinkUnlinkController)().Active.SetItemValue("", False)
Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", False)
End If
If View.Id = "RecipeFrom_ListView" Then
Frame.GetController(Of DevExpress.ExpressApp.SystemModule.LinkUnlinkController)().Active.SetItemValue("", False)
Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", False)
End If
End Sub
Protected Overrides Sub OnDeactivated()
MyBase.OnDeactivated()
If View.Id = "RecipeTo_ListView" Then
Frame.GetController(Of DevExpress.ExpressApp.SystemModule.LinkUnlinkController)().Active.SetItemValue("", True)
Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", True)
End If
If View.Id = "RecipeFrom_ListView" Then
Frame.GetController(Of DevExpress.ExpressApp.SystemModule.LinkUnlinkController)().Active.SetItemValue("", True)
Frame.GetController(Of DevExpress.ExpressApp.CloneObject.CloneObjectViewController)().Active.SetItemValue("", True)
End If
End Sub
Private Sub aRecipeExecutionFrom_CustomizePopupWindowParams(sender As System.Object, e As DevExpress.ExpressApp.Actions.CustomizePopupWindowParamsEventArgs) Handles aRecipeExecutionFrom.CustomizePopupWindowParams
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _RecipeExecutionSimple As RecipeExecutionSimple = TryCast(View.SelectedObjects(0), RecipeExecutionSimple)
Dim _CS As CollectionSource = New CollectionSource(_onew, GetType(RecipeExecutionSimplePopupFrom))
_RecipeExecutionFrom_Collection.Clear()
Dim _RecipeExecutionSimplePopupFrom As RecipeExecutionSimplePopupFrom
For Each _RecipeFrom In _RecipeExecutionSimple.Recipe.RecipeFrom
_RecipeExecutionSimplePopupFrom = _onew.CreateObject(Of RecipeExecutionSimplePopupFrom)()
_RecipeExecutionSimplePopupFrom.RecipeFrom = _onew.GetObject(_RecipeFrom)
_RecipeExecutionSimplePopupFrom.StorageComputed = _onew.FindObject(Of StorageComputed) _
(CriteriaOperator.Parse("Products=? And Storage=?", _onew.GetObject(_RecipeFrom.Products), _onew.GetObject(_RecipeFrom.Storage)))
If _RecipeExecutionSimplePopupFrom.StorageComputed Is Nothing Then
_VaildData = False
Else
_RecipeExecutionSimplePopupFrom.QTTNeed = _RecipeExecutionSimple.QTT * _RecipeFrom.QTT
_RecipeExecutionSimplePopupFrom.QTTDifferent = _RecipeExecutionSimplePopupFrom.StorageComputed.QTTFree - _RecipeExecutionSimplePopupFrom.QTTNeed
If _RecipeExecutionSimplePopupFrom.QTTDifferent < 0 Then
_VaildData = False
End If
_RecipeExecutionFrom_Collection.Add(_RecipeExecutionSimplePopupFrom)
_CS.Add(_RecipeExecutionSimplePopupFrom)
End If
Next
e.View = Application.CreateListView("RecipeExecutionSimplePopupFrom_ListView", _CS, False)
End Sub
Private Sub aRecipeExecutionFrom_Execute(sender As System.Object, e As DevExpress.ExpressApp.Actions.PopupWindowShowActionExecuteEventArgs) Handles aRecipeExecutionFrom.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 _VaildData = False Then Throw New UserFriendlyException("Nem kivitelezhetõ a gyártás, mert egy vagy több alapanyag nem áll rendelkezésre!")
'--==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
Dim _RecipeExecutionSimple As RecipeExecutionSimple = TryCast(View.SelectedObjects(0), RecipeExecutionSimple)
'----------------------------------------------------------
'Raktárak feltérképezése, kitárolási fejléc(ek) összerakása
'----------------------------------------------------------
Dim _StorageOutHeader_Collection As New ArrayList '<== Kitároláso fejlécEK kollekciója, annyi kitárolási fejléc, AHÁNY KÜLÖNBÖZÕ raktár van!!!
For Each _RecipeFrom As RecipeFrom In _RecipeExecutionSimple.Recipe.RecipeFrom
If _StorageOutHeader_Collection.Count = 0 Then
Dim _StorageOutHeader As New StorageOutHeader(_ocur.Session)
With _StorageOutHeader
.Storage = _ocur.GetObjectByKey(Of Storage)(_RecipeFrom.Storage.Oid)
.CustomersFrom = _ocur.GetObjectByKey(Of CustomersFrom)(_RecipeExecutionSimple.CustomersFrom.Oid)
.RecipeExecutionSimple = _RecipeExecutionSimple
.Customers = _ocur.GetObjectByKey(Of Customers)(TryCast(.Storage.CustomersFrom, Customers).Oid)
.StorageMoveType = _ocur.GetObject(_RecipeExecutionSimple.RecipeExecutionSimpleType.StorageMoveType)
End With
_StorageOutHeader_Collection.Add(_StorageOutHeader)
Else
For Each _StorageOutHeaderExist As StorageOutHeader In _StorageOutHeader_Collection
Dim _NewStorage As Boolean = False
If _StorageOutHeaderExist.Storage.Oid <> _RecipeFrom.Storage.Oid Then
_NewStorage = True
End If
If _NewStorage Then
Dim _StorageOutHeader As New StorageOutHeader(_ocur.Session)
With _StorageOutHeader
.Storage = _ocur.GetObjectByKey(Of Storage)(_RecipeFrom.Storage.Oid)
.Customers = _ocur.GetObjectByKey(Of CustomersFrom)(_RecipeExecutionSimple.CustomersFrom.Oid)
.RecipeExecutionSimple = _RecipeExecutionSimple
.Customers = _ocur.GetObjectByKey(Of Customers)(TryCast(.Storage.CustomersFrom, Customers))
.StorageMoveType = _ocur.GetObject(_RecipeExecutionSimple.RecipeExecutionSimpleType.StorageMoveType)
End With
_StorageOutHeader_Collection.Add(_StorageOutHeader)
End If
Exit For
Next
End If
Next
'----------------------------------------------------------
'Kitárolási sorok kitárolási fejlécekzeh rendelése, StorageComputed toszingálás
'----------------------------------------------------------
For Each _StorageOutHeader As StorageOutHeader In _StorageOutHeader_Collection
For Each _RecipeFrom As RecipeFrom In _RecipeExecutionSimple.Recipe.RecipeFrom
If _RecipeFrom.Storage.Oid = _StorageOutHeader.Storage.Oid Then
Dim _StorageOutRows As New StorageOutRows(_ocur.Session)
With _StorageOutRows
.StorageOutHeader = _StorageOutHeader
.RowIndex = _StorageOutHeader.StorageOutRows.Count
.Products = _ocur.GetObjectByKey(Of Products)(_RecipeFrom.Products.Oid)
End With
Dim _StorageInRows_Collection As New XPCollection(Of StorageInRows)(PersistentCriteriaEvaluationBehavior.InTransaction, _ocur.Session, _
CriteriaOperator.Parse("StorageInHeader.Storage=? and StorageInHeader.IsEditable=False and StorageInHeader.IsStorno=False and Products=?", _
_StorageOutHeader.Storage, _ocur.GetObjectByKey(Of Products)(_RecipeFrom.Products.Oid)))
_StorageInRows_Collection.Sorting.Add(New SortProperty("StorageInHeader.CreateDate", DB.SortingDirection.Ascending))
Dim _QTT_Mod As Double = _RecipeFrom.QTT * _RecipeExecutionSimple.QTT
For Each _StorageInRows As StorageInRows In _StorageInRows_Collection
Dim _QTT_Free As Double = _StorageInRows.QTT - _StorageInRows.QTT_Out - _StorageInRows.QTT_Out_Will
If _QTT_Free > 0 Then
If _QTT_Free < _QTT_Mod Then
_StorageInRows.QTT_Out_Will += _QTT_Free
_StorageOutRows.QTT_Will += _QTT_Free
_QTT_Mod -= _QTT_Free
'------- FIFO sor beszúrása
Dim _StorageOutRowsInRows As StorageOutRowsInRows = _ocur.FindObject(Of StorageOutRowsInRows)(CriteriaOperator.Parse("StorageInRows=? and StorageOutRows=?", _
_StorageInRows, _StorageOutRows), True)
If _StorageOutRowsInRows IsNot Nothing Then
_StorageOutRowsInRows.QTT += _QTT_Free
Else
_StorageOutRowsInRows = New StorageOutRowsInRows(_ocur.Session)
_StorageOutRowsInRows.StorageInRows = _StorageInRows
_StorageOutRowsInRows.StorageOutRows = _StorageOutRows
_StorageOutRowsInRows.QTT = _QTT_Free
End If
Else
_StorageInRows.QTT_Out_Will += _QTT_Mod
_StorageOutRows.QTT_Will += _QTT_Mod
'------- FIFO sor beszúrása
Dim _StorageOutRowsInRows As StorageOutRowsInRows = _ocur.FindObject(Of StorageOutRowsInRows)(CriteriaOperator.Parse("StorageInRows=? and StorageOutRows=?", _
_StorageInRows, _StorageOutRows), True)
If _StorageOutRowsInRows IsNot Nothing Then
_StorageOutRowsInRows.QTT += _QTT_Mod
Else
_StorageOutRowsInRows = New StorageOutRowsInRows(_ocur.Session)
_StorageOutRowsInRows.StorageInRows = _StorageInRows
_StorageOutRowsInRows.StorageOutRows = _StorageOutRows
_StorageOutRowsInRows.QTT = _QTT_Mod
End If
Exit For
End If
End If
Next
Dim _StorageComputed As StorageComputed = _ocur.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Storage=? and Products=?", _
_StorageOutHeader.Storage, _ocur.GetObjectByKey(Of Products)(_RecipeFrom.Products.Oid)), True)
Dim _QTT_ReservedOut As Double = _StorageComputed.QTTReservedOut
Dim _QTT_Will_Out As Double = 0
Dim _StorageOutRows_Collection_R As New XPCollection(Of StorageOutRows)(PersistentCriteriaEvaluationBehavior.InTransaction, _ocur.Session, _
CriteriaOperator.Parse("QTT_Will>0 and StorageOutHeader.Storage=? and Products=?", _StorageOutHeader.Storage, _ocur.GetObjectByKey(Of Products)(_RecipeFrom.Products.Oid)))
For Each _StorageOutRows_R In _StorageOutRows_Collection_R
_QTT_Will_Out += _StorageOutRows_R.QTT_Will
Next
_StorageComputed.QTTFree = _StorageComputed.QTTFree - (_QTT_Will_Out - _QTT_ReservedOut)
_StorageComputed.QTTReservedOut = _QTT_Will_Out
End If
Next
Next
'----------------------------------------------------------
'Kitárolás(ok) véglegesítése, mozgástábla, StorageComputed baszogatás
'----------------------------------------------------------
For Each _StorageOutHeader As StorageOutHeader In _StorageOutHeader_Collection
_StorageOutHeader.IsEditable = False
_StorageOutHeader.IsFinalized = True
For Each _StorageOutRows As StorageOutRows In _StorageOutHeader.StorageOutRows
Dim _StorageOutRowsInRows_Collection As New XPCollection(Of StorageOutRowsInRows)(PersistentCriteriaEvaluationBehavior.InTransaction, _ocur.Session, _
CriteriaOperator.Parse("StorageOutRows=?", _StorageOutRows))
For Each _StorageOutRowsInRows In _StorageOutRowsInRows_Collection
If _StorageOutRowsInRows.QTT > 0 Then
Dim _StorageMoveEvents_Collection As New XPCollection(Of StorageMoveEvents)(PersistentCriteriaEvaluationBehavior.InTransaction, _ocur.Session, _
CriteriaOperator.Parse("StorageInRows=?", _StorageOutRowsInRows.StorageInRows))
_StorageMoveEvents_Collection.Sorting.Add(New SortProperty("ObjectCreated", DB.SortingDirection.Descending))
_StorageOutRowsInRows.StorageInRows.QTT_Out += _StorageOutRowsInRows.QTT
_StorageOutRowsInRows.StorageInRows.QTT_Out_Will -= _StorageOutRowsInRows.QTT
Dim _StorageMoveEvents As New StorageMoveEvents(_ocur.Session)
_StorageMoveEvents.StorageInRows = _StorageOutRowsInRows.StorageInRows
_StorageMoveEvents.StorageOutRows = _StorageOutRowsInRows.StorageOutRows
If _StorageMoveEvents_Collection.Count > 0 Then
_StorageMoveEvents.QTT_Free_Before = _StorageMoveEvents_Collection(0).QTT_Free_After
Else
_StorageMoveEvents.QTT_Free_Before = 0
End If
_StorageMoveEvents.QTT = (-1) * _StorageOutRowsInRows.QTT
_StorageMoveEvents.QTT_Free_After = _StorageMoveEvents.QTT_Free_Before + _StorageMoveEvents.QTT
_StorageMoveEvents.MoveEventsType = eMoveEventsType.StorageOutFinal
_StorageMoveEvents.ExecutionDate = _StorageOutRowsInRows.StorageOutRows.StorageOutHeader.CreateDate
End If
Next
_StorageOutRows.QTT += _StorageOutRows.QTT_Will
Dim _StorageComputed As StorageComputed = _ocur.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Products=? and Storage=?", _
_StorageOutRows.Products, _StorageOutRows.StorageOutHeader.Storage), True)
_StorageComputed.QTTReservedOut -= _StorageOutRows.QTT_Will
_StorageOutRows.QTT_Will = 0
Next
Next
'----------------------------------------------------------
'Betárolás raktár(ak)ba
'----------------------------------------------------------
Dim _StorageInHeader_Collection As New ArrayList
For Each _RecipeTo As RecipeTo In _RecipeExecutionSimple.Recipe.RecipeTo
If _StorageInHeader_Collection.Count = 0 Then
Dim _StorageInHeader As New StorageInHeader(_ocur.Session)
With _StorageInHeader
.Storage = _ocur.GetObjectByKey(Of Storage)(_RecipeTo.Storage.Oid)
.RecipeExecutionSimple = _RecipeExecutionSimple
.IsEditable = False
.StorageMoveType = _ocur.GetObject(_RecipeExecutionSimple.RecipeExecutionSimpleType.StorageMoveType)
End With
_StorageInHeader_Collection.Add(_StorageInHeader)
Else
For Each _StorageInHeaderExist As StorageInHeader In _StorageInHeader_Collection
Dim _NewStorage As Boolean = False
If _StorageInHeaderExist.Storage.Oid <> _RecipeTo.Storage.Oid Then
_NewStorage = True
End If
If _NewStorage Then
Dim _StorageInHeader As New StorageInHeader(_ocur.Session)
With _StorageInHeader
.Storage = _onew.GetObjectByKey(Of Storage)(_RecipeTo.Storage.Oid)
.RecipeExecutionSimple = _RecipeExecutionSimple
.IsEditable = False
.StorageMoveType = _ocur.GetObject(_RecipeExecutionSimple.RecipeExecutionSimpleType.StorageMoveType)
End With
_StorageInHeader_Collection.Add(_StorageInHeader)
Exit For
End If
Next
End If
Next
For Each _RecipeTo As RecipeTo In _RecipeExecutionSimple.Recipe.RecipeTo
For Each _StorageInHeader As StorageInHeader In _StorageInHeader_Collection
If _RecipeTo.Storage.Oid = _StorageInHeader.Storage.Oid Then
Dim _StorageInRows As New StorageInRows(_ocur.Session)
With _StorageInRows
.StorageInHeader = _StorageInHeader
.Products = _RecipeTo.Products
.QTT_Will = _RecipeTo.QTT * _RecipeExecutionSimple.QTT
.RowIndex = _StorageInHeader.StorageInRows.Count
.AveragePriceInHUF = _RecipeTo.ListPriceHUF
End With
Dim _StorageComputed As StorageComputed = _ocur.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Products=? and Storage=?", _
_RecipeTo.Products, _StorageInHeader.Storage))
If _StorageComputed Is Nothing Then
_StorageComputed = New StorageComputed(_ocur.Session)
With _StorageComputed
.Storage = _StorageInHeader.Storage
.Products = _RecipeTo.Products
.QTTReservedIn = _RecipeTo.QTT * _RecipeExecutionSimple.QTT
End With
Else
_StorageComputed.QTTReservedIn += _RecipeTo.QTT * _RecipeExecutionSimple.QTT
End If
End If
Next
Next
'----------------------------------------------------------
'Betárolás(ok) véglegeítése
'----------------------------------------------------------
For Each _StorageInHeader As StorageInHeader In _StorageInHeader_Collection
_StorageInHeader.IsEditable = False
_StorageInHeader.IsFinalized = True
For Each _StorageInRows As StorageInRows In _StorageInHeader.StorageInRows
Dim _StorageComputed As StorageComputed = _ocur.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Products=? and Storage=?", _
_ocur.GetObject(_StorageInRows.Products), _ocur.GetObject(_StorageInHeader.Storage)))
Dim _StorageMoveEvents As New StorageMoveEvents(_ocur.Session)
If _StorageInRows.QTT_Will > 0 Then
_StorageInRows.QTT = _StorageInRows.QTT_Will
_StorageComputed.QTTFree += _StorageInRows.QTT_Will
_StorageComputed.QTTReservedIn -= _StorageInRows.QTT_Will
_StorageMoveEvents.StorageInRows = _ocur.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
Next
Next
_ocur.CommitChanges()
'----------------------------------------------------------
'Nyomtatványok
'----------------------------------------------------------
For Each _StorageOutHeader As StorageOutHeader In _StorageOutHeader_Collection
Dim _ReportData As ReportData = _onew.FindObject(Of ReportData)(CriteriaOperator.Parse("Oid=?", _StorageOutHeader.Storage.ReportOut.Oid), True)
If _ReportData IsNot Nothing Then
Frame.GetController(Of Reports.ReportServiceController).ShowPreview(_ReportData, CriteriaOperator.Parse("StorageOutRows.StorageOutHeader.DocumentNumber=?", _StorageOutHeader.DocumentNumber), True)
End If
Next
For Each _StorageInHeader As StorageInHeader In _StorageInHeader_Collection
Dim _ReportData As ReportData = _onew.FindObject(Of ReportData)(CriteriaOperator.Parse("Oid=?", _StorageInHeader.Storage.ReportIn.Oid), True)
If _ReportData IsNot Nothing Then
Frame.GetController(Of Reports.ReportServiceController).ShowPreview(_ReportData, CriteriaOperator.Parse("StorageInHeader.DocumentNumber =?", _StorageInHeader.DocumentNumber), True)
End If
Next
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 aRecipeExecutionTo_CustomizePopupWindowParams(sender As Object, e As CustomizePopupWindowParamsEventArgs) Handles aRecipeExecutionTo.CustomizePopupWindowParams
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _RecipeExecutionSimple As RecipeExecutionSimple = TryCast(View.SelectedObjects(0), RecipeExecutionSimple)
Dim _CS As CollectionSource = New CollectionSource(_onew, GetType(RecipeExecutionSimplePopupTo))
_RecipeExecutionTo_Collection.Clear()
Dim _RecipeExecutionSimplePopupTo As RecipeExecutionSimplePopupTo
For Each _RecipeTo In _RecipeExecutionSimple.Recipe.RecipeTo
_RecipeExecutionSimplePopupTo = _onew.CreateObject(Of RecipeExecutionSimplePopupTo)()
_RecipeExecutionSimplePopupTo.RecipeTo = _onew.GetObject(_RecipeTo)
_RecipeExecutionSimplePopupTo.StorageComputed = _onew.FindObject(Of StorageComputed) _
(CriteriaOperator.Parse("Products=? And Storage=?", _onew.GetObject(_RecipeTo.Products), _onew.GetObject(_RecipeTo.Storage)))
_RecipeExecutionSimplePopupTo.QTTNeed = _RecipeExecutionSimple.QTT * _RecipeTo.QTT
_RecipeExecutionSimplePopupTo.QTTDifferent = _RecipeExecutionSimplePopupTo.StorageComputed.QTTFree - _RecipeExecutionSimplePopupTo.QTTNeed
If _RecipeExecutionSimplePopupTo.QTTDifferent < 0 Then
_VaildData = False
End If
_RecipeExecutionTo_Collection.Add(_RecipeExecutionSimplePopupTo)
_CS.Add(_RecipeExecutionSimplePopupTo)
Next
e.View = Application.CreateListView("RecipeExecutionSimplePopupTo_ListView", _CS, False)
End Sub
Private Sub aRecipeExecutionTo_Execute(sender As Object, e As PopupWindowShowActionExecuteEventArgs) Handles aRecipeExecutionTo.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 _VaildData = False Then Throw New UserFriendlyException("Nem kivitelezhetõ a gyártás, mert egy vagy több alapanyag nem áll rendelkezésre!")
'--==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
Dim _RecipeExecutionSimple As RecipeExecutionSimple = TryCast(View.SelectedObjects(0), RecipeExecutionSimple)
'----------------------------------------------------------
'Raktárak feltérképezése, kitárolási fejléc(ek) összerakása
'----------------------------------------------------------
Dim _StorageOutHeader_Collection As New ArrayList '<== Kitároláso fejlécEK kollekciója, annyi kitárolási fejléc, AHÁNY KÜLÖNBÖZÕ raktár van!!!
For Each _RecipeTo As RecipeTo In _RecipeExecutionSimple.Recipe.RecipeTo
If _StorageOutHeader_Collection.Count = 0 Then
Dim _StorageOutHeader As New StorageOutHeader(_ocur.Session)
With _StorageOutHeader
.Storage = _ocur.GetObjectByKey(Of Storage)(_RecipeTo.Storage.Oid)
.CustomersFrom = _ocur.GetObjectByKey(Of CustomersFrom)(_RecipeExecutionSimple.CustomersFrom.Oid)
.RecipeExecutionSimple = _RecipeExecutionSimple
.Customers = _ocur.GetObjectByKey(Of Customers)(TryCast(.Storage.CustomersFrom, Customers).Oid)
.StorageMoveType = _ocur.GetObject(_RecipeExecutionSimple.RecipeExecutionSimpleType.StorageMoveType)
End With
_StorageOutHeader_Collection.Add(_StorageOutHeader)
Else
For Each _StorageOutHeaderExist As StorageOutHeader In _StorageOutHeader_Collection
Dim _NewStorage As Boolean = False
If _StorageOutHeaderExist.Storage.Oid <> _RecipeTo.Storage.Oid Then
_NewStorage = True
End If
If _NewStorage Then
Dim _StorageOutHeader As New StorageOutHeader(_ocur.Session)
With _StorageOutHeader
.Storage = _ocur.GetObjectByKey(Of Storage)(_RecipeTo.Storage.Oid)
.Customers = _ocur.GetObjectByKey(Of CustomersFrom)(_RecipeExecutionSimple.CustomersFrom.Oid)
.RecipeExecutionSimple = _RecipeExecutionSimple
.Customers = _ocur.GetObjectByKey(Of Customers)(TryCast(.Storage.CustomersFrom, Customers))
.StorageMoveType = _ocur.GetObject(_RecipeExecutionSimple.RecipeExecutionSimpleType.StorageMoveType)
End With
_StorageOutHeader_Collection.Add(_StorageOutHeader)
End If
Exit For
Next
End If
Next
'----------------------------------------------------------
'Kitárolási sorok kitárolási fejlécekzeh rendelése, StorageComputed toszingálás
'----------------------------------------------------------
For Each _StorageOutHeader As StorageOutHeader In _StorageOutHeader_Collection
For Each _RecipeTo As RecipeTo In _RecipeExecutionSimple.Recipe.RecipeTo
If _RecipeTo.Storage.Oid = _StorageOutHeader.Storage.Oid Then
Dim _StorageOutRows As New StorageOutRows(_ocur.Session)
With _StorageOutRows
.StorageOutHeader = _StorageOutHeader
.RowIndex = _StorageOutHeader.StorageOutRows.Count
.Products = _ocur.GetObjectByKey(Of Products)(_RecipeTo.Products.Oid)
End With
Dim _StorageInRows_Collection As New XPCollection(Of StorageInRows)(PersistentCriteriaEvaluationBehavior.InTransaction, _ocur.Session, _
CriteriaOperator.Parse("StorageInHeader.Storage=? and StorageInHeader.IsEditable=False and StorageInHeader.IsStorno=False and Products=?", _
_StorageOutHeader.Storage, _ocur.GetObjectByKey(Of Products)(_RecipeTo.Products.Oid)))
_StorageInRows_Collection.Sorting.Add(New SortProperty("StorageInHeader.CreateDate", DB.SortingDirection.Ascending))
Dim _QTT_Mod As Double = _RecipeTo.QTT * _RecipeExecutionSimple.QTT
For Each _StorageInRows As StorageInRows In _StorageInRows_Collection
Dim _QTT_Free As Double = _StorageInRows.QTT - _StorageInRows.QTT_Out - _StorageInRows.QTT_Out_Will
If _QTT_Free > 0 Then
If _QTT_Free < _QTT_Mod Then
_StorageInRows.QTT_Out_Will += _QTT_Free
_StorageOutRows.QTT_Will += _QTT_Free
_QTT_Mod -= _QTT_Free
'------- FIFO sor beszúrása
Dim _StorageOutRowsInRows As StorageOutRowsInRows = _ocur.FindObject(Of StorageOutRowsInRows)(CriteriaOperator.Parse("StorageInRows=? and StorageOutRows=?", _
_StorageInRows, _StorageOutRows), True)
If _StorageOutRowsInRows IsNot Nothing Then
_StorageOutRowsInRows.QTT += _QTT_Free
Else
_StorageOutRowsInRows = New StorageOutRowsInRows(_ocur.Session)
_StorageOutRowsInRows.StorageInRows = _StorageInRows
_StorageOutRowsInRows.StorageOutRows = _StorageOutRows
_StorageOutRowsInRows.QTT = _QTT_Free
End If
Else
_StorageInRows.QTT_Out_Will += _QTT_Mod
_StorageOutRows.QTT_Will += _QTT_Mod
'------- FIFO sor beszúrása
Dim _StorageOutRowsInRows As StorageOutRowsInRows = _ocur.FindObject(Of StorageOutRowsInRows)(CriteriaOperator.Parse("StorageInRows=? and StorageOutRows=?", _
_StorageInRows, _StorageOutRows), True)
If _StorageOutRowsInRows IsNot Nothing Then
_StorageOutRowsInRows.QTT += _QTT_Mod
Else
_StorageOutRowsInRows = New StorageOutRowsInRows(_ocur.Session)
_StorageOutRowsInRows.StorageInRows = _StorageInRows
_StorageOutRowsInRows.StorageOutRows = _StorageOutRows
_StorageOutRowsInRows.QTT = _QTT_Mod
End If
Exit For
End If
End If
Next
Dim _StorageComputed As StorageComputed = _ocur.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Storage=? and Products=?", _
_StorageOutHeader.Storage, _ocur.GetObjectByKey(Of Products)(_RecipeTo.Products.Oid)), True)
Dim _QTT_ReservedOut As Double = _StorageComputed.QTTReservedOut
Dim _QTT_Will_Out As Double = 0
Dim _StorageOutRows_Collection_R As New XPCollection(Of StorageOutRows)(PersistentCriteriaEvaluationBehavior.InTransaction, _ocur.Session, _
CriteriaOperator.Parse("QTT_Will>0 and StorageOutHeader.Storage=? and Products=?", _StorageOutHeader.Storage, _ocur.GetObjectByKey(Of Products)(_RecipeTo.Products.Oid)))
For Each _StorageOutRows_R In _StorageOutRows_Collection_R
_QTT_Will_Out += _StorageOutRows_R.QTT_Will
Next
_StorageComputed.QTTFree = _StorageComputed.QTTFree - (_QTT_Will_Out - _QTT_ReservedOut)
_StorageComputed.QTTReservedOut = _QTT_Will_Out
End If
Next
Next
'----------------------------------------------------------
'Kitárolás(ok) véglegesítése, mozgástábla, StorageComputed baszogatás
'----------------------------------------------------------
For Each _StorageOutHeader As StorageOutHeader In _StorageOutHeader_Collection
_StorageOutHeader.IsEditable = False
_StorageOutHeader.IsFinalized = True
For Each _StorageOutRows As StorageOutRows In _StorageOutHeader.StorageOutRows
Dim _StorageOutRowsInRows_Collection As New XPCollection(Of StorageOutRowsInRows)(PersistentCriteriaEvaluationBehavior.InTransaction, _ocur.Session, _
CriteriaOperator.Parse("StorageOutRows=?", _StorageOutRows))
For Each _StorageOutRowsInRows In _StorageOutRowsInRows_Collection
If _StorageOutRowsInRows.QTT > 0 Then
Dim _StorageMoveEvents_Collection As New XPCollection(Of StorageMoveEvents)(PersistentCriteriaEvaluationBehavior.InTransaction, _ocur.Session, _
CriteriaOperator.Parse("StorageInRows=?", _StorageOutRowsInRows.StorageInRows))
_StorageMoveEvents_Collection.Sorting.Add(New SortProperty("ObjectCreated", DB.SortingDirection.Descending))
_StorageOutRowsInRows.StorageInRows.QTT_Out += _StorageOutRowsInRows.QTT
_StorageOutRowsInRows.StorageInRows.QTT_Out_Will -= _StorageOutRowsInRows.QTT
Dim _StorageMoveEvents As New StorageMoveEvents(_ocur.Session)
_StorageMoveEvents.StorageInRows = _StorageOutRowsInRows.StorageInRows
_StorageMoveEvents.StorageOutRows = _StorageOutRowsInRows.StorageOutRows
If _StorageMoveEvents_Collection.Count > 0 Then
_StorageMoveEvents.QTT_Free_Before = _StorageMoveEvents_Collection(0).QTT_Free_After
Else
_StorageMoveEvents.QTT_Free_Before = 0
End If
_StorageMoveEvents.QTT = (-1) * _StorageOutRowsInRows.QTT
_StorageMoveEvents.QTT_Free_After = _StorageMoveEvents.QTT_Free_Before + _StorageMoveEvents.QTT
_StorageMoveEvents.MoveEventsType = eMoveEventsType.StorageOutFinal
_StorageMoveEvents.ExecutionDate = _StorageOutRowsInRows.StorageOutRows.StorageOutHeader.CreateDate
End If
Next
_StorageOutRows.QTT += _StorageOutRows.QTT_Will
Dim _StorageComputed As StorageComputed = _ocur.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Products=? and Storage=?", _
_StorageOutRows.Products, _StorageOutRows.StorageOutHeader.Storage), True)
_StorageComputed.QTTReservedOut -= _StorageOutRows.QTT_Will
_StorageOutRows.QTT_Will = 0
Next
Next
'----------------------------------------------------------
'Betárolás raktár(ak)ba
'----------------------------------------------------------
Dim _StorageInHeader_Collection As New ArrayList
For Each _RecipeFrom As RecipeFrom In _RecipeExecutionSimple.Recipe.RecipeFrom
If _StorageInHeader_Collection.Count = 0 Then
Dim _StorageInHeader As New StorageInHeader(_ocur.Session)
With _StorageInHeader
.Storage = _ocur.GetObjectByKey(Of Storage)(_RecipeFrom.Storage.Oid)
.RecipeExecutionSimple = _RecipeExecutionSimple
.IsEditable = False
.StorageMoveType = _ocur.GetObject(_RecipeExecutionSimple.RecipeExecutionSimpleType.StorageMoveType)
End With
_StorageInHeader_Collection.Add(_StorageInHeader)
Else
For Each _StorageInHeaderExist As StorageInHeader In _StorageInHeader_Collection
Dim _NewStorage As Boolean = False
If _StorageInHeaderExist.Storage.Oid <> _RecipeFrom.Storage.Oid Then
_NewStorage = True
End If
If _NewStorage Then
Dim _StorageInHeader As New StorageInHeader(_ocur.Session)
With _StorageInHeader
.Storage = _onew.GetObjectByKey(Of Storage)(_RecipeFrom.Storage.Oid)
.RecipeExecutionSimple = _RecipeExecutionSimple
.IsEditable = False
.StorageMoveType = _ocur.GetObject(_RecipeExecutionSimple.RecipeExecutionSimpleType.StorageMoveType)
End With
_StorageInHeader_Collection.Add(_StorageInHeader)
Exit For
End If
Next
End If
Next
For Each _RecipeFrom As RecipeFrom In _RecipeExecutionSimple.Recipe.RecipeFrom
For Each _StorageInHeader As StorageInHeader In _StorageInHeader_Collection
If _RecipeFrom.Storage.Oid = _StorageInHeader.Storage.Oid Then
Dim _StorageInRows As New StorageInRows(_ocur.Session)
With _StorageInRows
.StorageInHeader = _StorageInHeader
.Products = _RecipeFrom.Products
.QTT_Will = _RecipeFrom.QTT * _RecipeExecutionSimple.QTT
.RowIndex = _StorageInHeader.StorageInRows.Count
.AveragePriceInHUF = _RecipeFrom.ListPriceHUF
End With
Dim _StorageComputed As StorageComputed = _ocur.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Products=? and Storage=?", _
_RecipeFrom.Products, _StorageInHeader.Storage))
If _StorageComputed Is Nothing Then
_StorageComputed = New StorageComputed(_ocur.Session)
With _StorageComputed
.Storage = _StorageInHeader.Storage
.Products = _RecipeFrom.Products
.QTTReservedIn = _RecipeFrom.QTT * _RecipeExecutionSimple.QTT
End With
Else
_StorageComputed.QTTReservedIn += _RecipeFrom.QTT * _RecipeExecutionSimple.QTT
End If
End If
Next
Next
'----------------------------------------------------------
'Betárolás(ok) véglegeítése
'----------------------------------------------------------
For Each _StorageInHeader As StorageInHeader In _StorageInHeader_Collection
_StorageInHeader.IsEditable = False
_StorageInHeader.IsFinalized = True
For Each _StorageInRows As StorageInRows In _StorageInHeader.StorageInRows
Dim _StorageComputed As StorageComputed = _ocur.FindObject(Of StorageComputed)(CriteriaOperator.Parse("Products=? and Storage=?", _
_ocur.GetObject(_StorageInRows.Products), _ocur.GetObject(_StorageInHeader.Storage)))
Dim _StorageMoveEvents As New StorageMoveEvents(_ocur.Session)
If _StorageInRows.QTT_Will > 0 Then
_StorageInRows.QTT = _StorageInRows.QTT_Will
_StorageComputed.QTTFree += _StorageInRows.QTT_Will
_StorageComputed.QTTReservedIn -= _StorageInRows.QTT_Will
_StorageMoveEvents.StorageInRows = _ocur.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
Next
Next
_ocur.CommitChanges()
'----------------------------------------------------------
'Nyomtatványok
'----------------------------------------------------------
For Each _StorageOutHeader As StorageOutHeader In _StorageOutHeader_Collection
Dim _ReportData As ReportData = _onew.FindObject(Of ReportData)(CriteriaOperator.Parse("Oid=?", _StorageOutHeader.Storage.ReportOut.Oid), True)
If _ReportData IsNot Nothing Then
Frame.GetController(Of Reports.ReportServiceController).ShowPreview(_ReportData, CriteriaOperator.Parse("StorageOutRows.StorageOutHeader.DocumentNumber=?", _StorageOutHeader.DocumentNumber), True)
End If
Next
For Each _StorageInHeader As StorageInHeader In _StorageInHeader_Collection
Dim _ReportData As ReportData = _onew.FindObject(Of ReportData)(CriteriaOperator.Parse("Oid=?", _StorageInHeader.Storage.ReportIn.Oid), True)
If _ReportData IsNot Nothing Then
Frame.GetController(Of Reports.ReportServiceController).ShowPreview(_ReportData, CriteriaOperator.Parse("StorageInHeader.DocumentNumber =?", _StorageInHeader.DocumentNumber), True)
End If
Next
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
End Class