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

364 lines
16 KiB
VB.net

Imports System
Imports System.ComponentModel
Imports DevExpress.Xpo
Imports DevExpress.Data.Filtering
Imports DevExpress.ExpressApp.ConditionalAppearance
Imports DevExpress.ExpressApp
Imports DevExpress.Persistent.Base
Imports DevExpress.Persistent.BaseImpl
Imports DevExpress.Persistent.Validation
Imports System.Linq
Imports System.Linq.Expressions
Public Enum eOrderOutState
InProgress = 0
Started = 1
Closed = 2
End Enum
'-- Kimenő megrendelés ---------------------------------------------------------------------------------------------------
Public Enum eOrderOutMainType
eFromProducts = 0 'Terméket rendelünk meg
eFromInstallation = 1 'Gyártmányt rendelünk meg
eFromServices = 2 'Szolgáltatást rendelünk meg
End Enum
'<EditorStateRuleAttribute("OrderOutHeader Disable properties if !IsEditable ", "*", ViewType.DetailView, "!IsEditable", EditorState.Disabled)> _
'<EditorStateRuleAttribute("Disable CustomersOrderDocuments when is not empty", "CustomersOrderDocuments", ViewType.DetailView, "IsNull(CustomersOrderDocuments) = False", EditorState.Disabled)> _
'<EditorStateRuleAttribute("Disable Contacts when is not empty", "Contacts", ViewType.DetailView, "IsNull(Contacts) = False", EditorState.Disabled)> _
'<EditorStateRuleAttribute("Disable CustomersFrom when is not empty", "CustomersFrom", ViewType.DetailView, "IsNull(CustomersFrom) = False", EditorState.Disabled)> _
'<EditorStateRuleAttribute("Disable CustomersOrder when is not empty", "CustomersOrder", ViewType.DetailView, "IsNull(CustomersOrder) = False", EditorState.Disabled)> _
'<EditorStateRule("OrderOutHeader.DocumentNumber", "DocumentNumber", ViewType.DetailView, "1=1", EditorState.Disabled)> _
'<Appearance("OrderOutHeader all property disable", AppearanceItemType.LayoutItem, "IsEditable=False", TargetItems:="OrderOutHeader_DetailView", visibility:=Editors.ViewItemVisibility.Hide)> _
'<Appearance("OrdersOutHeader.TotalNettoHUF Hide", AppearanceItemType.ViewItem, "CurrencyName.ShortName != 'HUF'", TargetItems:="TotalNettoHUF", visibility:=Editors.ViewItemVisibility.Hide)> _
<DefaultClassOptions()> _
<NavigationItem("BusinessTransactions")> _
<Appearance("OrderOutHeader Disable properties if !IsEditable", TargetItems:="*", Criteria:="!IsEditable", Enabled:=False, Context:="DetailView")> _
<Appearance("Disable CustomersOrderDocuments when is not empty", TargetItems:="CustomersOrderDocuments", Criteria:="IsNull(CustomersOrderDocuments) = False", Enabled:=False, Context:="DetailView")> _
<Appearance("Disable Contacts when is not empty", TargetItems:="Contacts", Criteria:="IsNull(Contacts) = False", Enabled:=False, Context:="DetailView")> _
<Appearance("Disable CustomersFrom when is not empty", TargetItems:="CustomersFrom", Criteria:="IsNull(CustomersFrom) = False", Enabled:=False, Context:="DetailView")> _
<Appearance("Disable CustomersOrder when is not empty", TargetItems:="CustomersOrder", Criteria:="IsNull(CustomersOrder) = False", Enabled:=False, Context:="DetailView")> _
<Appearance("OrderOutHeader.DocumentNumber", TargetItems:="DocumentNumber", Criteria:="1=1", Enabled:=False, Context:="DetailView")> _
<Appearance("OrdersOutHeader.TotalNettoDEV Hide", AppearanceItemType.ViewItem, "CustomersOrderDocuments.CurrencyName.ShortName = 'HUF'", TargetItems:="row_ListPriceDEV", visibility:=Editors.ViewItemVisibility.Hide)> _
<Appearance("OrdersOutHeader.TotalNettoHUF Hide", AppearanceItemType.ViewItem, "CustomersOrderDocuments.CurrencyName.ShortName != 'HUF'", TargetItems:="row_ListPriceHUF", visibility:=Editors.ViewItemVisibility.Hide)> _
<Appearance("Disable ObjectCreated OrderOutHeader", AppearanceItemType.ViewItem, "1=1", TargetItems:="ObjectCreated", Enabled:=False)> _
<Appearance("Disable UserCreated OrderOutHeader", AppearanceItemType.ViewItem, "1=1", TargetItems:="UserCreated", Enabled:=False)> _
<Appearance("OrdersOutHeader row properties Hide, when IsEditable=False", AppearanceItemType.ViewItem, "IsEditable=False", TargetItems:="row_Products;row_QTT;row_ListPriceHUF;row_ListPriceDEV;row_DiscountPercent", visibility:=Editors.ViewItemVisibility.Hide)> _
Public Class OrderOutHeader
Inherits BaseObject
Private _CustomersFrom As CustomersFrom 'Saját cég
Private _CustomersOrder As CustomersOrder 'Beszállító
Private _CustomersOrderDocuments As CustomersOrderDocuments
Private _Contacts As Contacts 'Beszállító kapcsolata
Private _DocumentNumber As String 'Rendelési szám
Private _DateCreated As Date 'kiállítás dátuma
Private _DateExecution As Date 'Teljesítés dátuma
Private _ObjectCreated As Date 'Objektum keletkezésének dátuma
Private _UserCreated As User
Private _PaymentOption As PaymentOption 'Fizetési opció
Private _ShipmentOption As ShipmentOption 'Szállítási opció
Private _QualityOption As QualityOption 'Minőségi opció
Private _CurrencyName As CurrencyName 'Deviza
Private _IsEditable As Boolean = True 'Szerkeszthető vagy végleges
Private _IsStorno As Boolean = False 'Stornózott
Private _OrderOutHeader As OrderOutHeader 'Melyik rendelés helyesbítése
Private _TotalNettoHUF As Double = 0
Private _TotalNettoDEV As Double = 0
Private _Note As String ' Megjegyzés
'-- Non persistent objektumok
Private _row_Products As Products 'Termék, ami a szállítólevelen van
Private _row_QTT As Double 'Termék szállított mennyisége
Private _row_ListPriceHUF As Double 'Termék listaára HUF
Private _row_ListPriceDEV As Double 'Termék listaára DEV
Private _row_DiscountPercent As Double 'Termék ár kedvezmény %-ban
Public Sub New(ByVal session As Session)
MyBase.New(session)
End Sub
Public Overrides Sub AfterConstruction()
MyBase.AfterConstruction()
DateCreated = GetSQLTime(Session)
DateExecution = GetSQLTime(Session)
End Sub
Protected Overrides Sub OnSaving()
MyBase.OnSaving()
If String.IsNullOrEmpty(DocumentNumber) Then
DocumentNumber = CustomersOrderDocuments.NumberGenerator.GetNewNumber(CustomersOrderDocuments.NumberGenerator)
End If
If Session.IsNewObject(Me) Then
ObjectCreated = GetSQLTime(Session)
UserCreated = Session.GetObjectByKey(Of User)(Session.GetKeyValue(SecuritySystem.CurrentUser))
End If
End Sub
<VisibleInListView(False)> _
<Association("OrderOutHeader-OrderOutRows", GetType(OrderOutRows))> _
Public ReadOnly Property OrderOutRows() As XPCollection(Of OrderOutRows)
Get
Return GetCollection(Of OrderOutRows)("OrderOutRows")
End Get
End Property
<RuleRequiredField("OrderOutHeader.CustomersFrom", DefaultContexts.Save)> _
Property CustomersFrom() As CustomersFrom
Get
Return _CustomersFrom
End Get
Set(ByVal value As CustomersFrom)
SetPropertyValue("CustomersFrom", _CustomersFrom, value)
End Set
End Property
<RuleRequiredField("OrderOutHeader-CustomersOrder", DefaultContexts.Save)> _
Property CustomersOrder() As CustomersOrder
Get
Return _CustomersOrder
End Get
Set(ByVal value As CustomersOrder)
SetPropertyValue("CustomersOrder", _CustomersOrder, value)
End Set
End Property
<RuleRequiredField("OrderOutHeader.CustomersOrderDocuments", DefaultContexts.Save)>
<ImmediatePostData(True), DataSourceCriteria("CustomersOrder='@This.CustomersOrder'")>
Property CustomersOrderDocuments As CustomersOrderDocuments
Get
Return _CustomersOrderDocuments
End Get
Set(ByVal value As CustomersOrderDocuments)
SetPropertyValue("CustomersOrderDocuments", _CustomersOrderDocuments, value)
If Not Session.IsObjectsLoading And Not Session.IsObjectsSaving Then
If value IsNot Nothing Then
Me.CurrencyName = value.CurrencyName
Else
CurrencyName = Nothing
End If
End If
End Set
End Property
Property DocumentNumber() As String
Get
Return _DocumentNumber
End Get
Set(ByVal value As String)
SetPropertyValue("DocumentNumber", _DocumentNumber, value)
End Set
End Property
<RuleRequiredField("RuleRequiredField for OrderOutHeader.Contacts", DefaultContexts.Save)>
<ImmediatePostData(True), DataSourceCriteria("Customers='@This.CustomersOrder'")>
Property Contacts() As Contacts
Get
Return _Contacts
End Get
Set(ByVal value As Contacts)
SetPropertyValue("Contacts", _Contacts, value)
'If Not Session.IsObjectsLoading And Not Session.IsObjectsSaving Then
' If value IsNot Nothing Then
' Me.CustomersOrder = value.Customers
' End If
'End If
End Set
End Property
Property DateCreated() As Date
Get
Return _DateCreated
End Get
Set(ByVal value As Date)
SetPropertyValue("DateCreated", _DateCreated, value)
End Set
End Property
Property DateExecution() As Date
Get
Return _DateExecution
End Get
Set(ByVal value As Date)
SetPropertyValue("DateExecution", _DateExecution, value)
End Set
End Property
<NonCloneable> _
Property ObjectCreated() As Date
Get
Return _ObjectCreated
End Get
Set(ByVal value As Date)
SetPropertyValue("ObjectCreated", _ObjectCreated, value)
End Set
End Property
<NonCloneable> _
Property UserCreated As User
Get
Return _UserCreated
End Get
Set(value As User)
SetPropertyValue("UserCreated", _UserCreated, value)
End Set
End Property
Public Property PaymentOption() As PaymentOption
Get
Return _PaymentOption
End Get
Set(ByVal value As PaymentOption)
SetPropertyValue("PaymentOption", _PaymentOption, value)
End Set
End Property
Public Property ShipmentOption() As ShipmentOption
Get
Return _ShipmentOption
End Get
Set(ByVal value As ShipmentOption)
SetPropertyValue("ShipmentOption", _ShipmentOption, value)
End Set
End Property
Public Property QualityOption() As QualityOption
Get
Return _QualityOption
End Get
Set(ByVal value As QualityOption)
SetPropertyValue("QualityOption", _QualityOption, value)
End Set
End Property
<ImmediatePostData(True)> _
Public Property CurrencyName() As CurrencyName
Get
Return _CurrencyName
End Get
Set(ByVal value As CurrencyName)
SetPropertyValue("CurrencyName", _CurrencyName, value)
End Set
End Property
Property IsEditable() As Boolean
Get
Return _IsEditable
End Get
Set(ByVal value As Boolean)
SetPropertyValue("IsEditable", _IsEditable, value)
End Set
End Property
Property IsStorno() As Boolean
Get
Return _IsStorno
End Get
Set(ByVal value As Boolean)
SetPropertyValue("IsStorno", _IsStorno, value)
End Set
End Property
Property OrderOutHeader As OrderOutHeader
Get
Return _OrderOutHeader
End Get
Set(value As OrderOutHeader)
SetPropertyValue("OrderOutHeader", _OrderOutHeader, value)
End Set
End Property
Public Property TotalNettoHUF() As Double
Get
Return _TotalNettoHUF
End Get
Set(ByVal value As Double)
SetPropertyValue("TotalNettoHUF", _TotalNettoHUF, value)
End Set
End Property
Public Property TotalNettoDEV() As Double
Get
Return _TotalNettoDEV
End Get
Set(ByVal value As Double)
SetPropertyValue("TotalNettoDEV", _TotalNettoDEV, value)
End Set
End Property
<Size(-1)> _
Property Note() As String
Get
Return _Note
End Get
Set(ByVal value As String)
SetPropertyValue("Note", _Note, value)
End Set
End Property
' NonPersistent propertys -------------------------------
<NonPersistent()> _
<RuleRequiredField("OrderOutHeader.row_Products", "aToTable_OrderOut")> _
<VisibleInListView(False)> _
<ImmediatePostData(True)> _
Property row_Products() As Products
Get
Return _row_Products
End Get
Set(ByVal value As Products)
SetPropertyValue("row_Products", _row_Products, value)
If Not Session.IsObjectsLoading And Not Session.IsObjectsSaving Then
If value IsNot Nothing Then
Me.row_ListPriceHUF = value.ListPriceInHUF
Me.row_ListPriceDEV = value.ListPriceInDEV
End If
End If
End Set
End Property
<NonPersistent()> _
<RuleRange("OrderOutHeader._row_QTT", "aToTable_OrderOut", 0, 999999999)> _
<VisibleInListView(False)> _
Property row_QTT As Double
Get
Return _row_QTT
End Get
Set(value As Double)
SetPropertyValue("row_QTT", _row_QTT, value)
If Not Session.IsObjectsLoading And Not Session.IsObjectsSaving Then
If Me.CustomersOrder IsNot Nothing And Me.CustomersOrder.PricingIn IsNot Nothing Then
Me.row_ListPriceHUF = Me.CustomersOrder.PricingIn.GetCurrentPriceNettoHUF(Me.row_Products, value)
Me.row_ListPriceDEV = Me.CustomersOrder.PricingIn.GetCurrentPriceNettoDEV(Me.row_Products, value)
End If
End If
End Set
End Property
<NonPersistent()> _
<RuleRange("OrderOutHeader._row_ListPriceHUF", "aToTable_OrderOut", 0.0001, Double.MaxValue, TargetCriteria:="CurrencyName.ShortName='HUF'")> _
<VisibleInListView(False)> _
Property row_ListPriceHUF As Double
Get
Return _row_ListPriceHUF
End Get
Set(value As Double)
SetPropertyValue("row_ListPriceHUF", _row_ListPriceHUF, value)
End Set
End Property
<NonPersistent()> _
<RuleRange("OrderOutHeader._row_ListPriceDEV", "aToTable_OrderOut", 0.0001, Double.MaxValue, TargetCriteria:="CurrencyName.ShortName!='HUF'")> _
<VisibleInListView(False)> _
Property row_ListPriceDEV As Double
Get
Return _row_ListPriceDEV
End Get
Set(value As Double)
SetPropertyValue("row_ListPriceDEV", _row_ListPriceDEV, value)
End Set
End Property
<NonPersistent()> _
<RuleRange("OrderOutHeader._row_DiscountPercent", "aToTable_OrderOut", 0, 99)> _
<VisibleInListView(False)> _
Property row_DiscountPercent As Double
Get
Return _row_DiscountPercent
End Get
Set(value As Double)
SetPropertyValue("row_DiscountPercent", _row_DiscountPercent, value)
End Set
End Property
<VisibleInListView(False)> _
ReadOnly Property OrderInTo As XPCollection(Of OrderInTo)
Get
Return New XPCollection(Of OrderInTo)(Session, CriteriaOperator.Parse("OrderOutRows is NULL"))
End Get
End Property
<VisibleInListView(False), VisibleInLookupListView(False)> _
ReadOnly Property DeliveryNoteInRows As XPCollection(Of DeliveryNoteInRows)
Get
Return New XPCollection(Of DeliveryNoteInRows)(Session, CriteriaOperator.Parse("OrderOutRows.OrderOutHeader=?", Me))
End Get
End Property
End Class