' Copyright (C) 2025  P4pillon.org
'
' This program is free software: you can redistribute it and/or modify
' it under the terms of the GNU Affero General Public License as
' published by the Free Software Foundation, either version 3 of the
' License, or (at your option) any later version.
'
' This program is distributed in the hope that it will be useful,
' but WITHOUT ANY WARRANTY; without even the implied warranty of
' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
' GNU Affero General Public License for more details.
'
' You should have received a copy of the GNU Affero General Public License
' along with this program.  If not, see <https://www.gnu.org/licenses/>.
Imports System
Imports System.Security.Cryptography
Imports System.Text
Imports System.IO
Imports System.Xml


Public Class Commandes_Manuelles
    Private chargement_catalogue_encours As Boolean

    Private Structure produit
        Dim CIP As String
        Dim EAN13 As String
        Dim désignation As String
    End Structure
    Private Sub Commandes_Load(sender As Object, e As EventArgs) Handles Me.Load

        Dim fournisseurs = Me.FournisseurTableAdapter.GetData_OrderByNom
        Fournisseurs_ComboBox.Items.Clear()
        For r = 0 To fournisseurs.Rows.Count - 1
            Fournisseurs_ComboBox.Items.Add(fournisseurs.Item(r).Nom)
        Next
        chargement_catalogue_encours = False
    End Sub

    Private Structure Manquant
        Dim code_prod As String
        Dim Type_Codification As String
        Dim désignation As String
        Dim quantité_manquante As Integer
        Dim fournisseur_secondaire As String
    End Structure
   



    Private Sub Consolider_Commande_Button_Click(sender As Object, e As EventArgs) Handles Consolider_Commande_Button.Click
        If Fournisseurs_ComboBox.SelectedItem Is Nothing Then
            MyMsg_Box.Presentation("Officine !", "FOURNISSEUR?", False, "", False, "", True, "OK")
            MyMsg_Box.ShowDialog()
            Exit Sub
        End If
        If Consolider_Commande() = True Then
            Me.Dispose()
        End If

    End Sub

    Private Function Consolider_Commande() As Boolean
         Bandeau_info_bas_show("Enregistrement de la commande...")
        Dim ref_commande As Decimal
        Try
            Dim num_ligne As Integer = 0
            ref_commande = Me.CommandesTableAdapter.Select_Max_ref + 1
            Me.CommandesTableAdapter.Insert(ref_commande, Fournisseurs_ComboBox.SelectedItem.ToString, "", Format(Date_livraison_DateTimePicker.Value, "yyyy-MM-dd"), "COMMANDE MANUELLE", "", "", "")
        num_ligne = 0
        For r = 0 To Produits_DataGridView.Rows.Count - 1
            If Val(Produits_DataGridView.Item(Quantité.Index, r).Value) > 0 Then
                num_ligne = num_ligne + 1
                Dim code_prod As String
                    If Produits_DataGridView.Item(Cip.Index, r).Value <> "" Then
                        code_prod = Produits_DataGridView.Item(Cip.Index, r).Value
                    Else
                        code_prod = Produits_DataGridView.Item(GTIN13.Index, r).Value
                    End If
             
                    Me.Commandes_LignesTableAdapter.Insert(ref_commande, num_ligne, "", code_prod, Produits_DataGridView.Item(Désignation.Index, r).Value, _
                                                  Val(Produits_DataGridView.Item(Quantité.Index, r).Value), "false", _
                                                  "false", "false", "", "", 0, 0, 0, Val(Produits_DataGridView.Item(UG.Index, r).Value))
                    COMPTOIR_MAIN.ProduitsTableAdapter.Update_en_commande(Val(Produits_DataGridView.Item(Quantité.Index, r).Value) + Val(Produits_DataGridView.Item(UG.Index, r).Value), Produits_DataGridView.Item(Désignation.Index, r).Value)
                    Commandes_PharmaML.Produits_AchatsTableAdapter.Insert(code_prod, _
                                                                          Produits_DataGridView.Item(Désignation.Index, r).Value, _
                                                                         CDec(Produits_DataGridView.Item(Prix_achat_HT.Index, r).Value), _
                                                                          CDec(Produits_DataGridView.Item(Remise.Index, r).Value), _
                                                                        CDec(Produits_DataGridView.Item(Prix_achat_remisé_HT.Index, r).Value), _
                                                                         0, Now, "", ref_commande, num_ligne, Val(Produits_DataGridView.Item(UG.Index, r).Value))
                End If
                BDD.Fournisseurs_CataloguesTableAdapter.Update_Prix(CDec(Produits_DataGridView.Item(Prix_achat_HT.Index, r).Value), CDec(Produits_DataGridView.Item(Remise.Index, r).Value), _
                                                                     CDec(Produits_DataGridView.Item(Prix_achat_remisé_HT.Index, r).Value), _
                                                                     Fournisseurs_ComboBox.SelectedItem.ToString, Produits_DataGridView.Item(Cip.Index, r).Value, Produits_DataGridView.Item(GTIN13.Index, r).Value, Produits_DataGridView.Item(Désignation.Index, r).Value)





            Next
        Catch ex As Exception
            Me.CommandesTableAdapter.DeleteBy_ref(ref_commande)
            Me.Commandes_LignesTableAdapter.DeleteBy_ref_commande(ref_commande)
            Bandeau_info_bas_hide() 'Bandeau_info_bas_show_thread)
            MyMsg_Box.Presentation("Officine !", "Erreur lors de l'enregistrement de la commande:" & vbCrLf & ex.Message, False, "", False, "", True, "OK")
            MyMsg_Box.ShowDialog()

            Return False

        End Try
        Bandeau_info_bas_hide() 'Bandeau_info_bas_show_thread)
        Return True
    End Function



    Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles Recherche_TextBox.KeyDown
        If e.KeyCode = Keys.Return Then
            TextBox1_Validated(Recherche_TextBox, New EventArgs)
        End If
    End Sub



    Private Sub TextBox1_Validated(sender As Object, e As EventArgs) Handles Recherche_TextBox.Validated
        If Recherche_TextBox.Text = "" Then Exit Sub

        If (Mid(Recherche_TextBox.Text, 1, 2) = "01" And Mid(Recherche_TextBox.Text, 17, 2) = "17" And Mid(Recherche_TextBox.Text, 25, 2) = "10") Or _
            (Mid(Recherche_TextBox.Text, 1, 2) = "01" And Mid(Recherche_TextBox.Text, 17, 2) = "11" And Mid(Recherche_TextBox.Text, 25, 2) = "17" And Mid(Recherche_TextBox.Text, 33, 2) = "10") Or _
             (Mid(Recherche_TextBox.Text, 1, 3) = "010" And Recherche_TextBox.Text.Length >= 16) Then
            Recherche_TextBox.Text = Mid(Recherche_TextBox.Text, 4, 13)
        ElseIf IsNumeric(Recherche_TextBox.Text) And Recherche_TextBox.Text.Length > 13 Then
            Recherche_TextBox.Text = Mid(Recherche_TextBox.Text, 1, 13)
        End If

        Dim produits = COMPTOIR_MAIN.ProduitsTableAdapter.GetDataProduits(Recherche_TextBox.Text, Recherche_TextBox.Text, Replace(Recherche_TextBox.Text, " ", "%"), Recherche_TextBox.Text)

        Dim aliastable = BDD.Produits_AliasTableAdapter.GetDataBy_Alias(Recherche_TextBox.Text)
        For r = 0 To aliastable.Rows.Count - 1
            produits.Merge(BDD.ProduitsTableAdapter.GetDataProduits(aliastable.Item(r).CIP, aliastable.Item(r).CAB, aliastable.Item(r).Désignation, aliastable.Item(r).EAN13))
        Next

        Recherche_DataGridView.Rows.Clear()
        For r = 0 To produits.Count - 1
            Recherche_DataGridView.Rows.Add()
        Next
        For r = 0 To produits.Count - 1
            Recherche_DataGridView.Item(Recherche_CIP.Index, r).Value = produits(r).CIP
            If produits(r).EAN13 <> "" Then
                Recherche_DataGridView.Item(Recherche_EAN13.Index, r).Value = produits(r).EAN13
            ElseIf produits(r).CAB <> "" Then
                Recherche_DataGridView.Item(Recherche_EAN13.Index, r).Value = produits(r).CAB
            End If

            Recherche_DataGridView.Item(Recherche_Désignation.Index, r).Value = produits(r).Designation
        Next
    End Sub



    Public Sub Recherche_DataGridView_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles Recherche_DataGridView.CellClick

        Dim produit As officine.PharmaDataSet.ProduitsRow
        If Recherche_DataGridView.Item(Recherche_EAN13.Index, Recherche_DataGridView.CurrentRow.Index).Value <> "" Then
            If COMPTOIR_MAIN.ProduitsTableAdapter.GetDataProduits("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", _
           Recherche_DataGridView.Item(Recherche_EAN13.Index, Recherche_DataGridView.CurrentRow.Index).Value).Rows.Count > 0 Then
                produit = COMPTOIR_MAIN.ProduitsTableAdapter.GetDataProduits("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", _
 Recherche_DataGridView.Item(Recherche_EAN13.Index, Recherche_DataGridView.CurrentRow.Index).Value).Item(0)
            Else
                produit = COMPTOIR_MAIN.ProduitsTableAdapter.GetDataProduits("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", Recherche_DataGridView.Item(Recherche_EAN13.Index, Recherche_DataGridView.CurrentRow.Index).Value, _
                                                                             "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@").Item(0)
            End If

            COMPTOIR_MAIN.ProduitsTableAdapter.Update_encommande_calcul_sur_lignes_commandes(Recherche_DataGridView.Item(Recherche_EAN13.Index, Recherche_DataGridView.CurrentRow.Index).Value)
        ElseIf Recherche_DataGridView.Item(Recherche_CIP.Index, Recherche_DataGridView.CurrentRow.Index).Value <> "" Then
            produit = COMPTOIR_MAIN.ProduitsTableAdapter.GetDataProduits(Recherche_DataGridView.Item(Recherche_CIP.Index, Recherche_DataGridView.CurrentRow.Index).Value, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", _
                                                                         "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@").Item(0)
            COMPTOIR_MAIN.ProduitsTableAdapter.Update_encommande_calcul_sur_lignes_commandes(Recherche_DataGridView.Item(Recherche_CIP.Index, Recherche_DataGridView.CurrentRow.Index).Value)
        Else
            produit = COMPTOIR_MAIN.ProduitsTableAdapter.GetDataProduits("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", _
                                                                         Recherche_DataGridView.Item(Recherche_Désignation.Index, Recherche_DataGridView.CurrentRow.Index).Value, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@").Item(0)
        End If

        Produits_DataGridView.Rows.Add()

        Produits_DataGridView.Item(GTIN13.Index, Produits_DataGridView.Rows.Count - 1).Value = ""
        If produit.EAN13 <> "" Then
            Produits_DataGridView.Item(Cip.Index, Produits_DataGridView.Rows.Count - 1).Value = produit.EAN13
        ElseIf produit.CIP <> "" Then
            Produits_DataGridView.Item(Cip.Index, Produits_DataGridView.Rows.Count - 1).Value = produit.CIP
        End If
        Produits_DataGridView.Item(GTIN13.Index, Produits_DataGridView.Rows.Count - 1).Value = produit.CAB

        Produits_DataGridView.Item(Désignation.Index, Produits_DataGridView.Rows.Count - 1).Value = produit.Designation
        Produits_DataGridView.Item(Stock.Index, Produits_DataGridView.Rows.Count - 1).Value = produit.Stock
        Produits_DataGridView.Item(Quantité.Index, Produits_DataGridView.Rows.Count - 1).Value = "0"



        Produits_DataGridView.Item(en_commande.Index, Produits_DataGridView.Rows.Count - 1).Value = _
            COMPTOIR_MAIN.ProduitsTableAdapter.GetDataByInfo(produit.CIP, produit.EAN13, produit.Designation).Item(0).en_commande



        Produits_DataGridView.Item(Quantité.Index, Produits_DataGridView.Rows.Count - 1).Value = "0"
        Produits_DataGridView.Item(Stock_prévisionnel.Index, Produits_DataGridView.Rows.Count - 1).Value = _
            Produits_DataGridView.Item(Stock.Index, Produits_DataGridView.Rows.Count - 1).Value + Produits_DataGridView.Item(en_commande.Index, Produits_DataGridView.Rows.Count - 1).Value
        Produits_DataGridView.Item(TVA.Index, Produits_DataGridView.Rows.Count - 1).Value = produit.TVA
        affiche_Histo_ventes(TrackBar1.Value, Produits_DataGridView.Rows.Count - 1)
        If Ajouter_au_catatlogue_CheckBox.Checked = True And Not Fournisseurs_ComboBox.SelectedItem Is Nothing Then
            Dim cip_strg = ""
            If Not Produits_DataGridView.Item(Cip.Index, Produits_DataGridView.Rows.Count - 1).Value Is Nothing Then
                cip_strg = Produits_DataGridView.Item(Cip.Index, Produits_DataGridView.Rows.Count - 1).Value
            End If
            Dim GTIN13_strg = ""
            If Not Produits_DataGridView.Item(GTIN13.Index, Produits_DataGridView.Rows.Count - 1).Value Is Nothing Then
                GTIN13_strg = Produits_DataGridView.Item(GTIN13.Index, Produits_DataGridView.Rows.Count - 1).Value
            End If
            Dim Désignation_strg = ""
            If Not Produits_DataGridView.Item(Désignation.Index, Produits_DataGridView.Rows.Count - 1).Value Is Nothing Then
                Désignation_strg = Produits_DataGridView.Item(Désignation.Index, Produits_DataGridView.Rows.Count - 1).Value
            End If
            BDD.Fournisseurs_CataloguesTableAdapter.Insert(Fournisseurs_ComboBox.SelectedItem.ToString, cip_strg, GTIN13_strg, Désignation_strg, 0, 0, 0, 1)
        End If
    End Sub

#Region "Control valeurs"

    Private Sub Produits_DataGridView_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles Produits_DataGridView.CellClick
        If e.RowIndex < 0 Then Exit Sub
        Try


            Select Case Produits_DataGridView.CurrentCell.ColumnIndex


                Case Cip.Index, GTIN13.Index, Désignation.Index
                    Dim code_ As String
                    If Produits_DataGridView.Item(Cip.Index, Produits_DataGridView.CurrentCell.RowIndex).Value <> "" Then
                        code_ = Produits_DataGridView.Item(Cip.Index, Produits_DataGridView.CurrentCell.RowIndex).Value

                    ElseIf Produits_DataGridView.Item(GTIN13.Index, Produits_DataGridView.CurrentCell.RowIndex).Value <> "" Then
                        code_ = Produits_DataGridView.Item(GTIN13.Index, Produits_DataGridView.CurrentCell.RowIndex).Value
                    Else

                        code_ = Produits_DataGridView.Item(Désignation.Index, Produits_DataGridView.CurrentCell.RowIndex).Value
                    End If
                    If code_ <> "" Then
                        Produits.Visible = True
                        Produits.Recherche_TextBox.Text = code_
                        Produits.Recherche_TextBox_Validated(Nothing, Nothing)

                        Produits.TopMost = True

                    End If
                Case Suppr.Index
                    If Not Fournisseurs_ComboBox.SelectedItem Is Nothing Then
                        MyMsg_Box.Presentation("Officine ?", "Voulez vous supprimer " & vbCrLf & Produits_DataGridView.Item(Désignation.Index, Produits_DataGridView.CurrentCell.RowIndex).Value & vbCrLf & "du catalogue:" & Fournisseurs_ComboBox.SelectedItem.ToString & " ?", True, "OUI", True, "NON", False, "")
                        If MyMsg_Box.ShowDialog() = Windows.Forms.DialogResult.Yes Then
                            BDD.Fournisseurs_CataloguesTableAdapter.DeleteQuery(Fournisseurs_ComboBox.SelectedItem.ToString, Produits_DataGridView.Item(Cip.Index, Produits_DataGridView.CurrentCell.RowIndex).Value, _
                                 Produits_DataGridView.Item(GTIN13.Index, Produits_DataGridView.CurrentCell.RowIndex).Value, Produits_DataGridView.Item(Désignation.Index, Produits_DataGridView.CurrentCell.RowIndex).Value)
                            Produits_DataGridView.Rows.RemoveAt(e.RowIndex)
                        End If
                    End If
            End Select
        Catch ex As Exception

        End Try
    End Sub


    Private Sub Produits_DataGridView_CellValidated(sender As Object, e As DataGridViewCellEventArgs) Handles Produits_DataGridView.CellValidated

        Select Case e.ColumnIndex
            Case Quantité.Index, UG.Index
                If Not IsNumeric(Produits_DataGridView.Item(e.ColumnIndex, e.RowIndex).Value) Then
                    Produits_DataGridView.Item(e.ColumnIndex, e.RowIndex).Value = "0"
                ElseIf Produits_DataGridView.Item(e.ColumnIndex, e.RowIndex).Value < 1 Then
                    Produits_DataGridView.Item(e.ColumnIndex, e.RowIndex).Value = "0"
                End If


                If Val(Produits_DataGridView.Item(Stock_prévisionnel.Index, e.RowIndex).Value) <> Val(Produits_DataGridView.Item(en_commande.Index, e.RowIndex).Value) _
                    + Val(Produits_DataGridView.Item(Stock.Index, e.RowIndex).Value) + Val(Produits_DataGridView.Item(Quantité.Index, e.RowIndex).Value) _
                    + Val(Produits_DataGridView.Item(UG.Index, e.RowIndex).Value) Then 'pour ne pas boucler
                    Produits_DataGridView.Item(Stock_prévisionnel.Index, e.RowIndex).Value = Val(Produits_DataGridView.Item(en_commande.Index, e.RowIndex).Value) _
                        + Val(Produits_DataGridView.Item(Stock.Index, e.RowIndex).Value) + Val(Produits_DataGridView.Item(Quantité.Index, e.RowIndex).Value) _
                        + Val(Produits_DataGridView.Item(UG.Index, e.RowIndex).Value)
                End If

            Case Stock_prévisionnel.Index
                If Not IsNumeric(Produits_DataGridView.Item(e.ColumnIndex, e.RowIndex).Value) Then
                    Produits_DataGridView.Item(e.ColumnIndex, e.RowIndex).Value = Val(Produits_DataGridView.Item(en_commande.Index, e.RowIndex).Value) + Val(Produits_DataGridView.Item(Stock.Index, e.RowIndex).Value)
                    Produits_DataGridView.Item(UG.Index, e.RowIndex).Value = "0"
                ElseIf Val(Produits_DataGridView.Item(e.ColumnIndex, e.RowIndex).Value) < Val(Produits_DataGridView.Item(Stock.Index, e.RowIndex).Value) + Val(Produits_DataGridView.Item(en_commande.Index, e.RowIndex).Value) Then
                    Produits_DataGridView.Item(Quantité.Index, e.RowIndex).Value = "0"
                    Produits_DataGridView.Item(UG.Index, e.RowIndex).Value = "0"
                End If
                If Val(Produits_DataGridView.Item(Stock_prévisionnel.Index, e.RowIndex).Value) <> Val(Produits_DataGridView.Item(en_commande.Index, e.RowIndex).Value) _
                  + Val(Produits_DataGridView.Item(Stock.Index, e.RowIndex).Value) + Val(Produits_DataGridView.Item(Quantité.Index, e.RowIndex).Value) + Val(Produits_DataGridView.Item(UG.Index, e.RowIndex).Value) Then 'pour ne pas boucler
                    Produits_DataGridView.Item(Quantité.Index, e.RowIndex).Value = Val(Produits_DataGridView.Item(Stock_prévisionnel.Index, e.RowIndex).Value) _
                        - Val(Produits_DataGridView.Item(Stock.Index, e.RowIndex).Value) - Val(Produits_DataGridView.Item(en_commande.Index, e.RowIndex).Value) - Val(Produits_DataGridView.Item(UG.Index, e.RowIndex).Value)
                    If Val(Produits_DataGridView.Item(Quantité.Index, e.RowIndex).Value) < 0 Then
                        Produits_DataGridView.Item(Quantité.Index, e.RowIndex).Value = "0"
                        Produits_DataGridView.Item(UG.Index, e.RowIndex).Value = "0"
                        Produits_DataGridView.Item(Stock_prévisionnel.Index, e.RowIndex).Value = Val(Produits_DataGridView.Item(en_commande.Index, e.RowIndex).Value) _
                        + Val(Produits_DataGridView.Item(Stock.Index, e.RowIndex).Value) + Val(Produits_DataGridView.Item(Quantité.Index, e.RowIndex).Value) _
                        + Val(Produits_DataGridView.Item(UG.Index, e.RowIndex).Value)
                    End If
                End If

            Case Remise.Index, Prix_achat_HT.Index
                If Produits_DataGridView.Item(Remise.Index, e.RowIndex).Value = "" Then
                    Produits_DataGridView.Item(Remise.Index, e.RowIndex).Value = "0"
                End If
                Produits_DataGridView.Item(Remise.Index, e.RowIndex).Value = Replace(Produits_DataGridView.Item(Remise.Index, e.RowIndex).Value, ".", ",")
                Try
                    CDec(Produits_DataGridView.Item(Prix_achat_HT.Index, e.RowIndex).Value).ToString()
                    CDec(Produits_DataGridView.Item(Remise.Index, e.RowIndex).Value).ToString()
                Catch ex As Exception
                    Exit Sub
                End Try
                If Produits_DataGridView.Item(Prix_achat_HT.Index, e.RowIndex).Value <> "" And Produits_DataGridView.Item(Remise.Index, e.RowIndex).Value <> "" Then
                    Produits_DataGridView.Item(Prix_achat_remisé_HT.Index, e.RowIndex).Value = (CDec(Produits_DataGridView.Item(Prix_achat_HT.Index, e.RowIndex).Value) * (100 - CDec(Produits_DataGridView.Item(Remise.Index, e.RowIndex).Value)) / 100).ToString
                    Produits_DataGridView.Item(Prix_achat_TTC.Index, e.RowIndex).Value = (Val(Produits_DataGridView.Item(Prix_achat_remisé_HT.Index, e.RowIndex).Value) * _
                     (100 + Val(Produits_DataGridView.Item(TVA.Index, e.RowIndex).Value)) / 100).ToString
                End If
        End Select
        affiche_recap()
    End Sub

    Private Sub affiche_recap()
        If Produits_DataGridView.RowCount < 1 Or chargement_catalogue_encours = True Then
            Exit Sub
        End If

        Dim tot_unités As Decimal = 0
        Dim tot_HT As Decimal = 0
        Dim tot_HT_Rem As Decimal = 0
        Dim tot_TTC_Rem As Decimal = 0
        For r = 0 To Produits_DataGridView.RowCount - 1
            Try
                tot_unités = tot_unités + CDec(Produits_DataGridView.Item(Quantité.Index, r).Value)
            Catch ex As Exception
            End Try
            Try
                tot_HT = tot_HT + (CDec(Produits_DataGridView.Item(Quantité.Index, r).Value) * CDec(Produits_DataGridView.Item(Prix_achat_HT.Index, r).Value))
            Catch ex As Exception
            End Try
            Try
                tot_HT_Rem = tot_HT_Rem + (CDec(Produits_DataGridView.Item(Quantité.Index, r).Value) * CDec(Produits_DataGridView.Item(Prix_achat_remisé_HT.Index, r).Value))
            Catch ex As Exception
            End Try
            Try
                tot_TTC_Rem = tot_TTC_Rem + (CDec(Produits_DataGridView.Item(Quantité.Index, r).Value) * CDec(Produits_DataGridView.Item(Prix_achat_TTC.Index, r).Value))
            Catch ex As Exception
            End Try
        Next

        Tot_UnitésLabel1.Text = "Tot Unités: " & tot_unités.ToString
        Tot_HTLabel3.Text = "Tot HT: " & tot_HT.ToString
        Tot_HT_remLabel4.Text = "Tot HT rem: " & tot_HT_Rem.ToString
        Tot_TTC_remLabel6.Text = "Tot TTC rem: " & tot_TTC_Rem.ToString
    End Sub
#End Region




    Private Sub Fournisseurs_ComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Fournisseurs_ComboBox.SelectedIndexChanged

        Dim catalogue = BDD.Fournisseurs_CataloguesTableAdapter.GetDataBy_Fournisseur(Fournisseurs_ComboBox.SelectedItem.ToString)
        If catalogue.Rows.Count > 0 Then
            MyMsg_Box.Presentation("Officine ?", "Voulez vous afficher le catalogue " & Fournisseurs_ComboBox.SelectedItem.ToString & " ?" & vbCrLf & "Attention, l'affichage actuel ne sera pas sauvegardé.", True, "OUI", True, "NON", False, "")
            If MyMsg_Box.ShowDialog() = Windows.Forms.DialogResult.Yes Then
                Bandeau_info_bas_show("Chargement catalogue " & Fournisseurs_ComboBox.SelectedItem.ToString & " ...")
                chargement_catalogue_encours = True
                Produits_DataGridView.Rows.Clear()
                For r = 0 To catalogue.Rows.Count - 1
                    Produits_DataGridView.Rows.Add()
                Next
                For i = 0 To Produits_DataGridView.Columns.Count - 1
                    Produits_DataGridView.Columns.Item(i).SortMode = DataGridViewColumnSortMode.NotSortable
                Next i
                For r = 0 To catalogue.Rows.Count - 1

                    Produits_DataGridView.Item(Désignation.Index, r).Value = catalogue(r).Désignation

                    Produits_DataGridView.Item(GTIN13.Index, r).Value = catalogue(r).GTIN13
                    Produits_DataGridView.Item(Cip.Index, r).Value = catalogue(r).CIP


                    'If Produits_DataGridView.Item(Cip.Index, r).Value <> "" And BDD.ProduitsTableAdapter.GetDataByCIP_or_EAN13_or_CAB(Produits_DataGridView.Item(Cip.Index, r).Value).Rows.Count = 1 Then
                    '    Dim produit As PharmaDataSet.ProduitsRow
                    '    produit = BDD.ProduitsTableAdapter.GetDataByCIP_or_EAN13_or_CAB(Produits_DataGridView.Item(Cip.Index, r).Value).Item(0)
                    '    Produits_DataGridView.Item(Stock.Index, r).Value = produit.Stock
                    '    Produits_DataGridView.Item(TVA.Index, r).Value = produit.TVA
                    '    COMPTOIR_MAIN.ProduitsTableAdapter.Update_encommande_calcul_sur_lignes_commandes(Produits_DataGridView.Item(Cip.Index, r).Value)

                    'ElseIf Produits_DataGridView.Item(GTIN13.Index, r).Value <> "" And BDD.ProduitsTableAdapter.GetDataByCIP_or_EAN13_or_CAB(Produits_DataGridView.Item(GTIN13.Index, r).Value).Rows.Count = 1 Then
                    '    Dim produit As PharmaDataSet.ProduitsRow
                    '    produit = BDD.ProduitsTableAdapter.GetDataByCIP_or_EAN13_or_CAB(Produits_DataGridView.Item(GTIN13.Index, r).Value).Item(0)
                    '    Produits_DataGridView.Item(Stock.Index, r).Value = produit.Stock.ToString
                    '    Produits_DataGridView.Item(TVA.Index, r).Value = produit.TVA.ToString
                    '    COMPTOIR_MAIN.ProduitsTableAdapter.Update_encommande_calcul_sur_lignes_commandes(Produits_DataGridView.Item(GTIN13.Index, r).Value)
                    'Else
                    '    Produits_DataGridView.Item(Stock.Index, r).Value = "0"
                    '    Produits_DataGridView.Item(TVA.Index, r).Value = "0"
                    'End If
                    'Produits_DataGridView.Item(Prix_achat_HT.Index, r).Value = catalogue(r).PAHT.ToString
                    'Produits_DataGridView.Item(Remise.Index, r).Value = catalogue(r).Remise.ToString
                    'Produits_DataGridView.Item(Prix_achat_remisé_HT.Index, r).Value = catalogue(r).PAremisé.ToString
                    'Produits_DataGridView.Item(Prix_achat_TTC.Index, r).Value = (Val(Produits_DataGridView.Item(Prix_achat_remisé_HT.Index, r).Value) * _
                    '    (100 + Val(Produits_DataGridView.Item(TVA.Index, r).Value)) / 100).ToString
                    'Produits_DataGridView.Item(Quantité.Index, r).Value = "0"
                    'affiche_Histo_ventes(TrackBar1.Value, r)

                Next
                get_data_produits(catalogue)
                chargement_catalogue_encours = False
                Bandeau_info_bas_hide() 'Bandeau_info_bas_show_thread)
            End If
        Else
            MyMsg_Box.Presentation("Officine !", "Aucun catalogue " & Fournisseurs_ComboBox.SelectedItem.ToString & "." & vbCrLf & "Voulez vous continuer à affichager la liste de produits actuelle?", True, "OUI", True, "NON", False, "")
            If MyMsg_Box.ShowDialog() = Windows.Forms.DialogResult.No Then
                Produits_DataGridView.Rows.Clear()
            End If
        End If

    End Sub
    Private Async Sub get_data_produits(ByVal catalogue As officine.PharmaDataSet.Fournisseurs_CataloguesDataTable)
        For r = 0 To catalogue.Rows.Count - 1

            Try



                If Produits_DataGridView.Item(Cip.Index, r).Value <> "" And BDD.ProduitsTableAdapter.GetDataByCIP_or_EAN13_or_CAB(Produits_DataGridView.Item(Cip.Index, r).Value).Rows.Count = 1 Then
                    Dim produit As PharmaDataSet.ProduitsRow
                    produit = BDD.ProduitsTableAdapter.GetDataByCIP_or_EAN13_or_CAB(Produits_DataGridView.Item(Cip.Index, r).Value).Item(0)
                    Produits_DataGridView.Item(Stock.Index, r).Value = produit.Stock
                    Produits_DataGridView.Item(TVA.Index, r).Value = produit.TVA
                    COMPTOIR_MAIN.ProduitsTableAdapter.Update_encommande_calcul_sur_lignes_commandes(Produits_DataGridView.Item(Cip.Index, r).Value)

                ElseIf Produits_DataGridView.Item(GTIN13.Index, r).Value <> "" And BDD.ProduitsTableAdapter.GetDataByCIP_or_EAN13_or_CAB(Produits_DataGridView.Item(GTIN13.Index, r).Value).Rows.Count = 1 Then
                    Dim produit As PharmaDataSet.ProduitsRow
                    produit = BDD.ProduitsTableAdapter.GetDataByCIP_or_EAN13_or_CAB(Produits_DataGridView.Item(GTIN13.Index, r).Value).Item(0)
                    Produits_DataGridView.Item(Stock.Index, r).Value = produit.Stock.ToString
                    Produits_DataGridView.Item(TVA.Index, r).Value = produit.TVA.ToString
                    COMPTOIR_MAIN.ProduitsTableAdapter.Update_encommande_calcul_sur_lignes_commandes(Produits_DataGridView.Item(GTIN13.Index, r).Value)
                Else
                    Produits_DataGridView.Item(Stock.Index, r).Value = "0"
                    Produits_DataGridView.Item(TVA.Index, r).Value = "0"
                End If
                Produits_DataGridView.Item(Prix_achat_HT.Index, r).Value = catalogue(r).PAHT.ToString
                Produits_DataGridView.Item(Remise.Index, r).Value = catalogue(r).Remise.ToString
                Produits_DataGridView.Item(Prix_achat_remisé_HT.Index, r).Value = catalogue(r).PAremisé.ToString
                Produits_DataGridView.Item(Prix_achat_TTC.Index, r).Value = (Val(Produits_DataGridView.Item(Prix_achat_remisé_HT.Index, r).Value) * _
                    (100 + Val(Produits_DataGridView.Item(TVA.Index, r).Value)) / 100).ToString
                Produits_DataGridView.Item(Quantité.Index, r).Value = "0"
                Application.DoEvents()
            Catch ex As Exception
                MyMsg_Box.Presentation("Officine !", "get_data_produits()" & vbCrLf & ex.Message, False, "", False, "", True, "ok")
                MyMsg_Box.ShowDialog()
            End Try
        Next
        For i = 0 To Produits_DataGridView.Columns.Count - 1
            Produits_DataGridView.Columns.Item(i).SortMode = DataGridViewColumnSortMode.Automatic
        Next i

        Await System.Threading.Tasks.Task.Factory.StartNew(Sub() System.Threading.Thread.Sleep(1))
    End Sub

    Private Sub Import_Catalogue_LinkLabel_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles Import_Catalogue_LinkLabel.LinkClicked
        MyMsg_Box.Presentation("Choix du type de fichier", "1) Liste de code produit" & vbCrLf & vbCrLf & "2) Choix Fournisseur;CODE CIP;CODE GTIN13;Désignation;Prix d'achat HT;REMISE;Prix achat Remisé HT;Unité de commande;", True, "1", True, "2", True, "Annuler")
        Dim réponse = MyMsg_Box.ShowDialog
        Select Case réponse
            Case Windows.Forms.DialogResult.Yes
                If Fournisseurs_ComboBox.Text = "" Or Fournisseurs_ComboBox.Text = "" Then
                    MyMsg_Box.Presentation("Importation de catalogue", "Choisir un fournisseur avant l'importation", False, "", False, "", True, "Ok")
                    MyMsg_Box.ShowDialog()
                    Exit Sub
                End If
                OpenFileDialog1.ShowDialog()
                Dim sr = New StreamReader(OpenFileDialog1.FileName, Encoding.Default)

                Dim line As String = sr.ReadLine
                While Not line Is Nothing
                    If line <> "" Then
                        BDD.Fournisseurs_CataloguesTableAdapter.Delete_by_fournisseur_code(Fournisseurs_ComboBox.Text, line)
                        If IsNumeric(line) = True Then
                            BDD.Fournisseurs_CataloguesTableAdapter.Insert(Fournisseurs_ComboBox.Text, "", line, "", 0, 0, 0, 0)
                        Else
                            BDD.Fournisseurs_CataloguesTableAdapter.Insert(Fournisseurs_ComboBox.Text, "", "", line, 0, 0, 0, 0)
                        End If

                    End If
                    line = sr.ReadLine
                End While
                MyMsg_Box.Presentation("Officine !", "Importation catalogue terminée", False, "", False, "", True, "OK")
                MyMsg_Box.ShowDialog()

            Case Windows.Forms.DialogResult.No
                OpenFileDialog1.DefaultExt = ".csv"
                OpenFileDialog1.ShowDialog()
                Dim sr = New StreamReader(OpenFileDialog1.FileName, Encoding.Default)

                Dim line As String = sr.ReadLine

                If line <> "Choix Fournisseur;CODE CIP;CODE GTIN13;Désignation;Prix d'achat HT;REMISE;Prix achat Remisé HT;Unité de commande;" Then
                    MyMsg_Box.Presentation("Officine ?", "Le fichier ne semble pas avoir le format requis, poursuivre?", True, "OUI", True, "NON", False, "")
                    If MyMsg_Box.ShowDialog() = MsgBoxResult.No Then
                        Exit Sub
                    End If
                End If
                While Not line Is Nothing
                    line = sr.ReadLine
                    If line <> "" Then
                        Try
                            If BDD.Fournisseurs_CataloguesTableAdapter.GetDataBy_Fournisseur_Codes_Désignation(CSV_Champ(line, 1), CSV_Champ(line, 2), CSV_Champ(line, 3), CSV_Champ(line, 4)).Rows.Count > 0 Then
                                BDD.Fournisseurs_CataloguesTableAdapter.DeleteQuery(CSV_Champ(line, 1), CSV_Champ(line, 2), CSV_Champ(line, 3), CSV_Champ(line, 4))
                            End If
                            BDD.Fournisseurs_CataloguesTableAdapter.Insert(CSV_Champ(line, 1), CSV_Champ(line, 2), CSV_Champ(line, 3), CSV_Champ(line, 4), CSV_Champ(line, 5), CSV_Champ(line, 6), CSV_Champ(line, 7), CSV_Champ(line, 8))
                        Catch ex As Exception
                            MyMsg_Box.Presentation("Officine !", CSV_Champ(line, 1) & " " & CSV_Champ(line, 2) & " " & CSV_Champ(line, 3) & " " & CSV_Champ(line, 4) & vbCrLf & ex.Message, False, "", False, "", True, "OK")
                            MyMsg_Box.ShowDialog()

                        End Try
                        line = sr.ReadLine
                    End If
                End While
                MyMsg_Box.Presentation("Officine !", "Importation catalogue terminée", False, "", False, "", True, "OK")
                MyMsg_Box.ShowDialog()
        End Select



    End Sub

    Private Sub Produits_DataGridView_SelectionChanged(sender As Object, e As EventArgs) Handles Produits_DataGridView.SelectionChanged
        If Produits_DataGridView.Item(0, 0).Value = "" Then
            Exit Sub
        End If
        If Produits_DataGridView.RowCount > 0 And Produits_DataGridView.CurrentRow.Index >= 0 Then

            affiche_graphique_vente(Produits_DataGridView.Item(Cip.Index, Produits_DataGridView.CurrentRow.Index).Value, _
                                    Produits_DataGridView.Item(GTIN13.Index, Produits_DataGridView.CurrentRow.Index).Value, _
                                    Produits_DataGridView.Item(Désignation.Index, Produits_DataGridView.CurrentRow.Index).Value, TrackBar1.Value)

            Chart1.ChartAreas(0).AxisX.Interval = 1

        End If
    End Sub

    Private Sub affiche_graphique_vente(ByVal CIP As String, EAN13 As String, Désignation As String, Nombre_Mois As Integer)

        Histo_RichTextBox.Clear()
        Histo_RichTextBox.AppendText(Désignation & vbCrLf)
        Dim achats_ = Produits_AchatsTableAdapter.GetDataBy_code_designation_ordby_date_desc(CIP, Désignation)
        If achats_.Rows.Count = 0 Then
            achats_ = Produits_AchatsTableAdapter.GetDataBy_code_designation_ordby_date_desc(EAN13, Désignation)
        End If
        If achats_.Rows.Count > 0 Then
            For r = 0 To achats_.Rows.Count - 1
                If achats_.Item(r).Prix_achat > 0 Then
                    Histo_RichTextBox.AppendText("Dernier PAHT: " & (achats_.Item(r).Prix_achat.ToString) & "€" & vbCrLf)
                    Histo_RichTextBox.AppendText("Dernière remise: " & (achats_.Item(r).Remise.ToString) & "%" & vbCrLf)
                    Histo_RichTextBox.AppendText("Dernière PA remisé: " & (achats_.Item(r).Prix_achat_remisé.ToString) & "€" & vbCrLf)
                    Exit For
                End If
            Next
        End If

        Dim TabDate() As String
        ReDim TabDate(Nombre_Mois)
        Dim année As String = Now.Year.ToString
        Dim mois As String = Now.Month.ToString
        If mois.Length < 2 Then
            mois = "0" & mois
        End If
        TabDate(0) = année & mois
        For nbrM = 1 To Nombre_Mois
            If mois = "01" Then
                mois = "12"
                année = (Val(année) - 1).ToString
            Else
                mois = (Val(mois) - 1).ToString
                If mois.Length < 2 Then
                    mois = "0" & mois
                End If
            End If
            TabDate(nbrM) = année & mois
        Next

        If Chart1.Series.IndexOf("maSérie") = -1 Then 'series does not exist
            Chart1.Series.Add("maSérie")
        Else
            Chart1.Series.Remove(Chart1.Series("maSérie"))
            Chart1.Series.Add("maSérie")
        End If
        Chart1.Series("maSérie").Color = Color.YellowGreen
        'Chart1.Series("maSérie").LabelBackColor = Color.Red
        Chart1.Series("maSérie").ChartType = DataVisualization.Charting.SeriesChartType.Column
        Chart1.ChartAreas(Chart1.Series("maSérie").ChartArea).AxisY.MajorGrid.Enabled = False
        Chart1.ChartAreas(Chart1.Series("maSérie").ChartArea).AxisX.MajorGrid.Enabled = False
        Chart1.ChartAreas(Chart1.Series("maSérie").ChartArea).Area3DStyle.Enable3D = True
        Chart1.ChartAreas(Chart1.Series("maSérie").ChartArea).Area3DStyle.LightStyle = DataVisualization.Charting.LightStyle.None
        Chart1.Series("maSérie").IsVisibleInLegend = False
        Dim total As Integer = 0
        For nbrM = 0 To Nombre_Mois
            Chart1.Series("maSérie").Points.Add()
        Next
        For nbrM = 0 To Nombre_Mois
            Dim nbreparmoi As Integer = 0
            If COMPTOIR_MAIN.ActesTableAdapter.GetData_YearMonth_CommandesManuelles(CIP, EAN13, Désignation, Mid(TabDate(nbrM), 1, 4), Mid(TabDate(nbrM), 5, 2)).Rows.Count > 0 Then
                nbreparmoi = COMPTOIR_MAIN.ActesTableAdapter.Select_Sum_YearMonth_CommandesManuelles(CIP, EAN13, Désignation, Mid(TabDate(nbrM), 1, 4), Mid(TabDate(nbrM), 5, 2))
            End If

            total = total + nbreparmoi
            Chart1.Series("maSérie").Points.Item(Nombre_Mois - nbrM).AxisLabel = Mid(TabDate(nbrM), 5, 2) + "/" + Mid(TabDate(nbrM), 1, 4)
            Chart1.Series("maSérie").Points.Item(Nombre_Mois - nbrM).IsValueShownAsLabel = True
            Chart1.Series("maSérie").Points.Item(Nombre_Mois - nbrM).SetValueY(nbreparmoi)
        Next
        'Chart1.Series("maSérie").LegendText = total.ToString + " (total)"
        'Chart1.Series("maSérie").IsVisibleInLegend = True
        'Chart1.Series("maSérie").Legend = "Total: " & total.ToString
        Chart1.ChartAreas(Chart1.Series("maSérie").ChartArea).RecalculateAxesScale()

    End Sub

    Private Sub affiche_Histo_ventes(ByVal Nombre_Mois As Integer, ByVal Row_index As Integer)

        Dim TabDate() As String
        ReDim TabDate(Nombre_Mois)
        Dim année As String = Now.Year.ToString
        Dim mois As String = Now.Month.ToString
        If mois.Length < 2 Then
            mois = "0" & mois
        End If
        TabDate(0) = année & mois
        For nbrM = 1 To Nombre_Mois
            If mois = "01" Then
                mois = "12"
                année = (Val(année) - 1).ToString
            Else
                mois = (Val(mois) - 1).ToString
                If mois.Length < 2 Then
                    mois = "0" & mois
                End If
            End If
            TabDate(nbrM) = année & mois
        Next


        Dim Cip_ = Produits_DataGridView.Item(Cip.Index, Row_index).Value
        Dim GTIN13_ = Produits_DataGridView.Item(GTIN13.Index, Row_index).Value
        Dim Désignation_ = Produits_DataGridView.Item(Désignation.Index, Row_index).Value
        Dim total_vente As Integer = 0
        For nbrM = 0 To Nombre_Mois
            If COMPTOIR_MAIN.ActesTableAdapter.GetData_YearMonth_CommandesManuelles(Cip_, GTIN13_, Désignation_, Mid(TabDate(nbrM), 1, 4), Mid(TabDate(nbrM), 5, 2)).Rows.Count > 0 Then
                total_vente = total_vente + COMPTOIR_MAIN.ActesTableAdapter.Select_Sum_YearMonth_CommandesManuelles(Cip_, GTIN13_, Désignation_, Mid(TabDate(nbrM), 1, 4), Mid(TabDate(nbrM), 5, 2))
            End If
        Next
        Produits_DataGridView.Item(Histo_Ventes.Index, Row_index).Value = total_vente.ToString




    End Sub

    Private Sub TrackBar1_MouseUp(sender As Object, e As MouseEventArgs) Handles TrackBar1.MouseUp
        Bandeau_info_bas_show("Calcul des totaux ventes...")
        For r = 0 To Produits_DataGridView.RowCount - 1
            affiche_Histo_ventes(TrackBar1.Value, r)
            Application.DoEvents()
        Next
        Bandeau_info_bas_hide()'Bandeau_info_bas_show_thread)
    End Sub
    Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles TrackBar1.Scroll
        track_bar_GroupBox.Text = (TrackBar1.Value + 1).ToString + " mois"
        affiche_graphique_vente(Produits_DataGridView.Item(Cip.Index, Produits_DataGridView.CurrentRow.Index).Value, _
                                      Produits_DataGridView.Item(GTIN13.Index, Produits_DataGridView.CurrentRow.Index).Value, _
                                      Produits_DataGridView.Item(Désignation.Index, Produits_DataGridView.CurrentRow.Index).Value, TrackBar1.Value)
        Chart1.ChartAreas(0).AxisX.Interval = 1
   

    End Sub


  

    Private Sub Produits_DataGridView_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles Produits_DataGridView.CellPainting
        If e.ColumnIndex = Suppr.Index And e.RowIndex <> -1 Then
            e.Paint(e.CellBounds, DataGridViewPaintParts.All And Not DataGridViewPaintParts.ContentForeground)
            e.Graphics.DrawImage(officine.My.Resources.black_cross, e.CellBounds)
            e.Handled = True
        End If
    End Sub

    Private Sub Produits_DataGridView_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles Produits_DataGridView.CellContentClick

    End Sub

    Private Sub Clear_Click(sender As Object, e As EventArgs) Handles Clear.Click
        MyMsg_Box.Presentation("Officine ?", "Aucune ligne ne sera enregistrée, voulez vous effacer toutes les lignes?", True, "OUI", True, "NON", False, "")
        If MyMsg_Box.ShowDialog() = Windows.Forms.DialogResult.Yes Then
            Produits_DataGridView.Rows.Clear()
        End If
    End Sub


    Private Sub Enregistrer_prix_Button_Click(sender As Object, e As EventArgs) Handles Enregistrer_prix_Button.Click
        If Not Fournisseurs_ComboBox.SelectedItem Is Nothing Then


            For r = 0 To Produits_DataGridView.Rows.Count - 1
                BDD.Fournisseurs_CataloguesTableAdapter.Update_Prix(CDec(Produits_DataGridView.Item(Prix_achat_HT.Index, r).Value), CDec(Produits_DataGridView.Item(Remise.Index, r).Value), _
                                                                                CDec(Produits_DataGridView.Item(Prix_achat_remisé_HT.Index, r).Value), _
                                                                                Fournisseurs_ComboBox.SelectedItem.ToString, Produits_DataGridView.Item(Cip.Index, r).Value, Produits_DataGridView.Item(GTIN13.Index, r).Value, Produits_DataGridView.Item(Désignation.Index, r).Value)
            Next
            Me.Close()

        Else
            MyMsg_Box.Presentation("Officine !", "Fournisseurs?", False, "", False, "", True, "OK")
            MyMsg_Box.ShowDialog()

        End If
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Import_Produit_From_Vidal.ShowDialog()
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Web_browser.Visible = True
        Web_browser.BringToFront()
        Web_browser.WebBrowser1.Navigate("http://" & Replace(Config.LocalNetwork_ServerName, "\", "") & "/ReportServer_SQLEXPRESS/Pages/ReportViewer.aspx?%2fProduits%2fProduits+vendus+Catalogue&rs:Command=Render") ' & parameters)
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        If Produits_DataGridView.RowCount = 0 Then
            Exit Sub
        End If
     
        Dim parameters = ""
        Dim parameters_liste As New List(Of String)
        For r = 0 To Produits_DataGridView.RowCount - 1
            If Produits_DataGridView.Item(Historique_ventes.Index, r).Value = True Then
                If Produits_DataGridView.Item(Cip.Index, r).Value <> "" Then
                    If parameters_liste.Contains(Produits_DataGridView.Item(Cip.Index, r).Value) = False Then
                        parameters_liste.Add(Produits_DataGridView.Item(Cip.Index, r).Value)
                    End If
                ElseIf Produits_DataGridView.Item(GTIN13.Index, r).Value <> "" Then
                    If parameters_liste.Contains(Produits_DataGridView.Item(GTIN13.Index, r).Value) = False Then
                        parameters_liste.Add(Produits_DataGridView.Item(GTIN13.Index, r).Value)
                    End If
                ElseIf Produits_DataGridView.Item(Désignation.Index, r).Value <> "" Then
                    If parameters_liste.Contains(Produits_DataGridView.Item(Désignation.Index, r).Value) = False Then
                        parameters_liste.Add(Produits_DataGridView.Item(Désignation.Index, r).Value)
                    End If
                End If
            End If
        Next
        For Each param As String In parameters_liste
            parameters = parameters & "&Prod=" & param
        Next
        Web_browser.Visible = True
        Web_browser.BringToFront()
        Web_browser.WebBrowser1.Navigate("http://" & Replace(Config.LocalNetwork_ServerName, "\", "") & "/ReportServer_SQLEXPRESS/Pages/ReportViewer.aspx?%2fProduits%2fProduits+vendus+Selection&rs:Command=Render" & parameters)
    End Sub

    Private Sub Recherche_DataGridView_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles Recherche_DataGridView.CellContentClick

    End Sub
End Class