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

135 lines
5.3 KiB
VB.net

Imports System
Imports System.ComponentModel
Imports DevExpress.Xpo
Imports DevExpress.Data.Filtering
Imports DevExpress.ExpressApp
Imports DevExpress.Persistent.Base
Imports DevExpress.Persistent.BaseImpl
Imports DevExpress.Persistent.Validation
<DefaultClassOptions(), NavigationItem(False), CreatableItem(False)> _
Public Class InvoiceFactoringRows
Inherits BaseObject
Private _InvoiceFactoringHeader As InvoiceFactoringHeader
Private _InvoiceHeader As InvoiceHeader
Private _InterestValueHUF As Double ' Faktor kamat összege
Private _CapitalValueHUF As Double ' "TÕKE" összege
Private _RiskValueHUF As Double ' Kockázat összege
Private _InterestPercentperTransactionValueHUF As Double 'Faktordíj tranzakciónként összege
Private _FeeValueHUF As Double ' Faktor díj összege
Private _DiscountInterestPercent As Double 'Diszkont kamat !!!
Private _InterestDay As Long
Public Sub New(ByVal session As Session)
MyBase.New(session)
' This constructor is used when an object is loaded from a persistent storage.
' Do not place any code here or place it only when the IsLoading property is false:
' if (!IsLoading){
' It is now OK to place your initialization code here.
' }
' or as an alternative, move your initialization code into the AfterConstruction method.
End Sub
Public Overrides Sub AfterConstruction()
MyBase.AfterConstruction()
' Place here your initialization code.
InterestValueHUF = 0
CapitalValueHUF = 0
RiskValueHUF = 0
End Sub
Protected Overrides Sub OnSaving()
MyBase.OnSaving()
If IsDeleted = False Then
RecalculateValues()
End If
End Sub
<Association("InvoiceFactoringHeader-InvoiceFactoringRows", GetType(InvoiceFactoringHeader))> _
Property InvoiceFactoringHeader As InvoiceFactoringHeader
Get
Return _InvoiceFactoringHeader
End Get
Set(value As InvoiceFactoringHeader)
SetPropertyValue("InvoiceFactoringHeader", _InvoiceFactoringHeader, value)
End Set
End Property
Property InvoiceHeader As InvoiceHeader
Get
Return _InvoiceHeader
End Get
Set(value As InvoiceHeader)
SetPropertyValue("InvoiceHeader", _InvoiceHeader, value)
End Set
End Property
Property InterestValueHUF As Double
Get
Return _InterestValueHUF
End Get
Set(value As Double)
SetPropertyValue("InterestValueHUF", _InterestValueHUF, value)
End Set
End Property
Property CapitalValueHUF As Double
Get
Return _CapitalValueHUF
End Get
Set(value As Double)
SetPropertyValue("CapitalValueHUF", _CapitalValueHUF, value)
End Set
End Property
Property RiskValueHUF As Double
Get
Return _RiskValueHUF
End Get
Set(value As Double)
SetPropertyValue("RiskValueHUF", _RiskValueHUF, value)
End Set
End Property
Property InterestPercentperTransactionValueHUF As Double
Get
Return _InterestPercentperTransactionValueHUF
End Get
Set(value As Double)
SetPropertyValue("InterestPercentperTransactionValueHUF", _InterestPercentperTransactionValueHUF, value)
End Set
End Property
Property FeeValueHUF As Double
Get
Return _FeeValueHUF
End Get
Set(value As Double)
SetPropertyValue("FeeValueHUF", _FeeValueHUF, value)
End Set
End Property
Private Sub RecalculateValues()
Dim _InterestPercent As Double = 0
If InvoiceFactoringHeader.InterestPercent > 0 Then
_InterestPercent = InvoiceFactoringHeader.InterestPercent
Else
_InterestPercent = InvoiceHeader.InvoiceFactoringParameter.InterestPercent
End If
If InvoiceHeader IsNot Nothing Then
If InvoiceHeader.InvoiceFactoringParameter IsNot Nothing Then
_InterestDay = DateDiff(DateInterval.Day, InvoiceFactoringHeader.DateExecution, _InvoiceHeader.DatePayment) + _InvoiceHeader.InvoiceFactoringParameter.GracePeriod
_DiscountInterestPercent = (360 * _InterestPercent / 100) /
(360 + (_InterestPercent / 100) * _InterestDay)
FeeValueHUF = Math.Round(((_InterestDay \ 30) + 1) * (InvoiceHeader.InvoiceFactoringParameter.InterestPercentMonth / 100) * InvoiceHeader.TotalBruttoHUF, 0, MidpointRounding.AwayFromZero)
RiskValueHUF = Math.Round(InvoiceHeader.TotalBruttoHUF * InvoiceHeader.InvoiceFactoringParameter.RiskPercent / 100, 0, MidpointRounding.AwayFromZero)
InterestPercentperTransactionValueHUF = Math.Round(InvoiceHeader.TotalBruttoHUF * InvoiceHeader.InvoiceFactoringParameter.InterestPercentperTransaction / 100, 0, MidpointRounding.AwayFromZero)
InterestValueHUF = Math.Round(((InvoiceHeader.TotalBruttoHUF - RiskValueHUF) * _InterestDay * _DiscountInterestPercent) / 360, 0, MidpointRounding.AwayFromZero)
CapitalValueHUF = Math.Round(InvoiceHeader.TotalBruttoHUF - InterestValueHUF - RiskValueHUF - FeeValueHUF - InterestPercentperTransactionValueHUF, 0, MidpointRounding.AwayFromZero)
End If
End If
End Sub
End Class