Files
Nuvolar/Nuvolar.Module/BusinessObjects/Business/BusinessTransactions/Invoice/InvoiceRowsPivotVC.vb
T
2017-03-08 11:21:27 +01:00

205 lines
10 KiB
VB.net

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
Imports DevExpress.Data.Filtering
Imports System.Linq
Imports DevExpress.Persistent.BaseImpl
Imports System.Globalization
Public Class InvoiceRowsPivotVC
Inherits DevExpress.ExpressApp.ViewController
Public Event InitWork(ByVal _Minimum As Long, ByVal _Step As Long, ByVal _Maximum As Long)
Public Event InitWork2(ByVal _Minimum2 As Long, ByVal _Step2 As Long, ByVal _Maximum2 As Long)
Public Event DoWork()
Public Event DoWork2()
Public Event FinalWork
Public Sub New()
MyBase.New()
'This call is required by the Component Designer.
InitializeComponent()
RegisterActions(components)
End Sub
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
Dim _User As User = _ocur.GetObjectByKey(Of User)(_ocur.GetKeyValue(SecuritySystem.CurrentUser))
If View.Id = "InvoiceRowsPivot_ListView_UserEnable" Then
Dim _ListView As ListView = TryCast(View, ListView)
If _ListView IsNot Nothing Then
Dim _InvoiceRowsPivot As InvoiceRowsPivot
Dim _Criteria As String = ""
For Each _InvoiceRowsPivot In _ListView.CollectionSource.List
Dim _InvoiceRowsPivotUser As InvoiceRowsPivotUser
For Each _InvoiceRowsPivotUser In _InvoiceRowsPivot.InvoiceRowsPivotUser
If _InvoiceRowsPivotUser.User.Oid.ToString = _User.Oid.ToString Then
If _Criteria = "" Then
_Criteria = "Oid in ('" & _InvoiceRowsPivot.Oid.ToString & "'"
Else
_Criteria += ", '" & _InvoiceRowsPivot.Oid.ToString & "'"
End If
Exit For
End If
Next
Next
If _Criteria = "" Then
_Criteria = "1=2"
Else
_Criteria += ")"
End If
_ListView.CollectionSource.BeginUpdateCriteria()
_ListView.CollectionSource.Criteria("ByEnabled") = CriteriaOperator.Parse(_Criteria)
_ListView.CollectionSource.EndUpdateCriteria()
End If
End If
If View.Id = "InvoiceRowsPivot_ListView_UserCreated" Then
Dim _ListView As ListView = TryCast(View, ListView)
If _ListView IsNot Nothing Then
_ListView.CollectionSource.BeginUpdateCriteria()
_ListView.CollectionSource.Criteria("ByUser") = CriteriaOperator.Parse("UserCreated=? ", _User)
_ListView.CollectionSource.EndUpdateCriteria()
End If
End If
End Sub
Private Sub aRecalculateBallanceInvoiceRows_Execute(sender As Object, e As SimpleActionExecuteEventArgs) Handles aRecalculateBallanceInvoiceRows.Execute
Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
Dim _uow As New UnitOfWork(_ocur.Session.DataLayer)
Dim _InvoiceRows As InvoiceRows
Dim _InvoiceRowsPivot As InvoiceRowsPivot = TryCast(View.SelectedObjects(0), InvoiceRowsPivot)
Dim _Rate As Double = 0
Dim _SumBallanceHUF As Double = 0
Dim _SumBallanceDEV As Double = 0
Dim _SQL As String = ""
'// Mielõtt bármi történne !!!!!
_SQL = "UPDATE InvoiceRows SET SumGrossMarginHUF=SumPriceHUF,SumGrossMarginDEV=SumPriceDEV WHERE OrderInRowsOther Is Not NULL"
Select Case GLOBAL_SQLType
Case eSQLType.MSSQL
_SQL = "UPDATE InvoiceRows SET SumGrossMarginHUF=SumPriceHUF,SumGrossMarginDEV=SumPriceDEV WHERE OrderInRowsOther Is Not NULL"
_uow.ExecuteNonQuery(_SQL)
_SQL = " UPDATE InvoiceRows t1 JOIN InvoiceHeader t2 ON t1.InvoiceHeader = t2.Oid "
_SQL += " SET t1.SumAveragePriceDEV=t1.SumAveragePriceHUF/t2.CurrencyRate,"
_SQL += " t1.SumGrossMarginDEV = t1.SumGrossMarginHUF / t2.CurrencyRate"
_SQL += " WHERE t2.CurrencyRate > 0"
_uow.ExecuteNonQuery(_SQL)
Case eSQLType.MySQL
_SQL = "UPDATE InvoiceRows SET SumGrossMarginHUF=SumPriceHUF,SumGrossMarginDEV=SumPriceDEV WHERE OrderInRowsOther Is Not NULL"
_uow.ExecuteNonQuery(_SQL)
_SQL = " UPDATE InvoiceRows t1 JOIN InvoiceHeader t2 ON t1.InvoiceHeader = t2.Oid "
_SQL += " SET t1.SumAveragePriceDEV=t1.SumAveragePriceHUF/t2.CurrencyRate,"
_SQL += " t1.SumGrossMarginDEV = t1.SumGrossMarginHUF / t2.CurrencyRate"
_SQL += " WHERE t2.CurrencyRate > 0"
_uow.ExecuteNonQuery(_SQL)
Case eSQLType.PostgreSQL
_SQL = "UPDATE ""InvoiceRows"" SET ""SumGrossMarginHUF""=""SumPriceHUF"",""SumGrossMarginDEV""=""SumPriceDEV"" WHERE ""OrderInRowsOther"" Is Not NULL"
_uow.ExecuteNonQuery(_SQL)
_SQL = " UPDATE ""InvoiceRows"" t1 JOIN ""InvoiceHeader"" t2 ON ""t1"".""InvoiceHeader"" = ""t2"".""Oid"" "
_SQL += " SET ""t1"".""SumAveragePriceDEV""=""t1"".""SumAveragePriceHUF""/""t2"".""CurrencyRate"","
_SQL += " ""t1"".""SumGrossMarginDEV"" = ""t1"".""SumGrossMarginHUF"" / ""t2"".""CurrencyRate"""
_SQL += " WHERE ""t2"".""CurrencyRate"" > 0"
_uow.ExecuteNonQuery(_SQL)
End Select
RaiseEvent InitWork(1, 1, _InvoiceRowsPivot.InvoiceRows_Table.Count)
For Each _InvoiceRows In _InvoiceRowsPivot.InvoiceRows_Table
RaiseEvent DoWork()
_Rate = 0
_SumBallanceHUF = 0
_SumBallanceDEV = 0
Dim cultures() As CultureInfo = {New CultureInfo("en-US"), _
New CultureInfo("fr-FR"), _
New CultureInfo("it-IT"), _
New CultureInfo("de-DE")}
Dim _PCIGroup As PCIGroup = _ocur.FindObject(Of PCIGroup)(CriteriaOperator.Parse("CustomersFrom=? and Customers=? and PartnerType=0 and ConnectInfo=?", _
_InvoiceRows.InvoiceHeader.CustomersFrom, _InvoiceRows.InvoiceHeader.Customers, _InvoiceRows.InvoiceHeader.ConnectInfo))
If _PCIGroup IsNot Nothing Then
If _PCIGroup.CurrencyName_Account.ShortName = "HUF" Then
If _PCIGroup.AmountHUF_Account <> 0 Then
_Rate = _PCIGroup.BallanceHUF / _PCIGroup.AmountHUF_Account
End If
Else
If _PCIGroup.AmountDEV_Account <> 0 Then
_Rate = _PCIGroup.BallanceDEV / _PCIGroup.AmountDEV_Account
End If
End If
_SumBallanceHUF = Math.Round((_Rate) * _InvoiceRows.SumPriceHUF, 0, MidpointRounding.AwayFromZero)
_SumBallanceDEV = Math.Round((_Rate) * _InvoiceRows.SumPriceDEV, 2, MidpointRounding.AwayFromZero)
_SQL = ""
Select Case GLOBAL_SQLType
Case eSQLType.MSSQL
_SQL = "update InvoiceRows set SumBallanceHUF=" & _SumBallanceHUF.ToString(New CultureInfo("en-US")) & ",SumBallanceDEV=" & _SumBallanceDEV.ToString(New CultureInfo("en-US"))
_SQL += " Where Oid='" & _InvoiceRows.Oid.ToString & "'"
Case eSQLType.MySQL
_SQL = "update InvoiceRows set SumBallanceHUF=" & _SumBallanceHUF.ToString(New CultureInfo("en-US")) & ",SumBallanceDEV=" & _SumBallanceDEV.ToString(New CultureInfo("en-US"))
_SQL += " Where Oid='" & _InvoiceRows.Oid.ToString & "'"
Case eSQLType.PostgreSQL
_SQL = "update ""InvoiceRows"" set ""SumBallanceHUF""=" & _SumBallanceHUF.ToString(New CultureInfo("en-US")) & ",""SumBallanceDEV""=" & _SumBallanceDEV.ToString(New CultureInfo("en-US"))
_SQL += " Where ""Oid""='" & _InvoiceRows.Oid.ToString & "'"
End Select
_uow.ExecuteNonQuery(_SQL)
End If
Next
RaiseEvent FinalWork
View.Refresh()
End Sub
Private Sub aSelectUsers_InvoiceRowsPivot_CustomizePopupWindowParams(sender As Object, e As CustomizePopupWindowParamsEventArgs) Handles aSelectUsers_InvoiceRowsPivot.CustomizePopupWindowParams
Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
Dim _onew As Xpo.XPObjectSpace = Application.CreateObjectSpace
Dim _CS As New CollectionSource(_onew, GetType(User))
e.View = Application.CreateListView("User_ListView_Find", _CS, False)
End Sub
Private Sub aSelectUsers_InvoiceRowsPivot_Execute(sender As Object, e As PopupWindowShowActionExecuteEventArgs) Handles aSelectUsers_InvoiceRowsPivot.Execute
Dim _InvoiceRowsPivot As InvoiceRowsPivot = TryCast(TryCast(View, ListView).CollectionSource, PropertyCollectionSource).MasterObject
Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
Dim _uow As New UnitOfWork(_ocur.Session.DataLayer)
Dim _User As User
Dim _InvoiceRowsPivotUser As InvoiceRowsPivotUser
If _InvoiceRowsPivot Is Nothing Then Exit Sub
If e.PopupWindow.View.SelectedObjects.Count > 0 Then
For Each _User In e.PopupWindow.View.SelectedObjects
_InvoiceRowsPivotUser = New InvoiceRowsPivotUser(_uow)
_InvoiceRowsPivotUser.InvoiceRowsPivot = _uow.GetObjectByKey(Of InvoiceRowsPivot)(_InvoiceRowsPivot.Oid)
_InvoiceRowsPivotUser.User = _uow.GetObjectByKey(Of User)(_User.Oid)
Next
_uow.CommitChanges()
End If
Dim nestedFrame As NestedFrame = TryCast(Frame, NestedFrame)
If nestedFrame IsNot Nothing Then
Dim parentView As View = nestedFrame.View
parentView.ObjectSpace.Refresh()
End If
End Sub
End Class