Files
2017-03-08 11:21:27 +01:00

437 lines
16 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
Imports DevExpress.ExpressApp.ConditionalAppearance
'<EditorStateRuleAttribute("Disable LastName", "LastName", ViewType.DetailView, "IsNull(Contacts) = False", EditorState.Disabled)> _
'<EditorStateRuleAttribute("Disable FirstName", "FirstName", ViewType.DetailView, "IsNull(Contacts) = False", EditorState.Disabled)> _
'<EditorStateRuleAttribute("Disable Topic", "Topic", ViewType.DetailView, "IsNull(Contacts) = False", EditorState.Disabled)> _
'<EditorStateRuleAttribute("Disable Customers when is not empty", "Customers", ViewType.DetailView, "IsNull(Customers) = False", EditorState.Disabled)> _
'<EditorStateRuleAttribute("Disable Contacts when is not empty_1", "Contacts", ViewType.DetailView, "IsNull(Contacts) = False", EditorState.Disabled)> _
'<EditorStateRuleAttribute("Disable LeadStatus when is Qualified = 5", "LeadStatus", ViewType.DetailView, "LeadStatus='Qualified'", EditorState.Disabled)> _
<DefaultClassOptions()> _
<NavigationItem("CRM")> _
<DefaultProperty("Topic")> _
<Appearance("Hide CRM_Leads_CRM_Opportunity_ListView Tab when LeadStatus<>eLeadStatus.Qualified", AppearanceItemType.ViewItem, "LeadStatus<>5", _
TargetItems:="CRM_Opportunity", visibility:=Editors.ViewItemVisibility.Hide)> _
<Appearance("Disable LastName", TargetItems:="LastName", Criteria:="IsNull(Contacts) = False", Enabled:=False, Context:="DetailView")> _
<Appearance("Disable FirstName", TargetItems:="FirstName", Criteria:="IsNull(Contacts) = False", Enabled:=False, Context:="DetailView")> _
<Appearance("Disable Topic", TargetItems:="Topic", Criteria:="IsNull(Contacts) = False", Enabled:=False, Context:="DetailView")> _
<Appearance("Disable Customers when is not empty", TargetItems:="Customers", Criteria:="IsNull(Customers) = False", Enabled:=False, Context:="DetailView")> _
<Appearance("Disable Contacts when is not empty_1", TargetItems:="Contacts", Criteria:="IsNull(Contacts) = False", Enabled:=False, Context:="DetailView")> _
<Appearance("Disable LeadStatus when is Qualified = 5", TargetItems:="LeadStatus", Criteria:="LeadStatus='Qualified'", Enabled:=False, Context:="DetailView")> _
Public Class CRM_Leads
Inherits BaseObject
'-- Személyes adatok
Private _Topic As String ' Megjelenési név
Private _FirstName As String ' Keresztnév
Private _LastName As String ' Vezetéknév
Private _CRM_FirstMeet As CRM_FirstMeet ' Hol találkozott elõször
Private _CompanyName As String ' Cég neve
Private _JobTitle As String ' Beosztás
Private _OfficePhone As String ' Munkahelyi telefon
Private _Fax As String ' Fax
Private _MobilePhone As String ' Mobil szám
Private _HomePhone As String ' Otthoni szám
Private _OtherPhone As String ' Egyéb telefonszám
Private _WEB As String 'WEB szájt
Private _EMail As String ' Emil
'-- Részletes adatok
Private _AnnualRevenue As Double 'Forgalom
Private _NumberOfEmployees As Long 'Dolgozók száma
Private _LeadSource As eLeadSource ' Lead forrás
'-- Elsõdleges cím adatok
Private _Street1 As String 'Utca, házszám
Private _Street2 As String 'Utca házszám
Private _City As String 'Város
Private _Country As Country 'Ország
Private _State As String 'Megye, állam stb.
Private _ZIP As String 'Postai irányítószám
'-- Adminisztrációs adatok
Private _PreferredContactMethod As ePreferredContactMethod ' Kapcsolattartás módja
Private _LeadStatus As eLeadStatus ' Lead státusza
Private _HRPerson As HRPerson 'A felelõs személy, aki ezzel a LEAD-dal foglalkozik
Private _ObjectCreated As Date 'Létrehozva
Private _UserCreated As User 'Létrehozó
'-- Egyéb belsõ változók
Private _InProcess As Boolean = False
Private _Customers As Customers
Private _Contacts As Contacts
Public Sub New(ByVal session As Session)
MyBase.New(session)
End Sub
Public Overrides Sub AfterConstruction()
MyBase.AfterConstruction()
End Sub
Protected Overrides Sub OnSaving()
MyBase.OnSaving()
If Session.IsNewObject(Me) Then
ObjectCreated = GetSQLTime(Session)
UserCreated = Session.GetObjectByKey(Of User)(Session.GetKeyValue(SecuritySystem.CurrentUser))
End If
End Sub
Sub CreateTopic()
If _InProcess Then
Else
_InProcess = True
If CompanyName <> "" Then
Topic = CompanyName
End If
If FirstName <> "" And LastName <> "" Then
Topic = LastName & " " & FirstName
End If
_InProcess = False
End If
End Sub
Property Topic As String
Get
Return _Topic
End Get
Set(ByVal value As String)
SetPropertyValue("Topic", _Topic, value)
End Set
End Property
<RuleRequiredField("CRM_Leads-FirstName", DefaultContexts.Save)> _
Property FirstName As String
Get
Return _FirstName
End Get
Set(ByVal value As String)
SetPropertyValue("FirstName", _FirstName, value)
If Session.IsObjectsLoading = False And Session.IsObjectsSaving = False Then
CreateTopic()
End If
End Set
End Property
<RuleRequiredField("CRM_Leads-LastName", DefaultContexts.Save)> _
Property LastName As String
Get
Return _LastName
End Get
Set(ByVal value As String)
SetPropertyValue("LastName", _LastName, value)
If Session.IsObjectsLoading = False And Session.IsObjectsSaving = False Then
CreateTopic()
End If
End Set
End Property
<RuleRequiredField("", DefaultContexts.Save)>
<ImmediatePostData(True), DataSourceCriteria("Active=True")>
Property CRM_FirstMeet As CRM_FirstMeet
Get
Return _CRM_FirstMeet
End Get
Set(ByVal value As CRM_FirstMeet)
SetPropertyValue("CRM_FirstMeet", _CRM_FirstMeet, value)
End Set
End Property
<RuleRequiredField("", "aQualifiedLeads_Contexts")>
Property CompanyName As String
Get
Return _CompanyName
End Get
Set(ByVal value As String)
SetPropertyValue("CompanyName", _CompanyName, value)
If Session.IsObjectsLoading = False And Session.IsObjectsSaving = False Then
CreateTopic()
End If
End Set
End Property
Property JobTitle As String
Get
Return _JobTitle
End Get
Set(ByVal value As String)
SetPropertyValue("JobTitle", _JobTitle, value)
End Set
End Property
Property OfficePhone As String
Get
Return _OfficePhone
End Get
Set(ByVal value As String)
SetPropertyValue("OfficePhone", _OfficePhone, value)
End Set
End Property
Property Fax As String
Get
Return _Fax
End Get
Set(ByVal value As String)
SetPropertyValue("Fax", _Fax, value)
End Set
End Property
<RuleRequiredField("CRM_Leads-MobilePhone", "aQualifiedLeads_Contexts", TargetCriteria:="isnull(EMail)=True")>
Property MobilePhone As String
Get
Return _MobilePhone
End Get
Set(ByVal value As String)
SetPropertyValue("MobilePhone", _MobilePhone, value)
End Set
End Property
Property HomePhone As String
Get
Return _HomePhone
End Get
Set(ByVal value As String)
SetPropertyValue("HomePhone", _HomePhone, value)
End Set
End Property
Property OtherPhone As String
Get
Return _OtherPhone
End Get
Set(ByVal value As String)
SetPropertyValue("OtherPhone", _OtherPhone, value)
End Set
End Property
Property WEB As String
Get
Return _WEB
End Get
Set(ByVal value As String)
SetPropertyValue("WEB", _WEB, value)
End Set
End Property
<RuleRequiredField("CRM_Leads-EMail", "aQualifiedLeads_Contexts", TargetCriteria:="isnull(MobilePhone)=True")>
Property EMail As String
Get
Return _EMail
End Get
Set(ByVal value As String)
SetPropertyValue("EMail", _EMail, value)
End Set
End Property
Property AnnualRevenue As Double
Get
Return _AnnualRevenue
End Get
Set(ByVal value As Double)
SetPropertyValue("AnnualRevenue", _AnnualRevenue, value)
End Set
End Property
Property NumberOfEmployees As Long
Get
Return _NumberOfEmployees
End Get
Set(ByVal value As Long)
SetPropertyValue("NumberOfEmployees", _NumberOfEmployees, value)
End Set
End Property
Property LeadSource As eLeadSource
Get
Return _LeadSource
End Get
Set(ByVal value As eLeadSource)
SetPropertyValue("LeadSource", _LeadSource, value)
End Set
End Property
<RuleRequiredField("", "aQualifiedLeads_Contexts")>
Property Street1 As String
Get
Return _Street1
End Get
Set(ByVal value As String)
SetPropertyValue("Street1", _Street1, value)
End Set
End Property
Property Street2 As String
Get
Return _Street2
End Get
Set(ByVal value As String)
SetPropertyValue("Street2", _Street2, value)
End Set
End Property
<RuleRequiredField("", "aQualifiedLeads_Contexts")>
Property City As String
Get
Return _City
End Get
Set(ByVal value As String)
SetPropertyValue("City", _City, value)
End Set
End Property
<RuleRequiredField("", "aQualifiedLeads_Contexts")>
Property Country As Country
Get
Return _Country
End Get
Set(ByVal value As Country)
SetPropertyValue("Country", _Country, value)
End Set
End Property
Property State As String
Get
Return _State
End Get
Set(ByVal value As String)
SetPropertyValue("State", _State, value)
End Set
End Property
<RuleRequiredField("", "aQualifiedLeads_Contexts")>
Property ZIP As String
Get
Return _ZIP
End Get
Set(ByVal value As String)
SetPropertyValue("ZIP", _ZIP, value)
If Session.IsObjectsLoading = False And Session.IsObjectsSaving = False Then
Dim _ZIPHU As ZIPHU = Session.FindObject(Of ZIPHU)(CriteriaOperator.Parse("Zip=?", Me.ZIP))
If _ZIPHU IsNot Nothing Then
Me.Country = TryCast(Session.FindObject(Of CountryExtend)(CriteriaOperator.Parse("ShortName=?", "Magyarország")), Country)
Me.City = _ZIPHU.City
Me.State = _ZIPHU.County
Else
Me.Country = Nothing
Me.City = "Nem magyarországi irányítószám"
Me.State = "Nem magyarországi irányítószám"
End If
End If
End Set
End Property
Property PreferredContactMethod As ePreferredContactMethod
Get
Return _PreferredContactMethod
End Get
Set(ByVal value As ePreferredContactMethod)
SetPropertyValue("PreferredContactMethod", _PreferredContactMethod, value)
End Set
End Property
Property LeadStatus As eLeadStatus
Get
Return _LeadStatus
End Get
Set(ByVal value As eLeadStatus)
SetPropertyValue("LeadStatus", _LeadStatus, value)
End Set
End Property
Property HRPerson As HRPerson
Get
Return _HRPerson
End Get
Set(ByVal value As HRPerson)
SetPropertyValue("HRPerson", _HRPerson, value)
End Set
End Property
<NonCloneable>
Property ObjectCreated As Date
Get
Return _ObjectCreated
End Get
Set(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
<ImmediatePostData()>
Property Customers As Customers
Get
Return _Customers
End Get
Set(ByVal value As Customers)
SetPropertyValue("Customers", _Customers, value)
If Session.IsObjectsLoading = False And Session.IsObjectsSaving = False And Customers IsNot Nothing Then
CompanyName = Customers.FullName
WEB = Customers.WebSite
If Customers.Address1 IsNot Nothing Then
Street1 = Customers.Address1.Street
' Street2 = Customers.Address2.Street
City = Customers.Address1.City
Country = Customers.Address1.Country
State = Customers.Address1.StateProvince
ZIP = Customers.Address1.ZipPostal
'Contacts = Nothing
End If
End If
End Set
End Property
<ImmediatePostData(True), DataSourceCriteria("Customers='@This.Customers'")>
Property Contacts As Contacts
Get
Return _Contacts
End Get
Set(value As Contacts)
SetPropertyValue("Contacts", _Contacts, value)
If Session.IsObjectsLoading = False And Session.IsObjectsSaving = False And Contacts IsNot Nothing Then
LastName = Contacts.LastName
FirstName = Contacts.FirstName
Dim _PhoneNumber As PhoneNumber
For Each _PhoneNumber In Contacts.PhoneNumbers
If _PhoneNumber.PhoneType = "OfficePhone" Then
OfficePhone = _PhoneNumber.Number
End If
If _PhoneNumber.PhoneType = "Fax" Then
Fax = _PhoneNumber.Number
End If
If _PhoneNumber.PhoneType = "MobilePhone" Then
MobilePhone = _PhoneNumber.Number
End If
If _PhoneNumber.PhoneType = "HomePhone" Then
HomePhone = _PhoneNumber.Number
End If
If _PhoneNumber.PhoneType = "OtherPhone" Then
OtherPhone = _PhoneNumber.Number
End If
Next
EMail = Contacts.Email
If Contacts.Customers IsNot Nothing And Customers Is Nothing Then
Customers = Contacts.Customers
End If
End If
End Set
End Property
'-- Activities
<VisibleInListView(False)> _
<Association("CRM_Leads-CRM_Leads_Activity", GetType(CRM_Leads_Activity))> _
ReadOnly Property CRM_Leads_Activity As XPCollection(Of CRM_Leads_Activity)
Get
Return GetCollection(Of CRM_Leads_Activity)("CRM_Leads_Activity")
End Get
End Property
<VisibleInListView(False)> _
ReadOnly Property CRM_Opportunity As XPCollection(Of CRM_Opportunities)
Get
Return New XPCollection(Of CRM_Opportunities)(Session, CriteriaOperator.Parse("CRM_Leads.Oid=?", Me.Oid))
End Get
End Property
'-- Megjegyzések
<VisibleInListView(False)> _
<Association("CRM_Leads-CRMNote", GetType(CRMNote))> _
ReadOnly Property CRMNote As XPCollection(Of CRMNote)
Get
Return GetCollection(Of CRMNote)("CRMNote")
End Get
End Property
'------------ReadOnly-----------------
<Association("CRM_Leads-CRM_LeadsDocumentation", GetType(CRM_LeadsDocumentation))> _
ReadOnly Property CRM_LeadsDocumentation As XPCollection(Of CRM_LeadsDocumentation)
Get
Return GetCollection(Of CRM_LeadsDocumentation)("CRM_LeadsDocumentation")
End Get
End Property
End Class