Files
Nuvolar/Nuvolar.Module.Win/BusinessObjects/Business/BusinessTransactions/Offers/OfferOut/OffersOutPrintVC.vb
T
2017-03-08 11:21:27 +01:00

210 lines
10 KiB
VB.net

Imports System
Imports System.ComponentModel
Imports System.Collections.Generic
Imports System.Diagnostics
Imports System.Text
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Actions
Imports DevExpress.Persistent.Base
Imports DevExpress.Data.Filtering
Imports DevExpress.XtraReports.UI
Imports DevExpress.XtraReports.Parameters
Imports DevExpress.ExpressApp.Reports
Imports DevExpress.Persistent.BaseImpl
Imports System.IO
Imports DevExpress.ExpressApp.Editors
Imports Gnostice.PDFOne
Imports DevExpress.ExpressApp.Utils
Public Class OffersOutPrintVC
Inherits Nuvolar.Module.OffersOutPrintVC
Private _ReportServiceController As ReportServiceController
Private _RichEditControl As RichEditControl
Public Sub New()
MyBase.New()
InitializeComponent()
RegisterActions(components)
End Sub
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
Frame.GetController(Of OffersOutPrintVC).aOfferOutSendMailDeatil.Active.SetItemValue("", False)
If View.Id = "OfferOutHeader_DetailView" Then
Frame.GetController(Of OffersOutPrintVC).aOfferOutSendMailDeatil.Active.SetItemValue("", True)
End If
If View.Id = "CRM_Opportunities_OfferOutHeader_ListView" Then
Frame.GetController(Of OffersOutPrintVC).aOfferOutSendMailDeatil.Active.SetItemValue("", True)
End If
End Sub
Protected Overrides Sub OnDeactivated()
MyBase.OnDeactivated()
If View.Id = "OfferOutHeader_DetailView" Then
Frame.GetController(Of OffersOutPrintVC).aOfferOutSendMailDeatil.Active.SetItemValue("", False)
End If
If View.Id = "CRM_Opportunities_OfferOutHeader_ListView" Then
Frame.GetController(Of OffersOutPrintVC).aOfferOutSendMailDeatil.Active.SetItemValue("", True)
End If
End Sub
Protected Overrides Sub OnViewControlsCreated()
MyBase.OnViewControlsCreated()
If View.Id = "OfferOutHeader_DetailView" Then
Dim _DetailView As DetailView = TryCast(View, DetailView)
Dim _RichEditContolViewItem As ViewItem = _DetailView.FindItem("DocumentBody")
If _RichEditContolViewItem IsNot Nothing Then
AddHandler _RichEditContolViewItem.ControlCreated, AddressOf RichEditContolViewItem_ControlCreated
End If
End If
End Sub
Private Sub RichEditContolViewItem_ControlCreated(sender As Object, e As EventArgs)
Dim _ItemControl As Object = TryCast(sender, ViewItem).Control
Dim _RichEditUserControl As RichEditUserControl = TryCast(_ItemControl, RichEditUserControl)
_RichEditControl = TryCast(_ItemControl, RichEditUserControl).RichEditControl
End Sub
Private Sub aOfferOutSendMailDeatil_Execute(sender As System.Object, e As DevExpress.ExpressApp.Actions.SimpleActionExecuteEventArgs) Handles aOfferOutSendMailDeatil.Execute
Try
Dim _ObjectSpace As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
If View.SelectedObjects.Count = 0 Then Throw New Exception("*Nincs kiválasztva egyetlen ajánlat sem!")
Dim _OfferOutHeader As OfferOutHeader = TryCast(View.SelectedObjects(0), OfferOutHeader)
If _OfferOutHeader.IsEditable = False Then
Dim _ReportData As ReportData
If Frame.GetController(Of OffersOutPrintVC).aOfferOutPrintChoice.SelectedItem Is Nothing Then
Throw New Exception("*Nincs nyomtatvány típus kiválasztva!")
End If
Select Case Frame.GetController(Of OffersOutPrintVC).aOfferOutPrintChoice.SelectedItem.Data
Case "0" : _ReportData = _OfferOutHeader.OfferOutParameters.ReportData
Case "1" : _ReportData = _OfferOutHeader.OfferOutParameters.ReportData1
Case Else : Throw New Exception("*Nincs nyomtatvány típus kiválasztva!")
Exit Sub
End Select
If _ReportData IsNot Nothing Then
Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
Dim _FileName As String = Path.GetTempPath & CorrectFileName(_OfferOutHeader.DocumentNumber & ".pdf")
Dim _XafReport As XafReport = _ReportData.LoadReport(_ocur)
Dim _FF As String = "[OfferOutHeader.Oid]='" & _OfferOutHeader.Oid.ToString & "'"
_XafReport.FilterString = _FF
Dim _StreamFile As New FileStream(_FileName, FileMode.Create)
_XafReport.ExportToPdf(_StreamFile)
_StreamFile.Close()
Dim _OutlookEMail As OutlookEMail = _ocur.CreateObject(Of OutlookEMail)()
Dim _OutlookEMailAttachments As OutlookEMailAttachments = _ocur.CreateObject(Of OutlookEMailAttachments)()
Dim _DocumentFileData As DocumentFileData = _ocur.CreateObject(Of DocumentFileData)()
_StreamFile = New FileStream(_FileName, FileMode.Open)
If _OfferOutHeader.CRM_Opportunities IsNot Nothing Then
_OutlookEMail.CRM_Leads = _OfferOutHeader.CRM_Opportunities.CRM_Leads
_OutlookEMail.CRM_Opportunities = _OfferOutHeader.CRM_Opportunities
End If
_OutlookEMail.Recipients = _OfferOutHeader.Contact.Email
If _OutlookEMail.Recipients = "" Then
_OutlookEMail.Recipients = "A kapcsolattartónak nincs e-mail címe."
End If
_OutlookEMail.Subject = "Árajánlat"
Dim _s As String = _OfferOutHeader.DocumentNumber & ".pdf"
_DocumentFileData.File = New FileData(_ocur.Session)
_DocumentFileData.File.LoadFromStream(_s, _StreamFile) '_FileData
_DocumentFileData.File.FileName = CorrectFileName(_OfferOutHeader.DocumentNumber & ".pdf")
_OutlookEMailAttachments.DocumentFileData = _DocumentFileData
_OutlookEMail.OutlookEMailAttachments.Add(_OutlookEMailAttachments)
_StreamFile.Close()
If System.IO.File.Exists(_FileName) Then
System.IO.File.Delete(_FileName)
End If
e.ShowViewParameters.CreatedView = Application.CreateDetailView(_ocur, "OutlookEMail_DetailView", False, _OutlookEMail)
View.Refresh()
Else
'____________________________ TESZT MIATT ________________________________________
Throw New UserFriendlyException("Üres a ReportData1 property!")
End If
Else
'____________________________ TESZT MIATT ________________________________________
Throw New UserFriendlyException("Csak végleges kimenő árajánlatot lehet e-mailben pdf-ként elküldeni.")
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.OkOnly)
End Try
End Sub
Private Sub aOffersOutPrintPDF2_Execute(sender As System.Object, e As DevExpress.ExpressApp.Actions.SimpleActionExecuteEventArgs) Handles aOffersOutPrintPDF2.Execute
Try
If Frame.GetController(Of OffersOutPrintVC).aOfferOutPrintChoice.SelectedItem Is Nothing Then Throw New Exception("*Nincs nyomtatvány típus kiválasztva!")
If _RichEditControl Is Nothing Then Throw New Exception("*A PDF elkészítéséhez aktiválni kell a ""Dokumentum"" fület a részletes nézetben!")
Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)
Dim _OfferOutHeader As OfferOutHeader = TryCast(View.SelectedObjects(0), OfferOutHeader)
If _OfferOutHeader.IsEditable = True Then
_OfferOutHeader.RecalculateOfferOut(_OfferOutHeader, _ocur)
_ocur.CommitChanges()
End If
Dim _FileName As String = CorrectFileName(_OfferOutHeader.DocumentNumber) & ".pdf"
Dim _FileName_Report As String = Path.GetTempPath & "Report.pdf"
Dim _FileName_RTF As String = Path.GetTempPath & "RTF.pdf"
Dim _FileName_Full As String = Path.GetTempPath & _FileName
Dim _ReportData As ReportData
Dim _StreamFile As FileStream
Dim DOCReport As New PDFDocument("2962-F2F8-23B1-5FD8-F4A3-55DB-7D94-28E9")
Dim DOCRTF As New PDFDocument("2962-F2F8-23B1-5FD8-F4A3-55DB-7D94-28E9")
Dim mergeDOC As New PDFDocument("2962-F2F8-23B1-5FD8-F4A3-55DB-7D94-28E9")
Select Case Frame.GetController(Of OffersOutPrintVC).aOfferOutPrintChoice.SelectedItem.Data
Case "0" : _ReportData = _OfferOutHeader.OfferOutParameters.ReportData
Case "1" : _ReportData = _OfferOutHeader.OfferOutParameters.ReportData1
Case Else : Throw New Exception("*Nincs nyomtatvány típus kiválasztva!")
Exit Sub
End Select
If _ReportData IsNot Nothing Then
Dim _XafReport As XafReport = _ReportData.LoadReport(_ocur)
Dim _FF As String = "[OfferOutHeader.Oid]='" & _OfferOutHeader.Oid.ToString & "'"
_StreamFile = New FileStream(_FileName_Report, FileMode.Create)
_XafReport.FilterString = _FF
_XafReport.ExportToPdf(_StreamFile)
_StreamFile.Close()
DOCReport.Load(_FileName_Report)
End If
If _RichEditControl IsNot Nothing Then
_StreamFile = New FileStream(_FileName_RTF, FileMode.Create)
_RichEditControl.ExportToPdf(_StreamFile)
_StreamFile.Close()
DOCRTF.Load(_FileName_RTF)
End If
'// Két PDF összefűzése
mergeDOC.Merge(DOCRTF)
mergeDOC.Merge(DOCReport)
mergeDOC.Save(_FileName_Full)
mergeDOC.Close()
_StreamFile = New FileStream(_FileName_Full, FileMode.Open)
Dim _FileData As New FileData(_ocur.Session)
_FileData.LoadFromStream(_FileName_Full, _StreamFile)
_OfferOutHeader.PDF_Original = _FileData
_StreamFile.Close()
_ocur.CommitChanges()
Process.Start(_FileName_Full)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, String.Format(CaptionHelper.GetLocalizedText("Exceptions\NuvolarExceptions", "MsgBoxCheckItAgain")))
End Try
End Sub
End Class