157 lines
7.7 KiB
VB.net
157 lines
7.7 KiB
VB.net
Imports System
|
|
Imports System.Configuration
|
|
Imports DevExpress.Xpo
|
|
Imports DevExpress.Xpo.DB
|
|
Imports DevExpress.Persistent.BaseImpl
|
|
Imports SISBusiness.Module
|
|
Imports System.IO
|
|
Imports System.Windows.Forms
|
|
Imports DevExpress.Data.Filtering
|
|
Imports System.Threading
|
|
Imports System.Timers
|
|
|
|
Public Class SISService
|
|
Private _Session As DevExpress.Xpo.Session
|
|
Private _connectionstring As String
|
|
Private _instancename As String
|
|
Private _Timer As System.Timers.Timer
|
|
Private _ReconfigurePCI As String
|
|
Private _AssetsHandling As String
|
|
Private _Period As Integer
|
|
Protected Overrides Sub OnStart(ByVal args() As String)
|
|
' Add code here to start your service. This method should set things
|
|
' in motion so your service can do its work.
|
|
'EventLog1.WriteEntry("In OnStart")
|
|
_instancename = ConfigurationManager.AppSettings("InstanceName")
|
|
Diagnostics.EventLog.WriteEntry(_instancename, "SIS Business Framework service is ready for work !", EventLogEntryType.Information)
|
|
_connectionstring = ConfigurationManager.ConnectionStrings("ConnectionString").ToString
|
|
|
|
If _connectionstring <> "" Then
|
|
If _Session Is Nothing Then _Session = New Session
|
|
_Session.ConnectionString = _connectionstring
|
|
_Session.Connect()
|
|
If _Session.IsConnected Then
|
|
Diagnostics.EventLog.WriteEntry(_instancename, "Database connection is succeed ! " & _Session.ConnectionString, EventLogEntryType.Information)
|
|
_ReconfigurePCI = ConfigurationManager.AppSettings("ReconfigurePCI")
|
|
_AssetsHandling = ConfigurationManager.AppSettings("AssetsHandling")
|
|
_Period = CInt(ConfigurationManager.AppSettings("Period"))
|
|
If _Period < 1000 Then _Period = 1000
|
|
_Timer = New System.Timers.Timer(_Period)
|
|
AddHandler _Timer.Elapsed, AddressOf SISServiceFire_Timer
|
|
_Timer.Interval = _Period
|
|
_Timer.Enabled = True
|
|
Diagnostics.EventLog.WriteEntry(_instancename, "Timer period is initialized : " & _Period.ToString, EventLogEntryType.Information)
|
|
Else
|
|
Diagnostics.EventLog.WriteEntry(_instancename, "Database connection is failed ! " & _connectionstring, EventLogEntryType.Error)
|
|
End If
|
|
Else
|
|
Diagnostics.EventLog.WriteEntry(_instancename, "Database connection is failed ! " & _connectionstring, EventLogEntryType.Error)
|
|
End If
|
|
|
|
End Sub
|
|
Protected Overrides Sub OnStop()
|
|
' Add code here to perform any tear-down necessary to stop your service.
|
|
Diagnostics.EventLog.WriteEntry(_instancename, "SIS Business Framework service is stopped !", EventLogEntryType.Information)
|
|
End Sub
|
|
Public Sub New()
|
|
MyBase.New()
|
|
InitializeComponent()
|
|
Me.ServiceName = ConfigurationManager.AppSettings.Item("InstanceName")
|
|
End Sub
|
|
|
|
Sub SISServiceFire_Timer(source As Object, e As ElapsedEventArgs)
|
|
Dim _currenttime As Date = Now
|
|
On Error GoTo CheckError
|
|
_Timer.Enabled = False
|
|
|
|
'// Ide kéne tenni, hogy mit csináljon ...
|
|
If _Session IsNot Nothing Then
|
|
If _currenttime.Hour = CLng(_ReconfigurePCI.Split(":")(0)) And _
|
|
_currenttime.Minute = CLng(_ReconfigurePCI.Split(":")(1)) Then
|
|
ReconfigurePCI()
|
|
End If
|
|
End If
|
|
If _Session IsNot Nothing Then
|
|
If _currenttime.Hour = CLng(_AssetsHandling.Split(":")(0)) And _
|
|
_currenttime.Minute = CLng(_AssetsHandling.Split(":")(1)) Then
|
|
AssetsHandling()
|
|
End If
|
|
End If
|
|
|
|
_Timer.Enabled = True
|
|
|
|
Exit Sub
|
|
CheckError:
|
|
Diagnostics.EventLog.WriteEntry(_instancename, String.Format("Timer error : {0}{1}{2}", Chr(13), Chr(10), Err.Description), EventLogEntryType.Error)
|
|
Resume Next
|
|
End Sub
|
|
Private Sub ReconfigurePCI()
|
|
'// Partner pontozási info újragenerálása
|
|
|
|
Dim _uow As New UnitOfWork(_Session.DataLayer)
|
|
Dim _GLAccounts_Collection As New XPCollection(Of GLAccounts)(_uow)
|
|
Dim _GLAccounts As GLAccounts
|
|
Dim _GLRows As GLRows
|
|
Dim _InvoiceHeader As InvoiceHeader
|
|
Dim _RegistryHeader As RegistryHeader
|
|
|
|
Dim _CurrentPCIInfo As String = ""
|
|
On Error GoTo CheckError
|
|
|
|
Diagnostics.EventLog.WriteEntry(_instancename, "ReconfigurePCI is started.", EventLogEntryType.Information)
|
|
|
|
Dim _GLRows_Collection_ConnectInfo As New XPCollection(Of GLRows)(_uow, CriteriaOperator.Parse("isnull(ConnectInfo)=True"))
|
|
Diagnostics.EventLog.WriteEntry(_instancename, "ConnectInfo check -> " & _GLRows_Collection_ConnectInfo.Count.ToString, EventLogEntryType.Information)
|
|
For Each _GLRows In _GLRows_Collection_ConnectInfo
|
|
_GLRows.ConnectInfo = ""
|
|
_GLRows.Save()
|
|
Next
|
|
_uow.CommitChanges()
|
|
|
|
Diagnostics.EventLog.WriteEntry(_instancename, "GLAccounts -> " & _GLAccounts_Collection.Count.ToString, EventLogEntryType.Information)
|
|
For Each _GLAccounts In _GLAccounts_Collection
|
|
_CurrentPCIInfo = _GLAccounts.ConnectInfo
|
|
GLFunctions.ReconfigurePCI(_uow, _GLAccounts.CustomersFrom, _GLAccounts.Customers, _GLAccounts.PartnerType, _GLAccounts.ConnectInfo)
|
|
Next
|
|
|
|
Dim _GLRows_Collection As New XPCollection(Of GLRows)(_uow, CriteriaOperator.Parse("isnull(Customer)=False and PartnerType in (0,1)"))
|
|
Diagnostics.EventLog.WriteEntry(_instancename, "GLRows -> " & _GLRows_Collection.Count.ToString, EventLogEntryType.Information)
|
|
For Each _GLRows In _GLRows_Collection
|
|
_CurrentPCIInfo = _GLRows.ConnectInfo
|
|
GLFunctions.ReconfigurePCI(_uow, _GLRows.GLHeader.CustomersFrom, _GLRows.Customer, _GLRows.PartnerType, _GLRows.ConnectInfo)
|
|
Next
|
|
|
|
Dim _InvoiceHeader_Collection As New XPCollection(Of InvoiceHeader)(_uow, CriteriaOperator.Parse("isnull(Customers)=False and IsEditable=False and isnull(GLAccounts)=True"))
|
|
Diagnostics.EventLog.WriteEntry(_instancename, "InvoiceHeader -> " & _InvoiceHeader_Collection.Count.ToString, EventLogEntryType.Information)
|
|
For Each _InvoiceHeader In _InvoiceHeader_Collection
|
|
_CurrentPCIInfo = _InvoiceHeader.ConnectInfo
|
|
GLFunctions.ReconfigurePCI(_uow, _InvoiceHeader.CustomersFrom, _InvoiceHeader.Customers, 0, _InvoiceHeader.ConnectInfo)
|
|
Next
|
|
|
|
Dim _RegistryHeader_Collection As New XPCollection(Of RegistryHeader)(_uow, CriteriaOperator.Parse("RegistryAcceptState=0 and RegistryType.RegistryMainType=0 and IsEditable=False and isnull(F_GLAccounts)=True"))
|
|
Diagnostics.EventLog.WriteEntry(_instancename, "RegistryHeader -> " & _RegistryHeader_Collection.Count.ToString, EventLogEntryType.Information)
|
|
For Each _RegistryHeader In _RegistryHeader_Collection
|
|
_CurrentPCIInfo = _RegistryHeader.DocumentNumber
|
|
GLFunctions.ReconfigurePCI(_uow, _RegistryHeader.CustomersFrom, _RegistryHeader.Customers, 1, _RegistryHeader.DocumentNumber)
|
|
Next
|
|
|
|
Diagnostics.EventLog.WriteEntry(_instancename, "ReconfigurePCI is finished.", EventLogEntryType.Information)
|
|
Exit Sub
|
|
CheckError:
|
|
Diagnostics.EventLog.WriteEntry(_instancename, String.Format("ReconfigurePCI Error : {0}{1}{2}{3}{4}ConnectInfo -> {5}", Chr(13), Chr(10), Err.Description, Chr(13), Chr(10), _CurrentPCIInfo), EventLogEntryType.Error)
|
|
Resume Next
|
|
|
|
End Sub
|
|
Private Sub AssetsHandling()
|
|
On Error GoTo CheckError
|
|
|
|
Exit Sub
|
|
|
|
CheckError:
|
|
Diagnostics.EventLog.WriteEntry(_instancename, String.Format("PCI Error : {0}{1}{2}", Chr(13), Chr(10), Err.Description), EventLogEntryType.Error)
|
|
Resume Next
|
|
End Sub
|
|
|
|
|
|
End Class
|