' 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/>.
Public Class Chronique_Ligne

    Public new_line As Boolean
    Private form_shown As Boolean

    Public Structure Chronique_Struct
        Dim Produit_Désignation As String
        Dim Produit_CIP As String
        Dim Produit_EAN13 As String
        Dim Produit_CAB As String
        Dim Commande_Produit As Boolean
        Dim Date_Commande_Produit As Date
        Dim Date_dernière_delivrance As Date
        Dim Date_Renouvellement As Date
        Dim Avertissement_écart As Boolean
        Dim Avertissement_écart_jours As Integer
        Dim Intervalle_renouvellement As Integer
        Dim Intervalle_Commande_Produit As Integer
        Dim Commande_Fournisseur As String
        Dim Commande_Quantité As Integer
        Dim Commande_Ref As String
        Dim Commande_NumLigne As Integer
        Dim Renouvelable As Boolean
        Dim Poso_MATIN As Decimal
        Dim Poso_MIDI As Decimal
        Dim Poso_SOIR As Decimal
        Dim Poso_COUCHER As Decimal
        Dim Poso_BESOIN As Decimal
        Dim Poso_Jours_liste As String
        Dim Poso_Interval_jour As Decimal
        Dim Poso_Interval_dénominateur As Decimal
        Dim pda As Boolean
        Dim chronique As Boolean
        Dim Vitale_Num As Integer
        Dim Prescr_IDinterne As String
        Dim Notes As String
        Dim Période_ID As Integer
        Dim Période_récurence As String
        Dim ALD As Boolean
        Dim G1740C7 As String
        Dim ID_Ordo As Integer


        Public Sub load_from_row(ByVal row As PharmaDataSet.ChroniqueRow)
            Produit_Désignation = row.Produit_Désignation
            Produit_CIP = row.Produit_CIP
            Produit_EAN13 = row.Produit_EAN13
            Produit_CAB = row.Produit_CAB
            Commande_Produit = row.Commande_Produit
            Date_Commande_Produit = row.Date_Commande_Produit
            Date_dernière_delivrance = row.Date_dernière_delivrance
            Date_Renouvellement = row.Date_Renouvellement
            Avertissement_écart = row.Avertissement_écart
            Avertissement_écart_jours = row.Avertissement_écart_jours
            Intervalle_renouvellement = row.Intervalle_renouvellement
            Intervalle_Commande_Produit = row.Intervalle_Commande_Produit
            Commande_Fournisseur = row.Commande_Fournisseur
            Commande_Quantité = row.Commande_Quantité
            Commande_Ref = row.Commande_Ref
            Try
                Commande_NumLigne = row.Commande_NumLigne
            Catch ex As Exception
                Commande_NumLigne = 0
            End Try

            Renouvelable = row.Renouvelable
            Poso_MATIN = row.Poso_MATIN
            Poso_MIDI = row.Poso_MIDI
            Poso_SOIR = row.Poso_SOIR
            Poso_COUCHER = row.Poso_COUCHER
            Poso_BESOIN = row.Poso_BESOIN
            Poso_Jours_liste = row.Poso_Jours_liste
            Poso_Interval_jour = row.Poso_Interval_jour
            Poso_Interval_dénominateur = row.Poso_Interval_dénominateur
            pda = row.pda
            chronique = row.chronique
            Vitale_Num = row.Vitale_Num
            Prescr_IDinterne = row.Prescr_IDinterne
            Notes = row.Notes
            Période_ID = row.Période_ID
            Période_récurence = row.Période_récurence
            ALD = row.ALD
            G1740C7 = row.G1740C7
            Try
                ID_Ordo = row.Id_Ordo
            Catch ex As Exception
                ID_Ordo = 0
            End Try

       

        End Sub
    End Structure
    Public Chronique_item As Chronique_Struct

    Private Function Poso_Jours_liste() As String
        Dim out As String = ""
        If Poso_Lun_CheckBox.Checked Then
            out = out & "1"
        Else
            out = out & "0"
        End If
        If Poso_Mar_CheckBox.Checked Then
            out = out & "1"
        Else
            out = out & "0"
        End If
        If Poso_Mer_CheckBox.Checked Then
            out = out & "1"
        Else
            out = out & "0"
        End If
        If Poso_Jeu_CheckBox.Checked Then
            out = out & "1"
        Else
            out = out & "0"
        End If
        If Poso_Ven_CheckBox.Checked Then
            out = out & "1"
        Else
            out = out & "0"
        End If
        If Poso_Sam_CheckBox.Checked Then
            out = out & "1"
        Else
            out = out & "0"
        End If
        If Poso_Dim_CheckBox.Checked Then
            out = out & "1"
        Else
            out = out & "0"
        End If
        Return out
    End Function

    Private Sub Ok_Button_Click(sender As Object, e As EventArgs) Handles Ok_Button.Click
        If Commande_ProduitCheckBox.Checked = True And (Commande_Fournisseur_MyCombobox.Text = "" Or CInt(Commande_Quantité_TextBox.Text) < 1) Then
            MyMsg_Box.Presentation("Officine !", "Données commande incomplètes", False, "", False, "", True, "Corriger")
            MyMsg_Box.ShowDialog()
            Exit Sub
        End If
        If Commande_Ref_TextBox.Text Is Nothing Then
            Commande_Ref_TextBox.Text = ""
        End If
        Dim Commande_Ref As String = Commande_Ref_TextBox.Text
        If Commande_Ref <> "" Then
            MyMsg_Box.Presentation("Chronique", "Le produit à fait l'objet d'une commande et n'a pas encore été délivré." & vbCrLf & vbCrLf & _
            "Voulez-vous programmer dès maintenant une nouvelle commande?", True, "Oui", True, "Non", True, "Annuler")
            Dim rep = MyMsg_Box.ShowDialog
            If rep = Windows.Forms.DialogResult.Yes Then
                Commande_Ref = ""
                Commande_Ref_TextBox.Text = ""
                Commande_NumLigne_TextBox.Text = "0"
            ElseIf rep = Windows.Forms.DialogResult.Cancel Then
                Exit Sub
            End If
        End If

        BDD.ChroniqueTableAdapter.Delete_By_Datas(Chronique_item.Vitale_Num, Chronique_item.Produit_Désignation, Chronique_item.Produit_CIP, Chronique_item.Produit_EAN13, Chronique_item.Produit_CAB)

        If Période_MyCombobox.Text = "" Then
            Période_MyCombobox.Text = "0"
        End If

        If G1740C7_MyCombobox.Text Is Nothing Then G1740C7_MyCombobox.Text = ""
        Try
            CInt(Id_OrdoTextBox.Text).ToString()
        Catch ex As Exception
            Id_OrdoTextBox.Text = "0"
        End Try




        'Commande_Quantité servira aussi pour les locations-->quantité délivrée
        Dim Commande_Quantité As Integer
        If Location_CheckBox.Checked Then
            Commande_Quantité = CInt(Location_qtt_TextBox.Text)
        Else
            Commande_Quantité = CInt(Commande_Quantité_TextBox.Text)
        End If
        If Location_CheckBox.Checked Then
            Date_RenouvellementDateTimePicker.Value = DateAdd(DateInterval.Day, CInt(Intervalle_renouvellement_TextBox.Text), Date_dernière_delivranceDateTimePicker.Value)
        End If

        BDD.ChroniqueTableAdapter.Insert(Chronique_item.Produit_Désignation, Date_RenouvellementDateTimePicker.Value, Commande_ProduitCheckBox.Checked, _
                                          Date_Commande_ProduitDateTimePicker.Value, Chronique_item.Produit_CAB, Chronique_item.Produit_CIP, Chronique_item.Produit_EAN13, _
                                         Avertissement_écartCheckBox.Checked, CInt(Avertissement_écart_joursTextBox.Text), CInt(Intervalle_Commande_Produit_TextBox.Text), _
                                         CInt(Intervalle_renouvellement_TextBox.Text), Commande_Fournisseur_MyCombobox.Text, Commande_Quantité, Commande_Ref, Date_dernière_delivranceDateTimePicker.Value, _
                                         CDec(Poso_COUCHER_TextBox.Text), CDec(Poso_Interval_dénominateur_TextBox.Text), CDec(Poso_Interval_jour_TextBox.Text), CDec(Poso_MATIN_TextBox.Text), _
                                         CDec(Poso_MIDI_TextBox.Text), CDec(Poso_SOIR_TextBox.Text), Renouvelable_CheckBox.Checked, PDA_CheckBox.Checked, Poso_Jours_liste, Chronique_CheckBox.Checked, _
                                        Chronique_item.Vitale_Num, CDec(Poso_BESOIN_TextBox.Text), Chronique_item.Prescr_IDinterne, 0, RichTextBox1.Text, _
                                         CInt(Période_MyCombobox.Text), Période_récurence_TextBox1.Text & "/" & Période_récurence_TextBox2.Text, ALD_CheckBox.Checked, G1740C7_MyCombobox.Text, _
                                         CInt(Commande_NumLigne_TextBox.Text), CInt(Id_OrdoTextBox.Text))


        Application.DoEvents()
        COMPTOIR_MAIN.Première_Délivrance(True)
        Me.Close()
    End Sub


    Private Sub Suppr_Button_Click(sender As Object, e As EventArgs) Handles Suppr_Button.Click
        BDD.ChroniqueTableAdapter.Delete_By_Datas(Chronique_item.Vitale_Num, Chronique_item.Produit_Désignation, Chronique_item.Produit_CIP, Chronique_item.Produit_EAN13, Chronique_item.Produit_CAB)
        COMPTOIR_MAIN.Chronique_Affichage()
        Application.DoEvents()
        COMPTOIR_MAIN.Première_Délivrance(True)
        Me.Close()
    End Sub

    Private Sub Chronique_Ligne_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
        COMPTOIR_MAIN.Chronique_Affichage()
    End Sub

    Private Sub Chronique_Ligne_Load(sender As Object, e As EventArgs) Handles Me.Load

        Dim vitale_row = BDD.VitaleTableAdapter.GetDataBy_Num(Chronique_item.Vitale_Num).Item(0)

        Patient_NomTextBox.Text = vitale_row.G104C1 & " " & vitale_row.G104C3
        decalage_jours_patientTextBox.Text = vitale_row.Chronique_Periode_decalage_jour
        Produit_DésignationTextBox.Text = Chronique_item.Produit_Désignation
        Try
            Prescripteur_TextBox.Text = COMPTOIR_MAIN.PrescripteursTableAdapter.GetPrescripteurDataByIDinterne(Chronique_item.Prescr_IDinterne).Item(0).NomPrénom
            Prescripteur_TextBox.BackColor = Color.White
        Catch ex As Exception
            Chronique_item.Prescr_IDinterne = ""
            Prescripteur_TextBox.Text = "AUCUN PRESCRIPTEUR N'EST SELECTIONNÉ"
            Prescripteur_TextBox.BackColor = Color.Red
        End Try
        Commande_ProduitCheckBox.Checked = Chronique_item.Commande_Produit
        Date_Commande_ProduitDateTimePicker.Value = Chronique_item.Date_Commande_Produit
        Date_dernière_delivranceDateTimePicker.Value = Chronique_item.Date_dernière_delivrance
        Date_RenouvellementDateTimePicker.Value = Chronique_item.Date_Renouvellement
        Avertissement_écartCheckBox.Checked = Chronique_item.Avertissement_écart
        Avertissement_écart_joursTextBox.Text = Chronique_item.Avertissement_écart_jours
        Intervalle_renouvellement_TextBox.Text = Chronique_item.Intervalle_renouvellement
        Intervalle_Commande_Produit_TextBox.Text = Chronique_item.Intervalle_Commande_Produit
        Commande_Fournisseur_MyCombobox.Text = Chronique_item.Commande_Fournisseur
        Commande_Quantité_TextBox.Text = Chronique_item.Commande_Quantité
        Commande_Ref_TextBox.Text = Chronique_item.Commande_Ref
        Commande_NumLigne_TextBox.Text = Chronique_item.Commande_NumLigne.ToString
        Dim fournisseurs = BDD.FournisseurTableAdapter.GetData_OrderByNom
        Commande_Fournisseur_MyCombobox.Items.Clear()
        For r = 0 To fournisseurs.Rows.Count - 1
            Commande_Fournisseur_MyCombobox.Items.Add(fournisseurs.Item(r).Nom)
        Next
        Renouvelable_CheckBox.Checked = Chronique_item.Renouvelable
        Poso_MATIN_TextBox.Text = Chronique_item.Poso_MATIN.ToString
        Poso_MIDI_TextBox.Text = Chronique_item.Poso_MIDI.ToString
        Poso_SOIR_TextBox.Text = Chronique_item.Poso_SOIR.ToString
        Poso_COUCHER_TextBox.Text = Chronique_item.Poso_COUCHER.ToString
        Poso_BESOIN_TextBox.Text = Chronique_item.Poso_BESOIN.ToString
        If Mid(Chronique_item.Poso_Jours_liste, 1, 1) = "1" Then
            Poso_Lun_CheckBox.Checked = True
        Else
            Poso_Lun_CheckBox.Checked = False
        End If
        If Mid(Chronique_item.Poso_Jours_liste, 2, 1) = "1" Then
            Poso_Mar_CheckBox.Checked = True
        Else
            Poso_Mar_CheckBox.Checked = False
        End If
        If Mid(Chronique_item.Poso_Jours_liste, 3, 1) = "1" Then
            Poso_Mer_CheckBox.Checked = True
        Else
            Poso_Mer_CheckBox.Checked = False
        End If
        If Mid(Chronique_item.Poso_Jours_liste, 4, 1) = "1" Then
            Poso_Jeu_CheckBox.Checked = True
        Else
            Poso_Jeu_CheckBox.Checked = False
        End If
        If Mid(Chronique_item.Poso_Jours_liste, 5, 1) = "1" Then
            Poso_Ven_CheckBox.Checked = True
        Else
            Poso_Ven_CheckBox.Checked = False
        End If
        If Mid(Chronique_item.Poso_Jours_liste, 6, 1) = "1" Then
            Poso_Sam_CheckBox.Checked = True
        Else
            Poso_Sam_CheckBox.Checked = False
        End If
        If Mid(Chronique_item.Poso_Jours_liste, 7, 1) = "1" Then
            Poso_Dim_CheckBox.Checked = True
        Else
            Poso_Dim_CheckBox.Checked = False
        End If
        Poso_Interval_dénominateur_TextBox.Text = Chronique_item.Poso_Interval_dénominateur.ToString
        Poso_Interval_jour_TextBox.Text = Chronique_item.Poso_Interval_jour.ToString

        PDA_CheckBox.Checked = Chronique_item.pda
        Chronique_CheckBox.Checked = Chronique_item.chronique
        RichTextBox1.Text = Chronique_item.Notes
        affiche_Plan_Perso()


        Dim période = BDD.Chronique_PériodeTableAdapter.GetData
        Période_MyCombobox.Items.Clear()
        Période_MyCombobox.Buttons_color_list = New List(Of String)
        For r = 0 To période.Rows.Count - 1
            Période_MyCombobox.Items.Add(période.Item(r).Id)
            Période_MyCombobox.Buttons_color_list.Add(période.Item(r).Color_hex)
        Next
        Période_MyCombobox.Text = Chronique_item.Période_ID
        Période_récurence_TextBox1.Text = Mid(Chronique_item.Période_récurence, 1, InStr(Chronique_item.Période_récurence, "/") - 1)
        Période_récurence_TextBox2.Text = Mid(Chronique_item.Période_récurence, InStr(Chronique_item.Période_récurence, "/") + 1)

        ALD_CheckBox.Checked = Chronique_item.ALD

        If new_line = True And vitale_row.Chronique_Periode <> 0 Then
            For i = 0 To Période_MyCombobox.Items.Count - 1
                If vitale_row.Chronique_Periode.ToString = Période_MyCombobox.Items(i).ToString Then
                    Période_MyCombobox.SelectedIndex = i
                    Exit For
                End If
            Next
        End If

        G1740C7_MyCombobox.Text = Chronique_item.G1740C7
        Try
            Id_OrdoTextBox.Text = Chronique_item.ID_Ordo.ToString
            If BDD.OrdoTableAdapter.GetDataBy_Id_Ordo(Chronique_item.ID_Ordo).Item(0).Type = "LOCATION" Then
                Location_CheckBox.Checked = True
            End If

        Catch ex As Exception

        End Try
    End Sub

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles Avertissement_écart_joursTextBox.TextChanged, Intervalle_renouvellement_TextBox.TextChanged, _
        Intervalle_Commande_Produit_TextBox.TextChanged, Commande_Quantité_TextBox.TextChanged
        Try
            If sender.Text <> "" Then
                CInt(sender.Text).ToString()
            End If
        Catch ex As Exception
            sender.Text = ""
        End Try
    End Sub

    Private Sub Avertissement_écart_joursTextBox_Validated(sender As Object, e As EventArgs) Handles Avertissement_écart_joursTextBox.Validated ', Intervalle_renouvellement_TextBox.Validated, Intervalle_Commande_Produit_TextBox.Validated
        If sender.Text = "" Then
            sender.Text = "0"
        End If
    End Sub


    Private Sub Intervalle_renouvellement_TextBox_Validated(sender As Object, e As EventArgs) Handles Intervalle_renouvellement_TextBox.Validated
        If sender.Text = "" Then
            sender.Text = "0"
        End If
        Date_RenouvellementDateTimePicker.Value = DateAdd(DateInterval.Day, CDbl(Intervalle_renouvellement_TextBox.Text), Date_dernière_delivranceDateTimePicker.Value)
        Date_Commande_ProduitDateTimePicker.Value = DateAdd(DateInterval.Day, CDbl(Intervalle_Commande_Produit_TextBox.Text) * (-1), Date_RenouvellementDateTimePicker.Value)
    End Sub

    Private Sub Intervalle_Commande_Produit_TextBox_Validated(sender As Object, e As EventArgs) Handles Intervalle_Commande_Produit_TextBox.Validated
        If sender.Text = "" Then
            sender.Text = "0"
        End If
        Date_Commande_ProduitDateTimePicker.Value = DateAdd(DateInterval.Day, CDbl(Intervalle_Commande_Produit_TextBox.Text) * (-1), Date_RenouvellementDateTimePicker.Value)
    End Sub


    Private Sub Commande_Quantité_TextBox_Validated(sender As Object, e As EventArgs) Handles Commande_Quantité_TextBox.Validated
        If sender.Text = "" Then
            sender.Text = "0"
        End If
    End Sub

    Private Sub plan_standard_Button_Click(sender As Object, e As EventArgs) Handles plan_standard_Button.Click
        poso_perso_GroupBox.Visible = False
        Plan_Poso_Perso_DataGridView.Visible = False
        Res_Produit_GroupBox.Visible = True
        poso_standard_GroupBox.Visible = True
        Suppr_Button.Visible = True
        Ok_Button.Visible = True
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        poso_perso_GroupBox.Visible = True
        Plan_Poso_Perso_DataGridView.Visible = True
        Res_Produit_GroupBox.Visible = False
        poso_standard_GroupBox.Visible = False
        Suppr_Button.Visible = False
        Ok_Button.Visible = False
    End Sub

    Private Sub Ok_Perso_Button_Click(sender As Object, e As EventArgs) Handles Ok_Perso_Button.Click
        If CInt(Poso_MATIN_Perso_TextBox.Text) > 0 Then
            BDD.Plan_PosoTableAdapter.Insert(Chronique_item.Produit_Désignation, Chronique_item.Produit_CIP, Chronique_item.Produit_EAN13, Chronique_item.Produit_CAB, _
                                             Date_delivrance_Perso_DateTimePicker.Value, PDA_Perso_CheckBox.Checked, Chronique_item.Vitale_Num, Now, Chronique_item.Prescr_IDinterne, 0, _
                                             CInt(Poso_MATIN_Perso_TextBox.Text), "0800")
        End If
        If CInt(Poso_MIDI_Perso_TextBox.Text) > 0 Then
            BDD.Plan_PosoTableAdapter.Insert(Chronique_item.Produit_Désignation, Chronique_item.Produit_CIP, Chronique_item.Produit_EAN13, Chronique_item.Produit_CAB, _
                                             Date_delivrance_Perso_DateTimePicker.Value, PDA_Perso_CheckBox.Checked, Chronique_item.Vitale_Num, Now, Chronique_item.Prescr_IDinterne, 0, _
                                             CInt(Poso_MIDI_Perso_TextBox.Text), "1200")
        End If
        If CInt(Poso_SOIR_Perso_TextBox.Text) > 0 Then
            BDD.Plan_PosoTableAdapter.Insert(Chronique_item.Produit_Désignation, Chronique_item.Produit_CIP, Chronique_item.Produit_EAN13, Chronique_item.Produit_CAB, _
                                             Date_delivrance_Perso_DateTimePicker.Value, PDA_Perso_CheckBox.Checked, Chronique_item.Vitale_Num, Now, Chronique_item.Prescr_IDinterne, 0, _
                                             CInt(Poso_SOIR_Perso_TextBox.Text), "1900")
        End If
        If CInt(Poso_COUCHER_Perso_TextBox.Text) > 0 Then
            BDD.Plan_PosoTableAdapter.Insert(Chronique_item.Produit_Désignation, Chronique_item.Produit_CIP, Chronique_item.Produit_EAN13, Chronique_item.Produit_CAB, _
                                             Date_delivrance_Perso_DateTimePicker.Value, PDA_Perso_CheckBox.Checked, Chronique_item.Vitale_Num, Now, Chronique_item.Prescr_IDinterne, 0, _
                                             CInt(Poso_COUCHER_Perso_TextBox.Text), "2100")
        End If
        If CInt(Poso_BESOIN_perso_TextBox.Text) > 0 Then
            BDD.Plan_PosoTableAdapter.Insert(Chronique_item.Produit_Désignation, Chronique_item.Produit_CIP, Chronique_item.Produit_EAN13, Chronique_item.Produit_CAB, _
                                             Date_delivrance_Perso_DateTimePicker.Value, PDA_Perso_CheckBox.Checked, Chronique_item.Vitale_Num, Now, Chronique_item.Prescr_IDinterne, 0, _
                                             CInt(Poso_BESOIN_perso_TextBox.Text), "1000")
        End If
        affiche_Plan_Perso()

    End Sub
    Private Sub affiche_Plan_Perso()
        Plan_Poso_Perso_DataGridView.Rows.Clear()
        Dim datas = BDD.Plan_PosoTableAdapter.GetData_Patient(Chronique_item.Vitale_Num)
        For r = 0 To datas.Rows.Count - 1
            Plan_Poso_Perso_DataGridView.Rows.Add()
        Next
        For r = 0 To datas.Rows.Count - 1
            Plan_Poso_Perso_DataGridView.Item(Produit_Désignation.Index, r).Value = datas(r).Produit_Désignation
            Plan_Poso_Perso_DataGridView.Item(Produit_CIP.Index, r).Value = datas(r).Produit_CIP
            Plan_Poso_Perso_DataGridView.Item(Produit_EAN13.Index, r).Value = datas(r).Produit_EAN13
            Plan_Poso_Perso_DataGridView.Item(Produit_CAB.Index, r).Value = datas(r).Produit_CAB
            Plan_Poso_Perso_DataGridView.Item(Date_.Index, r).Value = datas(r)._Date

            '''''''''''''''''''
            If datas(r).heure = "0800" Then
                Plan_Poso_Perso_DataGridView.Item(Poso_MATIN.Index, r).Value = datas(r).Poso
            ElseIf datas(r).heure = "1000" Then
                Plan_Poso_Perso_DataGridView.Item(Poso_BESOIN.Index, r).Value = datas(r).Poso
            ElseIf datas(r).heure = "1200" Then
                Plan_Poso_Perso_DataGridView.Item(Poso_MIDI.Index, r).Value = datas(r).Poso
            ElseIf datas(r).heure = "1900" Then
                Plan_Poso_Perso_DataGridView.Item(Poso_SOIR.Index, r).Value = datas(r).Poso
            ElseIf datas(r).heure = "2100" Then
                Plan_Poso_Perso_DataGridView.Item(Poso_COUCHER.Index, r).Value = datas(r).Poso
            End If
            ''''''''''''''''''''''
            Plan_Poso_Perso_DataGridView.Item(pda.Index, r).Value = datas(r).pda
            Plan_Poso_Perso_DataGridView.Item(Suppr_column.Index, r).Value = "supprimer"
        Next
    End Sub

    Private Sub Plan_Poso_Perso_DataGridView_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles Plan_Poso_Perso_DataGridView.CellContentClick
        If e.ColumnIndex = Suppr_column.Index Then
            BDD.Plan_PosoTableAdapter.Delete_line(CDec(Chronique_item.Vitale_Num), Plan_Poso_Perso_DataGridView.Item(Produit_Désignation.Index, e.RowIndex).Value, _
                                                            Plan_Poso_Perso_DataGridView.Item(Produit_CIP.Index, e.RowIndex).Value, Plan_Poso_Perso_DataGridView.Item(Produit_EAN13.Index, e.RowIndex).Value, _
                                                            Plan_Poso_Perso_DataGridView.Item(Produit_CAB.Index, e.RowIndex).Value, CDate(Plan_Poso_Perso_DataGridView.Item(Date_.Index, e.RowIndex).Value), _
                                                            CDec(Plan_Poso_Perso_DataGridView.Item(Poso_MATIN.Index, e.RowIndex).Value), CDec(Plan_Poso_Perso_DataGridView.Item(Poso_MIDI.Index, e.RowIndex).Value), _
                                                            CDec(Plan_Poso_Perso_DataGridView.Item(Poso_SOIR.Index, e.RowIndex).Value), CDec(Plan_Poso_Perso_DataGridView.Item(Poso_COUCHER.Index, e.RowIndex).Value), _
                                                            CBool(Plan_Poso_Perso_DataGridView.Item(pda.Index, e.RowIndex).Value), CDec(Plan_Poso_Perso_DataGridView.Item(Poso_BESOIN.Index, e.RowIndex).Value))
            affiche_Plan_Perso()
        End If

    End Sub

    Private Sub Poso_Interval_jour_TextBox_TextChanged(sender As Object, e As EventArgs) Handles Poso_Interval_jour_TextBox.TextChanged, Poso_Interval_dénominateur_TextBox.TextChanged
        Try
            CInt(Poso_Interval_jour_TextBox.Text).ToString()
        Catch ex As Exception
            Poso_Interval_jour_TextBox.Text = "1"
        End Try
        If CInt(Poso_Interval_jour_TextBox.Text) > CInt(Poso_Interval_dénominateur_TextBox.Text) Then
            Poso_Interval_jour_TextBox.Text = "1"
            Poso_Interval_dénominateur_TextBox.Text = "1"
        End If
        If Poso_Interval_jour_TextBox.Text <> "1" Or Poso_Interval_dénominateur_TextBox.Text <> "1" Then
            Poso_Lun_CheckBox.Checked = True
            Poso_Lun_CheckBox.Enabled = False
            Poso_Mar_CheckBox.Checked = True
            Poso_Mar_CheckBox.Enabled = False
            Poso_Mer_CheckBox.Checked = True
            Poso_Mer_CheckBox.Enabled = False
            Poso_Jeu_CheckBox.Checked = True
            Poso_Jeu_CheckBox.Enabled = False
            Poso_Ven_CheckBox.Checked = True
            Poso_Ven_CheckBox.Enabled = False
            Poso_Sam_CheckBox.Checked = True
            Poso_Sam_CheckBox.Enabled = False
            Poso_Dim_CheckBox.Checked = True
            Poso_Dim_CheckBox.Enabled = False
        Else
            Poso_Lun_CheckBox.Checked = True
            Poso_Lun_CheckBox.Enabled = True
            Poso_Mar_CheckBox.Checked = True
            Poso_Mar_CheckBox.Enabled = True
            Poso_Mer_CheckBox.Checked = True
            Poso_Mer_CheckBox.Enabled = True
            Poso_Jeu_CheckBox.Checked = True
            Poso_Jeu_CheckBox.Enabled = True
            Poso_Ven_CheckBox.Checked = True
            Poso_Ven_CheckBox.Enabled = True
            Poso_Sam_CheckBox.Checked = True
            Poso_Sam_CheckBox.Enabled = True
            Poso_Dim_CheckBox.Checked = True
            Poso_Dim_CheckBox.Enabled = True
        End If
    End Sub


    Private Sub Prescr_MAJ_Button_Click(sender As Object, e As EventArgs) Handles Prescr_MAJ_Button.Click
        Chronique_item.Prescr_IDinterne = CurrentBenéficiaire.Prescripteur_ID
        Try
            Prescripteur_TextBox.Text = COMPTOIR_MAIN.PrescripteursTableAdapter.GetPrescripteurDataByIDinterne(Chronique_item.Prescr_IDinterne).Item(0).NomPrénom
            Prescripteur_TextBox.BackColor = Color.White
        Catch ex As Exception
            Chronique_item.Prescr_IDinterne = ""
            Prescripteur_TextBox.Text = "AUCUN PRESCRIPTEUR N'EST SELECTIONNÉ"
            Prescripteur_TextBox.BackColor = Color.Red
        End Try

    End Sub





    Private Sub Période_MyCombobox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Période_MyCombobox.SelectedIndexChanged

        calcul_date_commande()
    End Sub

  

    Private Sub sauter_cycle_commande_TextBox_TextChanged(sender As Object, e As EventArgs) Handles sauter_cycle_commande_TextBox.TextChanged
        calcul_date_commande()

    End Sub

    Private Sub calcul_date_commande()

        If form_shown = False Then Exit Sub

        Try
            If CInt(Période_récurence_TextBox1.Text) = 0 Then
                Période_récurence_TextBox1.Text = "1"
            End If
        Catch ex As Exception
            Période_récurence_TextBox1.Text = "1"
        End Try
        Try
            CInt(Période_récurence_TextBox2.Text).ToString()
        Catch ex As Exception
            Période_récurence_TextBox2.Text = "1"
        End Try
        Try
            CInt(sauter_cycle_commande_TextBox.Text).ToString()
        Catch ex As Exception
            sauter_cycle_commande_TextBox.Text = "0"
        End Try
        Try
            If Not Période_MyCombobox.SelectedItem Is Nothing Then
                If Période_MyCombobox.SelectedIndex <> 0 Then
                    Dim période = BDD.Chronique_PériodeTableAdapter.GetDataBy_Id(Période_MyCombobox.Items.Item(Période_MyCombobox.SelectedIndex)).Item(0)
                    Dim interval As Integer = (CInt(période.interval_command_jours * CInt(Période_récurence_TextBox2.Text) / CInt(Période_récurence_TextBox1.Text))) * CInt(sauter_cycle_commande_TextBox.Text)

                    Date_Commande_ProduitDateTimePicker.Value = DateAdd(DateInterval.Day, interval + CInt(decalage_jours_patientTextBox.Text), période.Date_prochaine_commande)
               
            End If
            End If
        Catch ex As Exception
        End Try
    End Sub

    Private Sub Période_récurence_TextBox1_TextChanged(sender As Object, e As EventArgs) Handles Période_récurence_TextBox1.TextChanged
        calcul_date_commande()
    End Sub
    Private Sub Période_récurence_TextBox2_TextChanged(sender As Object, e As EventArgs) Handles Période_récurence_TextBox2.TextChanged
        calcul_date_commande()
    End Sub

    Private Sub Chronique_Ligne_Shown(sender As Object, e As EventArgs) Handles Me.Shown
        form_shown = True
    End Sub

  

  
    
    Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
        Try
           
            Dim my_Chronique_Remplacement_Produit As New Chronique_Remplacement_Produit
            my_Chronique_Remplacement_Produit.Vitale_Num = Chronique_item.Vitale_Num
            my_Chronique_Remplacement_Produit.Produit_CAB = Chronique_item.Produit_CAB
            my_Chronique_Remplacement_Produit.Produit_CIP = Chronique_item.Produit_CIP
            my_Chronique_Remplacement_Produit.Produit_Désignation = Chronique_item.Produit_Désignation
            my_Chronique_Remplacement_Produit.Produit_EAN13 = Chronique_item.Produit_EAN13
            my_Chronique_Remplacement_Produit.ShowDialog()
            Me.Close()
        Catch ex As Exception

        End Try
    End Sub


    Private Sub Reserver_Button_Click(sender As Object, e As EventArgs) Handles Reserver_Button.Click
        Try
            Dim produit = BDD.ProduitsTableAdapter.GetDataBy_CIPandEAN13andCABandDesignation(Chronique_item.Produit_CIP, Chronique_item.Produit_EAN13, Chronique_item.Produit_CAB, Chronique_item.Produit_Désignation).Item(0)
            MyMsg_Box.Presentation("Reserver les Produits", produit.Designation & vbCrLf & vbCrLf & "Stock actuel: " & produit.Stock.ToString & vbCrLf & vbCrLf & _
                                   "Reserver " & Chronique_item.Commande_Quantité.ToString & " ?", True, "Oui", True, "Non", False, "")
            If MyMsg_Box.ShowDialog = Windows.Forms.DialogResult.Yes Then
                BDD.Produits_ReservésTableAdapter.Insert(Chronique_item.Produit_Désignation, Chronique_item.Produit_CIP, Chronique_item.Produit_EAN13, _
               Chronique_item.Produit_CAB, Chronique_item.Commande_Quantité, Now, DateAdd(DateInterval.Day, CInt(Intervalle_renouvellement_TextBox.Text), Date_dernière_delivranceDateTimePicker.Value), _
               Date_dernière_delivranceDateTimePicker.Value, Chronique_item.Vitale_Num, ALD_CheckBox.Checked)

                If Chronique_item.Produit_EAN13 <> "" Then
                    BDD.ProduitsTableAdapter.UpdateStock_By_CIP_CAB(Chronique_item.Commande_Quantité * (-1), Chronique_item.Produit_EAN13, Chronique_item.Produit_CAB)
                Else
                    BDD.ProduitsTableAdapter.UpdateStock_By_CIP_CAB(Chronique_item.Commande_Quantité * (-1), Chronique_item.Produit_CIP, Chronique_item.Produit_CAB)
                End If




                '''''''''''''''
               
                Dim Date_Renouvellement = DateAdd(DateInterval.DayOfYear, CInt(Intervalle_renouvellement_TextBox.Text), Date_dernière_delivranceDateTimePicker.Value)
                Dim Date_Commande_Produit As Date
                If Chronique_item.Période_ID = 0 Then
                    Date_Commande_Produit = DateAdd(DateInterval.DayOfYear, Chronique_item.Intervalle_Commande_Produit * (-1), Date_Renouvellement)
                Else
                    If Chronique_item.Date_Commande_Produit < Now Then
                        Dim période_data = BDD.Chronique_PériodeTableAdapter.GetDataBy_Id(Chronique_item.Période_ID).Item(0)
                        Dim interval As Integer = CInt(période_data.interval_command_jours * CInt(Mid(Chronique_item.Période_récurence, InStr(Chronique_item.Période_récurence, "/") + 1)) / CInt(Mid(Chronique_item.Période_récurence, 1, InStr(Chronique_item.Période_récurence, "/") - 1)))
                        Date_Commande_Produit = DateAdd(DateInterval.Day, interval, BDD.Chronique_PériodeTableAdapter.GetDataBy_Id(Chronique_item.Période_ID).Item(0).Date_dernière_commande)
                        If CurrentBenéficiaire.Chronique_Periode_decalage_jour <> 0 Then
                            Date_Commande_Produit = DateAdd(DateInterval.Day, CurrentBenéficiaire.Chronique_Periode_decalage_jour, Date_Commande_Produit)
                        End If
                    Else
                        Date_Commande_Produit = Chronique_item.Date_Commande_Produit
                    End If
                End If
                BDD.ChroniqueTableAdapter.Update_Dates(Chronique_item.Date_dernière_delivrance, Date_Renouvellement, Date_Commande_Produit, Chronique_item.Vitale_Num, _
                                                                    Chronique_item.Produit_Désignation, Chronique_item.Produit_CIP, Chronique_item.Produit_EAN13, Chronique_item.Produit_CAB)
                BDD.ChroniqueTableAdapter.Update_Commande_Ref("Reservation manuelle", 0, Chronique_item.Vitale_Num, _
                                                                    Chronique_item.Produit_Désignation, Chronique_item.Produit_CIP, Chronique_item.Produit_EAN13, Chronique_item.Produit_CAB)
                '''''''''''''''
            End If
            Me.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub

    Private Sub Location_CheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles Location_CheckBox.CheckedChanged
        If Location_CheckBox.Checked Then
            Chronique_CheckBox.Checked = False
            Renouvelable_CheckBox.Checked = False
            ALD_CheckBox.Checked = False
            Commande_ProduitCheckBox.Checked = False
            Chronique_CheckBox.Enabled = False
            Renouvelable_CheckBox.Enabled = False
            ALD_CheckBox.Enabled = False
            Commande_ProduitCheckBox.Enabled = False
            Location_qtt_Label.Visible = True
            Location_qtt_TextBox.Visible = True
        Else
            Chronique_CheckBox.Enabled = True
            Renouvelable_CheckBox.Enabled = True
            ALD_CheckBox.Enabled = True
            Commande_ProduitCheckBox.Enabled = True
            Location_qtt_Label.Visible = False
            Location_qtt_TextBox.Visible = False
        End If

    End Sub

    Private Sub Location_qtt_TextBox_TextChanged(sender As Object, e As EventArgs) Handles Location_qtt_TextBox.TextChanged
        Try
            CInt(Location_qtt_TextBox.Text).ToString()
        Catch ex As Exception
            Location_qtt_TextBox.Text = "1"
        End Try
    End Sub
End Class