﻿Imports ADMINCOMMUNALE_Library
Imports CrystalDecisions.CrystalReports.Engine
Imports SolutionsHT
Imports SolutionsHT.Security
'Imports CrystalDecisions.CrystalReports.Engine
Imports SolutionsHT.ReportAccessLayer
Imports SolutionsHT.DataAccessLayer
Imports Telerik.Web.UI
Namespace PLayer.Bordereau
    Partial Class PLayerBordeauWfrmFactureImmeuble
        Inherits BasePage
        Dim immeuble As Cls_Immeuble
        Dim _currentUser As Cls_UserAdministrationCommunale
        Private Const _formName As String = "FactureImmeuble.aspx"
        Private Const _buttonValidate As String = "ButtonValider"
        Private Const _buttonRedresser As String = "ButtonRedresser"
        Private Const _btnValiderValeurLocativeKEY As String = "btnValiderNouvelleValeurLocative"
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Response.Cache.SetCacheability(HttpCacheability.NoCache)
            Response.Expires = -1
            Try
                If Session([Global].GlobalUtilisateur) Is Nothing Then
                    'CType(Me.Master, MainMaster).GererError("Votre Session est expirée.")
                    'showError(-1, "Votre Session est expirée.")
                    'PanelFacture.Visible = False
                Else
                    _currentUser = CType(Session([Global].GlobalUtilisateur), Cls_UserAdministrationCommunale)
                    _currentUser.Read(_currentUser.ID)
                    If _currentUser.IsForcedOut Then
                        _currentUser.SetConnectedStatus(False)
                        _currentUser.LogActivityUser("Forced Log Off", "Forced to Log Off", Request.UserHostAddress)
                        Session.RemoveAll()
                        ''CType(Me.Master, MainMaster).GererError("Vous devez vous reconnecter")
                        'showError(-1, "Vous devez vous reconnecter")
                        'PanelFacture.Visible = False
                    Else
                        If Not Privilege.VerifyRightOnObject(_formName, _currentUser.ID_Group) Then
                            'PanelFacture.Visible = False
                            'showError(0, "Vous n'avez pas accès à cette page, Contactez l'Administrateur!")
                            'CType(Me.Master, MainMaster).GererError("Vous n'avez pas accès à cette page, Contactez l'Administrateur!")
                        Else

                            If Not IsPostBack Then
                                If Not Request.QueryString("ID") Is Nothing Then ''Un id de questionnaire a ete envoye dans la requete, editer le questionnaire reference
                                    BindGrid()
                                    Emisle.SelectedDate = Now.Date
                                    radNumRabattement.Enabled = Privilege.VerifyRightOnObject(_btnValiderValeurLocativeKEY, _currentUser.ID_Group)
                                    immeuble = New Cls_Immeuble(CLng(Request.QueryString("ID")))
                                    radNumRabattement.Text = CType(immeuble.ValeurLocative(Nothing), String)
                                    Me.Title = "GESTION BORDEREAU"
                                Else
                                    showError(0, "Identifiant Immeuble non défini!")
                                End If
                            End If
                        End If
                    End If
                End If
            Catch ex As Exception
                showError(0, "Error : " & ex.Message)
            End Try
            'CType(ButtonRegenerer, Button).Attributes.Add("onclick", "javascript: return confirm('Le bordereau sera supprimé puis regénéré! \n Voulez-vous continuer?')")
        End Sub
        Private Sub BindGrid()
            Dim ID As Long = CLng(Request.QueryString("ID"))
            ID_Immeuble.Value = ID
            immeuble = New Cls_Immeuble(ID)
            If immeuble.ID > 0 Then
                fillInfoImmeuble(immeuble)
                fillBordereaux(immeuble)
                FillTaxe()
                switchButton()
            Else
                showError(0, "Impossible de trouver un immeuble pour cet identifiant!")
            End If
        End Sub

        Protected Sub RadAjaxManager1_AjaxRequest(ByVal sender As Object, ByVal e As Telerik.Web.UI.AjaxRequestEventArgs) Handles RadAjaxManager1.AjaxRequest

            Select Case e.Argument
                Case "BindGrid"
                    BindGrid()
            End Select
        End Sub

        Protected Sub fillInfoImmeuble(ByVal immeuble As Cls_Immeuble)
            LabelNumeroImmeuble.Text = immeuble.Numero
            labelProprietaire.Text = immeuble.Proprietaire.Nomproprietaire & immeuble.Proprietaire.Prenomproprietaire
            LabelAdresse.Text = immeuble.Adresse
            panelImmeuble.Visible = True
        End Sub

        Protected Sub fillBordereaux(ByVal immeuble As Cls_Immeuble)
            Dim headers As List(Of Cls_HeaderFacture) = immeuble.SearchFactures
            GridViewBorderaux.DataSource = headers
            GridViewBorderaux.DataBind()
            PanelBordereau.Visible = True
            RadTabStrip1.SelectedIndex = 0
            RadMultiPage1.SelectedIndex = 0
            'MyAccordion.SelectedIndex = 0
        End Sub

        Protected Sub FillTaxe()
            ''Bind the dropdown annee 
            Dim afs As List(Of Cls_AnneeFiscale)
            afs = Cls_AnneeFiscale.SearchAll(_currentUser.MunicipaliteID)
            DropDownAnneeFisc.DataSource = afs
            DropDownAnneeFisc.DataTextField = "Description"
            DropDownAnneeFisc.DataValueField = "ID"
            DropDownAnneeFisc.DataBind()
            ''Bind the dropdown impot
            Dim impots As List(Of Cls_Impot) = Cls_Impot.SearchAll
            DropDownImpot.DataSource = impots
            DropDownImpot.DataTextField = "Description"
            DropDownImpot.DataValueField = "ID"
            DropDownImpot.DataBind()
            ''Bind the list of taxes for selected impot
            BindGridTaxes()

        End Sub

        Private Sub BindGridTaxes()
            Try
                Dim id_impot As Long = CLng(DropDownImpot.SelectedValue)
                Dim impot As New Cls_Impot(id_impot)
                Dim taxes As List(Of Cls_Taxe) = impot.SearchTaxes
                GridTaxes.DataSource = taxes
                GridTaxes.DataBind()
            Catch ex As Exception

            End Try

        End Sub

        Private Sub showError(ByVal type As Integer, ByVal message As String)
            '[Global].ShowError(CType(Me.Master, MainMaster), Type, message)
        End Sub
        Sub switchButton()
            Dim facture As Cls_Facturation = Cls_Facturation.searchFacturation(CLng(DropDownAnneeFisc.SelectedValue), CLng(DropDownImpot.SelectedValue))
            Dim ID As Long = CLng(ID_Immeuble.Value)
            '' Dim immeuble As New Cls_Immeuble(ID)
            If Cls_HeaderFacture.AFacturePourImmeuble(facture.ID, ID) Then
                ButtonRegenerer.Visible = True
                ButtonGenerer.Visible = False
            Else
                ButtonRegenerer.Visible = False
                ButtonGenerer.Visible = True
            End If
        End Sub
#Region "GENERER BORDEREAU"
        Protected Sub ButtonGenerer_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonGenerer.Click
            Dim ID As Long
            Dim id_impot As Long
            Dim af As Long
            Try
                ID = CLng(ID_Immeuble.Value)
                id_impot = CLng(DropDownImpot.SelectedValue)
                af = CLng(DropDownAnneeFisc.SelectedValue)
            Catch ex As Exception
                Exit Sub
            End Try
            Dim facturation As Cls_Facturation = Cls_Facturation.searchFacturation(af, id_impot)
            Dim impot As Cls_Impot = facturation.Impot
            Dim anneeFiscale As Cls_AnneeFiscale = facturation.AnneeFiscale
            ''Retrouver l'immeuble correspondant
            immeuble = New Cls_Immeuble(ID)
            ' Dim user As String = "Dev"
            If Not Emisle.SelectedDate Is Nothing Then
                ' Cls_HeaderFacture.RegenererLaFacture(headerFacturation, Emisle.SelectedDate, radNumRabattement.Value, _currentUser.Login)
                immeuble.genererFacture(facturation, Emisle.SelectedDate, CType(radNumRabattement.Value, Double), _currentUser.Login)
            Else
                ' Cls_HeaderFacture.RegenererLaFacture(headerFacturation, Now, radNumRabattement.Value, _currentUser.Login)
                immeuble.genererFacture(facturation, Now, CType(radNumRabattement.Value, Double), _currentUser.Login)
            End If

            ' ButtonGenererFacture.Visible = True
            'PanelFacturation.Visible = False
            fillBordereaux(immeuble)
        End Sub
#End Region
        Protected Sub ButtonRegenerer_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonRegenerer.Click
            'SearchFactureImFact
            If VérifierNbreAnneeFiscalToGenerer() Then
                Dim collection As IList(Of RadComboBoxItem) = DropDownAnneeFisc.CheckedItems
                For Each item As RadComboBoxItem In collection 'on fait un boucle sur la liste des années fiscales selectionnées 
                    'Dim facture As Cls_Facturation = Cls_Facturation.searchFacturation(CLng(DropDownAnneeFisc.SelectedValue), CLng(DropDownImpot.SelectedValue)) ancienne façon de faire
                    Dim facture As Cls_Facturation = Cls_Facturation.searchFacturation(CLng(item.Value), CLng(DropDownImpot.SelectedValue))
            Dim ID As Long = CLng(ID_Immeuble.Value)
            Dim header As Cls_HeaderFacture = Cls_HeaderFacture.SearchFactureImFact(facture.ID, ID)

            If header.Statut = Cls_HeaderFacture.STATUT_GENERE Or header.Statut = Cls_HeaderFacture.STATUT_IMPRIME Or header.Statut = Cls_HeaderFacture.STATUT_VALIDER Then
                header.Delete()
                Dim immeuble As New Cls_Immeuble(ID)
                If Not Emisle.SelectedDate Is Nothing Then
                    ' Cls_HeaderFacture.RegenererLaFacture(headerFacturation, Emisle.SelectedDate, radNumRabattement.Value, _currentUser.Login)
                    immeuble.genererFacture(facture, Emisle.SelectedDate, radNumRabattement.Value, _currentUser.Login)
                Else
                    ' Cls_HeaderFacture.RegenererLaFacture(headerFacturation, Now, radNumRabattement.Value, _currentUser.Login)
                    immeuble.genererFacture(facture, Now, radNumRabattement.Value, _currentUser.Login)
                End If
                ' immeuble.genererFacture(facture, _currentUser.Login)
                fillBordereaux(immeuble)

            Else
                'CType(Me.Master, MainMaster).GererError("Vous ne pouvez pas regénérer ce bordereau car il est déjà " + header.LibelleStatutFacture)
            End If
                Next

            Else
                msgb.alert("Il faut au moins choisir une année fiscale")
            End If
        End Sub

        Protected Sub GridViewBorderaux_ItemCommand(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles GridViewBorderaux.ItemCommand
            Try
                If e.CommandName = "valider" Then
                    Dim ID As Long = TypeSafeConversion.NullSafeLong(e.CommandArgument)
                    Dim headerFacturation As New Cls_HeaderFacture(CLng(ID))
                    Cls_HeaderFacture.valider(headerFacturation, _currentUser.Login)
                    'Session("bordereaux") = Nothing
                    BindGrid()
                End If

                If e.CommandName = "regenerer" Then
                    Dim typeFacture As Cls_HeaderFacture.EnumTypeFacture = CLng(e.Item.Cells(9).Text) ' CType(DataBinder.Eval(e.Item.DataItem, "CategorieFacture"), Int16)
                    Dim ID As Long = TypeSafeConversion.NullSafeLong(e.CommandArgument)
                    Dim headerFacturation As New Cls_HeaderFacture(CLng(ID))

                    Select Case typeFacture
                        Case Cls_HeaderFacture.EnumTypeFacture.Normal
                            'Modification 2 Mars 2015 pour corriger la rég'rnation de la facture au niveau de la liste
                            Cls_HeaderFacture.RegenererLaFacture(headerFacturation, headerFacturation.DateEmission, IIf(headerFacturation.Rabattement <> radNumRabattement.Value, CDbl(radNumRabattement.Value), headerFacturation.Rabattement), _currentUser.Login)
                            'If Not Emisle.SelectedDate Is Nothing Then
                            '    Cls_HeaderFacture.RegenererLaFacture(headerFacturation, Emisle.SelectedDate, radNumRabattement.Value, _currentUser.Login)
                            '    'immeuble.genererFacture(facture, Emisle.SelectedDate, radNumRabattement.Value, _currentUser.Login)
                            'Else
                            '    Cls_HeaderFacture.RegenererLaFacture(headerFacturation, Now, radNumRabattement.Value, _currentUser.Login)
                            'End If

                        Case Cls_HeaderFacture.EnumTypeFacture.Redressement
                            Cls_HeaderFacture.RegenerBordereauRedressement(headerFacturation, _currentUser.Login)
                        Case Cls_HeaderFacture.EnumTypeFacture.Rappel

                    End Select

                    BindGrid()
                End If

                If e.CommandName = "print" Then
                    Dim crReportDocument As New ReportDocument
                    Dim rHelper As ReportHelper
                    Dim dtbase As New SolutionsHT.RALDatabase
                    Dim idHeader As Long = TypeSafeConversion.NullSafeLong(e.CommandArgument)
                    Dim Header As New Cls_HeaderFacture(idHeader)
                    InsertLignePaiementInDetailFacture(idHeader)
                    Session("CurrentReportRAL") = Nothing
                    dtbase.ServerName = System.Configuration.ConfigurationManager.AppSettings("ServerName")
                    dtbase.DataBaseName = SqlHelperParameterCache.DecryptDataTmp(System.Configuration.ConfigurationManager.AppSettings("Catalog"))
                    dtbase.UserId = SqlHelperParameterCache.DecryptDataTmp(System.Configuration.ConfigurationManager.AppSettings("UserID"))
                    dtbase.Pass = SqlHelperParameterCache.DecryptDataTmp(System.Configuration.ConfigurationManager.AppSettings("PassID"))
                    rHelper = New ReportHelper(dtbase, Request.PhysicalApplicationPath & "Report\")
                    'crReportDocument = rHelper.LoadReport("Bordereaux_individuelV3.rpt")
                    crReportDocument = rHelper.LoadReport("Bordereaux_individuelV2.rpt")
                    'crReportDocument = rHelper.LoadReport("Bordereaux_individuel.rpt")
                    crReportDocument.SetParameterValue("@id_headerFacture", Header.ID)
                    crReportDocument.SetParameterValue("@IDFACTURE", Header.Id_Facturation)
                    crReportDocument.SetParameterValue("@idAnneeFiscale", Header.Id_anneeFiscale)
                    crReportDocument.SetParameterValue("@idMunicipalite", _currentUser.MunicipaliteID)
                    Session("CurrentReportRAL") = crReportDocument
                    'RadScriptManager.RegisterStartupScript(Me, Me.GetType, "MRscript", "window.open('Report/Forms/wbfrm_ShowReports.aspx', '_blank', 'width=1024px,height=768px,status=0,resizable=1,alwaysRaised=1,scrollbars=1');", True)
                    RadScriptManager.RegisterStartupScript(Me, Me.GetType, "MRscript", "openFullWin2('../../Report/Forms/wbfrm_ShowReports.aspx');", True)
                End If

                If e.CommandName = "Redresser" Then
                    Dim id_header As Long = TypeSafeConversion.NullSafeLong(e.CommandArgument)
                    Dim Header As New Cls_HeaderFacture(id_header)
                    Cls_HeaderFacture.RegenerBordereauRedressement(Header, _currentUser.Login)
                    'Cls_HeaderFacture.GenererBordereauRedressement(Header, _currentUser.Login)
                    Dim imm As Cls_Immeuble
                    imm = New Cls_Immeuble(CLng(ID_Immeuble.Value))

                    fillBordereaux(imm)
                End If
            Catch ex As Exception
                Label1.Text = ex.Message
                'RadAjaxManager1.ResponseScripts.Add("alert('" & _message.Replace("'", "\") & "');")

            End Try

        End Sub
        Private Sub InsertLignePaiementInDetailFacture(Id_HeaderFacture As Long)
            If Cls_DetaitFacture.FindRabattementTransactionByHeaderFacture(CLng(Id_HeaderFacture)) = False Then
                Dim objdetfact As New Cls_DetaitFacture(0)
                objdetfact.Id_HeaderFacture = CLng(Id_HeaderFacture)
                objdetfact.Id_Taxe = 7
                objdetfact.MontantCalcule = 0
                objdetfact.Save(_currentUser.Login)
            End If

        End Sub
        Protected Sub GridViewBorderaux_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles GridViewBorderaux.ItemDataBound
            Dim privilegeValidate As Boolean = Privilege.VerifyRightOnObject(_buttonValidate, _currentUser.ID_Group)
            Dim privilegeRedresser As Boolean = Privilege.VerifyRightOnObject(_buttonRedresser, _currentUser.ID_Group)

            If (TypeOf e.Item Is GridDataItem) Then
                Dim dataItem As GridDataItem = CType(e.Item, GridDataItem)
                Dim item As GridDataItem = CType(e.Item, GridDataItem)
                Dim image_detail As ImageButton = CType(item("details").Controls(0), ImageButton) 'CType(dataItem.FindControl("details"), ImageButton)
                Dim image_print As ImageButton = CType(item("print").Controls(0), ImageButton) 'CType(dataItem.FindControl("print"), ImageButton)
                Dim image_valider As ImageButton = CType(item("valider").Controls(0), ImageButton) 'CType(dataItem.FindControl("valider"), ImageButton)
                Dim image_regenerer As ImageButton = CType(item("regenerer").Controls(0), ImageButton) 'CType(dataItem.FindControl("regenerer"), ImageButton)
                Dim image_redresser As ImageButton = CType(item("Redresser").Controls(0), ImageButton)

                image_detail.ToolTip = "Voir les détails de ce bordereau!"
                image_print.ToolTip = "Imprimer ce bordereau"
                image_valider.ToolTip = "Valider ce bordereau"
                image_regenerer.ToolTip = "Regénérer ce bordereau"
                image_redresser.ToolTip = "Génerer un bordereau de redressement"

                'Dim imageb_editer As ImageButton = CType(item("editer").Controls(0), ImageButton) 'CType(dataItem.FindControl("editer"), ImageButton)
                Dim imageb_notif As ImageButton = CType(item("EmettreAvis").Controls(0), ImageButton) 'CType(dataItem.FindControl("notif"), ImageButton)
                Dim ID As Long = CType(DataBinder.Eval(e.Item.DataItem, "ID"), Long)
                Dim quest As Long = CType(DataBinder.Eval(e.Item.DataItem, "Questionnaire"), Long)
                Dim statut As Int16 = CType(DataBinder.Eval(e.Item.DataItem, "Statut"), Int16)
                Dim typeFacture As Cls_HeaderFacture.EnumTypeFacture = CType(DataBinder.Eval(e.Item.DataItem, "CategorieFactureAsLong"), Int16)

                Dim LibelleStatutFacture As String = CType(DataBinder.Eval(e.Item.DataItem, "LibelleStatutFacture"), String)
                image_print.CommandArgument = ID
                image_valider.CommandArgument = ID
                image_regenerer.CommandArgument = ID
                image_redresser.CommandArgument = ID

                If statut <> Cls_HeaderFacture.STATUT_PAYE And statut <> Cls_HeaderFacture.STATUT_EMIS Then
                    If typeFacture = Cls_HeaderFacture.EnumTypeFacture.Normal Then
                        ' image_regenerer.OnClientClick = "javascript:Confirmation(); return false;"
                        image_regenerer.OnClientClick = "javascript:return confirm('Etes-vous sur de vouloir régénérer ce bordereau?');"
                    Else
                        image_regenerer.OnClientClick = "javascript:return confirm('Etes-vous sur de vouloir régénérer un bordereau de redressement?');"
                    End If

                Else
                    image_regenerer.OnClientClick = "javascript:alert('Ce bordereau ne peut être regénéré!'); return false;"
                End If
                If Not privilegeValidate Then
                    image_valider.Attributes.Add("onclick", "javascript:alert('Vous n\êtes pas autorisé à valider un bordereau!'); return false;")
                Else
                    If statut = Cls_HeaderFacture.STATUT_VALIDER Or statut = Cls_HeaderFacture.STATUT_IMPRIME Or statut = Cls_HeaderFacture.STATUT_PAYE Or statut = Cls_HeaderFacture.STATUT_EMIS Then
                        image_valider.Attributes.Add("onclick", "javascript:alert('Ce bordereau est déjà " & LibelleStatutFacture & "'); return false;")
                    End If
                End If

                If Not privilegeRedresser Then
                    image_redresser.Attributes.Add("onclick", "javascript:alert('Vous n\êtes pas autorisé à Redresser un bordereau!'); return false;")
                End If

                ''image_regenerer.Attributes.Add("onclick", "javascript:return confirm('Le bordereau sera supprimé puis regénéré, voulez-vous continuer?');")
                image_detail.Attributes.Add("onclick", "javascript:openFullWin('DetailFacture.aspx?ID=" & ID & "'); return false;")
                ' imageb_editer.Attributes.Add("onclick", "javascript:openFullWin('Edit_Questionnaire.aspx?ID=" & quest & "'); return false;")
                If statut = Cls_HeaderFacture.STATUT_IMPRIME Then
                    imageb_notif.ToolTip = "Notifier un avis de cotisation"
                    imageb_notif.Attributes.Add("onclick", "javascript:openCustumWin('notifer_avis_cotisation.aspx?ID=" & ID & "'); return false;")
                ElseIf statut = Cls_HeaderFacture.STATUT_EMIS Then
                    imageb_notif.ToolTip = "Notifier un avis de paiement"
                    imageb_notif.Attributes.Add("onclick", "javascript:openCustumWin('notifier_paiement.aspx?ID=" & ID & "'); return false;")
                ElseIf statut = Cls_HeaderFacture.STATUT_PAYE Then
                    imageb_notif.ToolTip = "Bordereau déjà payé"
                    imageb_notif.Attributes.Add("onclick", "javascript:alert('Ce bordereau est déjà payé!'); return false;")
                Else
                    imageb_notif.ToolTip = "Pas encore imprimé!"
                    imageb_notif.Attributes.Add("onclick", "javascript:alert('Ce bordereau n\'est pas encore imprimé!'); return false;")
                End If

                If typeFacture <> Cls_HeaderFacture.EnumTypeFacture.Normal Then
                    image_redresser.Visible = False
                    ' image_regenerer.Visible = False
                Else
                    image_redresser.Visible = True
                    ' image_regenerer.Visible = True
                End If
            End If
        End Sub

        Protected Sub DropDownAnneeFisc_SelectedIndexChanged(ByVal sender As Object, ByVal e As Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs) Handles DropDownAnneeFisc.SelectedIndexChanged
            switchButton()
        End Sub

        Protected Sub LinkVoirImmeuble_Click(sender As Object, e As System.EventArgs) Handles LinkVoirImmeuble.Click
            If IsNumeric(ID_Immeuble.Value) Then
                'Dim listQuest As List(Of Cls_Questionnaire)
                'Dim immeuble As Cls_Immeuble
                'immeuble = New Cls_Immeuble(CType(ID_Immeuble.Value, Long))
                'listQuest =
                'Response.Redirect("../Immeuble/FicheImmeubles.aspx?ID=" & ID_Immeuble.Value)
                Response.Redirect("../Immeuble/FicheGrandImmeubles.aspx?ID=" & ID_Immeuble.Value)
            End If

        End Sub
        'modifier le 15 février 2017 par billy
        Private Function VérifierNbreAnneeFiscalToGenerer() As Boolean
            'Il faut au moins avoir une année ou bien >= au nombre indique dans le parametre municiplite
            Dim collection As IList(Of RadComboBoxItem) = DropDownAnneeFisc.CheckedItems
            If (collection.Count <> 0) Then
                Return True
            Else
                Return False
            End If
        End Function

        Protected Sub RadButtonPrintAllBordereau_Click(sender As Object, e As EventArgs) Handles RadButtonPrintAllBordereau.Click
            Dim listF As List(Of Cls_HeaderFacture)
            Dim im As Cls_Immeuble

            im = New Cls_Immeuble(TypeSafeConversion.NullSafeLong(ID_Immeuble.Value))
            listF = im.SearchFactures()
            For Each cmt As Cls_HeaderFacture In listF
                InsertLignePaiementInDetailFacture(cmt.ID)
            Next
            If listF.Count > 0 Then
                Dim crReportDocument As New ReportDocument
                Dim rHelper As ReportHelper
                Dim dtbase As New SolutionsHT.RALDatabase
                Dim idHeader As Long = TypeSafeConversion.NullSafeLong(listF(0).ID)
                Dim Header As New Cls_HeaderFacture(idHeader)

                Session("CurrentReportRAL") = Nothing
                dtbase.ServerName = System.Configuration.ConfigurationManager.AppSettings("ServerName")
                dtbase.DataBaseName = SqlHelperParameterCache.DecryptDataTmp(System.Configuration.ConfigurationManager.AppSettings("Catalog"))
                dtbase.UserId = SqlHelperParameterCache.DecryptDataTmp(System.Configuration.ConfigurationManager.AppSettings("UserID"))
                dtbase.Pass = SqlHelperParameterCache.DecryptDataTmp(System.Configuration.ConfigurationManager.AppSettings("PassID"))
                rHelper = New ReportHelper(dtbase, Request.PhysicalApplicationPath & "Report\")
                crReportDocument = rHelper.LoadReport("Bordereaux_individuelV3.rpt")
                'crReportDocument = rHelper.LoadReport("Bordereaux_individuelV2.rpt")
                'crReportDocument = rHelper.LoadReport("Bordereaux_individuel.rpt")
                crReportDocument.SetParameterValue("@id_headerFacture", Header.ID)
                crReportDocument.SetParameterValue("@IDFACTURE", Header.Id_Facturation)
                crReportDocument.SetParameterValue("@idAnneeFiscale", Header.Id_anneeFiscale)
                crReportDocument.SetParameterValue("@idMunicipalite", _currentUser.MunicipaliteID)
                Session("CurrentReportRAL") = crReportDocument
                'RadScriptManager.RegisterStartupScript(Me, Me.GetType, "MRscript", "window.open('Report/Forms/wbfrm_ShowReports.aspx', '_blank', 'width=1024px,height=768px,status=0,resizable=1,alwaysRaised=1,scrollbars=1');", True)
                RadScriptManager.RegisterStartupScript(Me, Me.GetType, "MRscript", "openFullWin('../../Report/Forms/wbfrm_ShowReports.aspx');", True)
            Else
                RadScriptManager.RegisterStartupScript(Me, Me.GetType, "MRscript", "javascript:alert('Pas de factures emises!'); return false;", True)
            End If

        End Sub

    End Class
End Namespace