439 lines
18 KiB
VB.net
439 lines
18 KiB
VB.net
Imports System
|
|
Imports System.ComponentModel
|
|
Imports System.Collections.Generic
|
|
Imports System.Text
|
|
Imports System.Data
|
|
|
|
Imports DevExpress.Xpo
|
|
Imports DevExpress.Xpo.DB
|
|
Imports DevExpress.Xpo.Helpers
|
|
Imports DevExpress.Data.Filtering
|
|
|
|
Imports DevExpress.ExpressApp
|
|
Imports DevExpress.Persistent.Base
|
|
Imports DevExpress.Persistent.BaseImpl
|
|
Imports DevExpress.Persistent.Validation
|
|
Imports System.Drawing
|
|
Imports DevExpress.Xpo.Metadata
|
|
Imports DevExpress.ExpressApp.ConditionalAppearance
|
|
<DefaultClassOptions()>
|
|
<NavigationItem("FinancialStock")> _
|
|
<Appearance("HIDE if BANK", AppearanceItemType.ViewItem, "LiquidAssetsType=1", TargetItems:="NumberGeneratorOut;NumberGeneratorIn;ReportData", visibility:=Editors.ViewItemVisibility.Hide)> _
|
|
<Appearance("HIDE IsRounding", AppearanceItemType.ViewItem, "LiquidAssetsType in (1,3,4,5,6,7,8)", TargetItems:="IsRounding;ChartOfAccountsPlus;ChartOfAccountsMinus", visibility:=Editors.ViewItemVisibility.Hide)> _
|
|
<Appearance("HIDE IsRounding ChartsOfAccounts", AppearanceItemType.ViewItem, "IsRounding != 'True'", TargetItems:="ChartOfAccountsPlus;ChartOfAccountsMinus", visibility:=Editors.ViewItemVisibility.Hide)> _
|
|
Public Class LiquidAssets '-- Pénzeszközök
|
|
Inherits BaseObject
|
|
Private _ShortName As String
|
|
Private _LiquidAssetsType As eLiquidAssetsType = eLiquidAssetsType.NormalCheckout
|
|
Private _Description As String
|
|
Private _CustomerFrom As CustomersFrom
|
|
Private _NumberGeneratorOut As NumberGenerator
|
|
Private _NumberGeneratorIn As NumberGenerator
|
|
Private _Active As Boolean = True
|
|
Private _ImagePicture As Image
|
|
Private _ChartOfAccounts As ChartOfAccounts
|
|
Private _CurrencyName As CurrencyName
|
|
Private _ReportData As ReportData
|
|
Private _ReportDataV2 As ReportDataV2 'V2 nyopmtatvány
|
|
Private _ReportData_Return As ReportData
|
|
Private _IsRounding As Boolean = False
|
|
Private _ChartOfAccountsPlus As ChartOfAccounts
|
|
Private _ChartOfAccountsMinus As ChartOfAccounts
|
|
Private _NoPrint As Boolean 'Nincs bizonylat nyomtatás
|
|
Private _NoDocumentNumber As Boolean 'Ne legyen sorszám automatikusa
|
|
Private _NoTimeCheck As Boolean 'Nincs dátum és sorszám ellenőrzés
|
|
Public Sub New(ByVal session As Session)
|
|
MyBase.New(session)
|
|
End Sub
|
|
Public Overrides Sub AfterConstruction()
|
|
MyBase.AfterConstruction()
|
|
NoPrint = False
|
|
NoDocumentNumber = False
|
|
NoTimeCheck = False
|
|
End Sub
|
|
|
|
<RuleRequiredField("LiquidAssets-ShortName", DefaultContexts.Save)> _
|
|
Property ShortName As String
|
|
Get
|
|
Return _ShortName
|
|
End Get
|
|
Set(ByVal value As String)
|
|
SetPropertyValue("ShortName", _ShortName, value)
|
|
End Set
|
|
End Property
|
|
<RuleRequiredField("LiquidAssets-LiquidAssetsType", DefaultContexts.Save)> _
|
|
<ImmediatePostData(True)> _
|
|
Property LiquidAssetsType As eLiquidAssetsType
|
|
Get
|
|
Return _LiquidAssetsType
|
|
End Get
|
|
Set(ByVal value As eLiquidAssetsType)
|
|
SetPropertyValue("LiquidAssetsType", _LiquidAssetsType, value)
|
|
End Set
|
|
End Property
|
|
<RuleRequiredField("LiquidAssets-Description", DefaultContexts.Save)> _
|
|
Property Description As String
|
|
Get
|
|
Return _Description
|
|
End Get
|
|
Set(ByVal value As String)
|
|
SetPropertyValue("Description", _Description, value)
|
|
End Set
|
|
End Property
|
|
<RuleRequiredField("LiquidAssets-CustomersFrom", DefaultContexts.Save)> _
|
|
Property CustomerFrom As CustomersFrom
|
|
Get
|
|
Return _CustomerFrom
|
|
End Get
|
|
Set(ByVal value As CustomersFrom)
|
|
SetPropertyValue("CustomerFrom", _CustomerFrom, value)
|
|
End Set
|
|
End Property
|
|
<RuleRequiredField("LiquidAssets-NumberGeneratorOut", DefaultContexts.Save, TargetCriteria:="LiquidAssetsType !=1")> _
|
|
Property NumberGeneratorOut As NumberGenerator
|
|
Get
|
|
Return _NumberGeneratorOut
|
|
End Get
|
|
Set(ByVal value As NumberGenerator)
|
|
SetPropertyValue("NumberGeneratorOut", _NumberGeneratorOut, value)
|
|
End Set
|
|
End Property
|
|
<RuleRequiredField("LiquidAssets-NumberGeneratorIn", DefaultContexts.Save, TargetCriteria:="LiquidAssetsType !=1")> _
|
|
Property NumberGeneratorIn As NumberGenerator
|
|
Get
|
|
Return _NumberGeneratorIn
|
|
End Get
|
|
Set(ByVal value As NumberGenerator)
|
|
SetPropertyValue("NumberGeneratorIn", _NumberGeneratorIn, value)
|
|
End Set
|
|
End Property
|
|
Property Active As Boolean
|
|
Get
|
|
Return _Active
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
SetPropertyValue("Active", _Active, value)
|
|
End Set
|
|
End Property
|
|
<ValueConverter(GetType(DevExpress.Xpo.Metadata.ImageValueConverter))> _
|
|
<Browsable(False)> _
|
|
Property ImagePicture As Image
|
|
Get
|
|
Return _ImagePicture
|
|
End Get
|
|
Set(ByVal Value As System.Drawing.Image)
|
|
If Value Is _ImagePicture Then Exit Property
|
|
_ImagePicture = Value
|
|
End Set
|
|
|
|
End Property
|
|
<Browsable(False)>
|
|
Property ChartOfAccounts() As ChartOfAccounts
|
|
Get
|
|
Return _ChartOfAccounts
|
|
End Get
|
|
Set(ByVal value As ChartOfAccounts)
|
|
SetPropertyValue("ChartOfAccounts", _ChartOfAccounts, value)
|
|
End Set
|
|
End Property
|
|
<RuleRequiredField("LiquidAssets-CurrencyName", DefaultContexts.Save)> _
|
|
Property CurrencyName() As CurrencyName
|
|
Get
|
|
Return _CurrencyName
|
|
End Get
|
|
Set(ByVal value As CurrencyName)
|
|
SetPropertyValue("CurrencyName", _CurrencyName, value)
|
|
End Set
|
|
End Property
|
|
<RuleRequiredField("LiquidAssets-ReportData", DefaultContexts.Save, TargetCriteria:="LiquidAssetsType !=1")>
|
|
Property ReportData As ReportData
|
|
Get
|
|
Return _ReportData
|
|
End Get
|
|
Set(ByVal value As ReportData)
|
|
SetPropertyValue("ReportData", _ReportData, value)
|
|
End Set
|
|
End Property
|
|
<RuleRequiredField("LiquidAssets-ReportDataV2", DefaultContexts.Save, TargetCriteria:="LiquidAssetsType !=1")>
|
|
Property ReportDataV2 As ReportDataV2
|
|
Get
|
|
Return _ReportDataV2
|
|
End Get
|
|
Set(ByVal value As ReportDataV2)
|
|
SetPropertyValue("ReportDataV2", _ReportDataV2, value)
|
|
End Set
|
|
End Property
|
|
Property ReportData_Return As ReportData
|
|
Get
|
|
Return _ReportData_Return
|
|
End Get
|
|
Set(ByVal value As ReportData)
|
|
SetPropertyValue("ReportData_Return", _ReportData_Return, value)
|
|
End Set
|
|
End Property
|
|
<RuleRequiredField("LiquidAssets-IsRounding", DefaultContexts.Save, TargetCriteria:="LiquidAssetsType in (0,2)")> _
|
|
<ImmediatePostData(True)> _
|
|
Property IsRounding As Boolean
|
|
Get
|
|
Return _IsRounding
|
|
End Get
|
|
Set(ByVal value As Boolean)
|
|
SetPropertyValue("IsRounding", _IsRounding, value)
|
|
End Set
|
|
End Property
|
|
<Browsable(False)> _
|
|
Property ChartOfAccountsPlus As ChartOfAccounts
|
|
Get
|
|
Return _ChartOfAccountsPlus
|
|
End Get
|
|
Set(ByVal value As ChartOfAccounts)
|
|
SetPropertyValue("ChartOfAccountsPlus", _ChartOfAccountsPlus, value)
|
|
End Set
|
|
End Property
|
|
<Browsable(False)> _
|
|
Property ChartOfAccountsMinus As ChartOfAccounts
|
|
Get
|
|
Return _ChartOfAccountsMinus
|
|
End Get
|
|
Set(ByVal value As ChartOfAccounts)
|
|
SetPropertyValue("ChartOfAccountsMinus", _ChartOfAccountsMinus, value)
|
|
End Set
|
|
End Property
|
|
|
|
Property NoPrint As Boolean
|
|
Get
|
|
Return _NoPrint
|
|
End Get
|
|
Set(value As Boolean)
|
|
SetPropertyValue("NoPrint", _NoPrint, value)
|
|
End Set
|
|
End Property
|
|
Property NoDocumentNumber As Boolean
|
|
Get
|
|
Return _NoDocumentNumber
|
|
End Get
|
|
Set(value As Boolean)
|
|
SetPropertyValue("NoDocumentNumber", _NoDocumentNumber, value)
|
|
End Set
|
|
End Property
|
|
Property NoTimeCheck As Boolean
|
|
Get
|
|
Return _NoTimeCheck
|
|
End Get
|
|
Set(value As Boolean)
|
|
SetPropertyValue("NoTimeCheck", _NoTimeCheck, value)
|
|
End Set
|
|
End Property
|
|
|
|
Structure GLRowsToModify_AmountDEVFIFO
|
|
Dim Oid As Guid
|
|
Dim AmountDEVFIFO As Double
|
|
End Structure
|
|
|
|
Function GetCurrencyRateFIFO(_uow As Session, _LiquidAssets As LiquidAssets, _AmountDEV As Double, _DateClose As Date, _GLRows_Out As Guid) As Double
|
|
'// Adott záródátumra kiszámolja a FIFO árfolyamot
|
|
Dim _SumAmountDev As Double = 0
|
|
Dim _SumAmountHUF As Double = 0
|
|
Dim _NewFifo As Double = 0
|
|
Dim _GLRowsToModify_ArrayList As ArrayList = New ArrayList
|
|
Dim _GLRowsToModify As GLRowsToModify_AmountDEVFIFO = New GLRowsToModify_AmountDEVFIFO
|
|
Dim _GLRows As GLRows
|
|
Dim _GLRowsFIFO As GLRowsFIFO
|
|
Dim _AmountDEVTotal As Double = _AmountDEV
|
|
Dim _GLRowsFIFOOut As GLRows = _uow.GetObjectByKey(Of GLRows)(_GLRows_Out)
|
|
|
|
Dim _GLRows_Collection As New XPCollection(Of GLRows)(PersistentCriteriaEvaluationBehavior.InTransaction, _uow, _
|
|
CriteriaOperator.Parse("LiquidAssets.Oid=? And GLHeader.IsEditable=False And InAmountDEV>0 And InAmountDEV>AmountDEVFIFO And GetDate(GLHeader.DateExecution)<?", _
|
|
_LiquidAssets.Oid, _DateClose))
|
|
_GLRows_Collection.Sorting.Add(New SortProperty("GLHeader.DateExecution", DB.SortingDirection.Ascending))
|
|
|
|
Dim _GLRowsFIFO_Collection As New XPCollection(Of GLRowsFIFO)(PersistentCriteriaEvaluationBehavior.InTransaction, _uow, CriteriaOperator.Parse("GLRowsOut.Oid=?", _GLRows_Out))
|
|
_uow.Delete(_GLRowsFIFO_Collection)
|
|
|
|
For Each _GLRows In _GLRows_Collection
|
|
_GLRowsToModify = Nothing
|
|
|
|
If (_GLRows.InAmountDEV - _GLRows.AmountDEVFIFO) >= _AmountDEV Then
|
|
|
|
'_NewFifo = _GLRows.AmountDEVFIFO + _AmountDEV
|
|
_NewFifo = _AmountDEV
|
|
|
|
_GLRowsToModify.Oid = _GLRows.Oid
|
|
_GLRowsToModify.AmountDEVFIFO = _GLRowsToModify.AmountDEVFIFO + _NewFifo
|
|
_GLRowsToModify_ArrayList.Add(_GLRowsToModify)
|
|
|
|
_SumAmountDev = _SumAmountDev + _AmountDEV
|
|
_SumAmountHUF = _SumAmountHUF + _AmountDEV * _GLRows.CurrencyRate
|
|
|
|
_AmountDEV = 0
|
|
Else
|
|
|
|
_NewFifo = _GLRows.InAmountDEV - _GLRows.AmountDEVFIFO
|
|
|
|
_GLRowsToModify.Oid = _GLRows.Oid
|
|
_GLRowsToModify.AmountDEVFIFO = _GLRowsToModify.AmountDEVFIFO + _NewFifo
|
|
_GLRowsToModify_ArrayList.Add(_GLRowsToModify)
|
|
|
|
_SumAmountDev = _SumAmountDev + _NewFifo
|
|
_SumAmountHUF = _SumAmountHUF + _NewFifo * _GLRows.CurrencyRate
|
|
|
|
_AmountDEV = _AmountDEV - _NewFifo
|
|
End If
|
|
|
|
_GLRowsFIFO = New GLRowsFIFO(_uow)
|
|
_GLRowsFIFO.GLRowsIn = _GLRows
|
|
_GLRowsFIFO.GLRowsOut = _GLRowsFIFOOut
|
|
_GLRowsFIFO.OutAmountDEV = _AmountDEVTotal
|
|
_GLRowsFIFO.InAmountDEV = _NewFifo
|
|
_GLRowsFIFO.Save()
|
|
|
|
If _AmountDEV = 0 Then
|
|
Exit For
|
|
End If
|
|
|
|
Next
|
|
|
|
For Each _GLRowsToModify In _GLRowsToModify_ArrayList
|
|
_GLRows = _uow.GetObjectByKey(Of GLRows)(_GLRowsToModify.Oid)
|
|
_GLRows.AmountDEVFIFO = _GLRows.AmountDEVFIFO + _GLRowsToModify.AmountDEVFIFO
|
|
_GLRows.Save()
|
|
Next
|
|
|
|
If _SumAmountDev = 0 Then
|
|
Return 0
|
|
Else
|
|
Return _SumAmountHUF / _SumAmountDev
|
|
End If
|
|
|
|
End Function
|
|
Function GetCurrencyRateAverage(_uow As Session, _LiquidAssets As LiquidAssets, _DateClose As Date) As Double
|
|
'// Adott záródátumra kiszámolja a Átlagár árfolyamot
|
|
Dim _GLRows_Collection As New XPCollection(Of GLRows)(PersistentCriteriaEvaluationBehavior.InTransaction, _uow, _
|
|
CriteriaOperator.Parse("LiquidAssets.Oid=? And GLHeader.IsEditable=False And GetDate(GLHeader.DateExecution)<=? and GetDate(GLHeader.DateExecution)>=? and InAmountDEV>0", _
|
|
_LiquidAssets.Oid, _DateClose, FirstDayOfYear(_DateClose)))
|
|
_GLRows_Collection.Sorting.Add(New SortProperty("GLHeader.DateExecution", DB.SortingDirection.Ascending))
|
|
Dim _SumAmountDev As Double = 0
|
|
Dim _SumAmountHUF As Double = 0
|
|
|
|
Dim _LiquidAssetsRate As LiquidAssetsRate = _uow.FindObject(Of LiquidAssetsRate)(CriteriaOperator.Parse("LiquidAssets.oid=? and GetYear(DateExecution)=?", _LiquidAssets.Oid, _DateClose.Year))
|
|
If _LiquidAssetsRate IsNot Nothing Then
|
|
_SumAmountDev = _LiquidAssetsRate.AmountDEV
|
|
_SumAmountHUF = _LiquidAssetsRate.AmountHUF
|
|
End If
|
|
|
|
For Each _GLRows As GLRows In _GLRows_Collection
|
|
Dim _GLRowsFIFO_Collection As New XPCollection(Of GLRowsFIFO)(PersistentCriteriaEvaluationBehavior.InTransaction, _uow, CriteriaOperator.Parse("GLRowsOut.Oid=?", _GLRows.Oid))
|
|
_uow.Delete(_GLRowsFIFO_Collection)
|
|
|
|
If _GLRows.OutAmountDEV <> 0 Then
|
|
_SumAmountDev = _SumAmountDev + _GLRows.OutAmountDEV
|
|
_SumAmountHUF = _SumAmountHUF + _GLRows.OutAmountHUF
|
|
Else
|
|
_SumAmountDev = _SumAmountDev + _GLRows.InAmountDEV
|
|
_SumAmountHUF = _SumAmountHUF + _GLRows.InAmountHUF
|
|
End If
|
|
Next
|
|
|
|
If _SumAmountDev = 0 Then
|
|
Return 0
|
|
Else
|
|
Return _SumAmountHUF / _SumAmountDev
|
|
End If
|
|
|
|
End Function
|
|
Function GetCurrencyRateDate(_ocur As Xpo.XPObjectSpace, _TransactionType As eTransactionType, _LiquidAssets As LiquidAssets, _DateExecution As Date) As Double
|
|
Dim _uow As New UnitOfWork(_ocur.Session.DataLayer)
|
|
Dim _Rate As Double = 0
|
|
|
|
Select Case _TransactionType
|
|
Case eTransactionType.eNormalCredit, eTransactionType.ePartnerCredit
|
|
'// Árfolyam lekérése először a pénzeszközre
|
|
Dim _CurrencyRate_Collection As XPCollection(Of CurrencyRate)
|
|
Dim _CurrencyRate As CurrencyRate
|
|
|
|
_CurrencyRate_Collection = New XPCollection(Of CurrencyRate) _
|
|
(_ocur.Session, CriteriaOperator.Parse("CurrencyName=? and LiquidAssets=? and GetDate(DateValid)<=?", _
|
|
_LiquidAssets.CurrencyName, _DateExecution.Date))
|
|
_CurrencyRate_Collection.Sorting.Add(New SortProperty("DateValid", DB.SortingDirection.Descending))
|
|
|
|
If _CurrencyRate_Collection.Count > 0 Then
|
|
For Each _CurrencyRate In _CurrencyRate_Collection
|
|
If _CurrencyRate.DateValid.Date = _DateExecution.Date Then
|
|
_Rate = _CurrencyRate.RateAverage
|
|
Exit For
|
|
End If
|
|
Exit For
|
|
Next
|
|
Else
|
|
'// MNB árfolyam lekérése
|
|
_CurrencyRate_Collection = New XPCollection(Of CurrencyRate) _
|
|
(_ocur.Session, CriteriaOperator.Parse("CurrencyName=? and IsMNB=True and GetDate(DateValid)<=?", _
|
|
_LiquidAssets.CurrencyName, _DateExecution.Date))
|
|
_CurrencyRate_Collection.Sorting.Add(New SortProperty("DateValid", DB.SortingDirection.Descending))
|
|
If _CurrencyRate_Collection.Count > 0 Then
|
|
For Each _CurrencyRate In _CurrencyRate_Collection
|
|
If _CurrencyRate.DateValid.Date = _DateExecution.Date Then
|
|
_Rate = _CurrencyRate.RateAverage
|
|
Exit For
|
|
End If
|
|
Exit For
|
|
Next
|
|
Else
|
|
Throw New Exception("*Nincs beállítva sem a pénzeszköz árfolyama sem az MNB árfolyama !")
|
|
End If
|
|
End If
|
|
|
|
Case eTransactionType.eNormalDebit, eTransactionType.ePartnerDebit
|
|
_Rate = _LiquidAssets.GetCurrencyRateAverage(_uow, _LiquidAssets, _DateExecution)
|
|
End Select
|
|
|
|
Return _Rate
|
|
End Function
|
|
'// Readonly propertyk
|
|
<Association("LiquidAssets-LiquidAssetsYear", GetType(LiquidAssetsYear)), VisibleInListView(False), VisibleInLookupListView(False)> _
|
|
ReadOnly Property LiquidAssetsYear As XPCollection(Of LiquidAssetsYear)
|
|
Get
|
|
Return GetCollection(Of LiquidAssetsYear)("LiquidAssetsYear")
|
|
End Get
|
|
End Property
|
|
<Association("LiquidAssets-LiquidAssetsRate", GetType(LiquidAssetsRate)), VisibleInListView(False), VisibleInLookupListView(False)> _
|
|
ReadOnly Property LiquidAssetsRate As XPCollection(Of LiquidAssetsRate)
|
|
Get
|
|
Return GetCollection(Of LiquidAssetsRate)("LiquidAssetsRate")
|
|
End Get
|
|
End Property
|
|
|
|
Public Function GetChartOfAccounts(_AccountYear As Long, _Mode As Long) As ChartOfAccounts
|
|
Dim _ChartOfAccounts As ChartOfAccounts = Nothing
|
|
Dim _LiquidAssetsYear As LiquidAssetsYear
|
|
Select Case _Mode
|
|
Case 0
|
|
_ChartOfAccounts = Me.ChartOfAccounts
|
|
For Each _LiquidAssetsYear In Me.LiquidAssetsYear
|
|
If _LiquidAssetsYear.AccountYear = _AccountYear Then
|
|
_ChartOfAccounts = _LiquidAssetsYear.ChartOfAccounts
|
|
Exit For
|
|
End If
|
|
Next
|
|
Case 1
|
|
_ChartOfAccounts = Me.ChartOfAccountsMinus
|
|
For Each _LiquidAssetsYear In Me.LiquidAssetsYear
|
|
If _LiquidAssetsYear.AccountYear = _AccountYear Then
|
|
_ChartOfAccounts = _LiquidAssetsYear.ChartOfAccountsMinus
|
|
Exit For
|
|
End If
|
|
Next
|
|
Case 2
|
|
_ChartOfAccounts = Me.ChartOfAccountsPlus
|
|
For Each _LiquidAssetsYear In Me.LiquidAssetsYear
|
|
If _LiquidAssetsYear.AccountYear = _AccountYear Then
|
|
_ChartOfAccounts = _LiquidAssetsYear.ChartOfAccountsPlus
|
|
Exit For
|
|
End If
|
|
Next
|
|
End Select
|
|
Return _ChartOfAccounts
|
|
End Function
|
|
|
|
End Class
|