' 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_Remplacement_Produit
    Public Vitale_Num As Decimal
    Public Produit_Désignation As String
    Public Produit_CIP As String
    Public Produit_EAN13 As String
    Public Produit_CAB As String
   

    Private Sub Chronique_Remplacement_Produit_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        If Vitale_Num = 0 Then
            Bénéficiaire_Produit_Label.Text = "Remplacement de produit pour tous les enregistrements:" & vbCrLf & Produit_Désignation & vbCrLf & Produit_EAN13
        Else
            Dim nom_patient As String = "@@@"
            Try
                Dim patient = BDD.VitaleTableAdapter.GetDataBy_Num(Vitale_Num).Item(0)
                nom_patient = patient.G104C1 & " " & patient.G104C3
            Catch ex As Exception

            End Try
            Bénéficiaire_Produit_Label.Text = "Remplacement de produit pour " & nom_patient & " :" & vbCrLf & Produit_Désignation & vbCrLf & Produit_EAN13
        End If

    End Sub

    Private Sub Recherche_TextBox_Enter(sender As Object, e As EventArgs) Handles Recherche_TextBox.Enter
        Recherche_TextBox.Text = ""
    End Sub

    Private Sub Recherche_TextBox_KeyDown(sender As Object, e As KeyEventArgs) Handles Recherche_TextBox.KeyDown
        If e.KeyCode = Keys.Enter Then
            Recherche_TextBox_Validated(Nothing, Nothing)
        End If
    End Sub

    Private Sub Recherche_TextBox_Validated(sender As Object, e As EventArgs) Handles Recherche_TextBox.Validated
        Try

       
        If Recherche_TextBox.Text <> "" Then
            Dim is_datamatrix As Boolean = False
            Dim produits_string_searched = Recherche_TextBox.Text
            If Mid(produits_string_searched, 1, 2) = "01" And Mid(produits_string_searched, 17, 2) = "17" And Mid(produits_string_searched, 25, 2) = "10" Then
                is_datamatrix = True
            ElseIf Mid(produits_string_searched, 1, 2) = "01" And Mid(produits_string_searched, 17, 2) = "11" And Mid(produits_string_searched, 25, 2) = "17" And Mid(produits_string_searched, 33, 2) = "10" Then
                is_datamatrix = True
            ElseIf Mid(produits_string_searched, 1, 3) = "010" And produits_string_searched.Length >= 16 Then
                produits_string_searched = Mid(produits_string_searched, 4, 13)
            ElseIf IsNumeric(produits_string_searched) And produits_string_searched.Length > 13 Then
                produits_string_searched = Mid(produits_string_searched, 1, 13)
            End If
            If is_datamatrix = True Then
                produits_string_searched = Mid(produits_string_searched, 4, 13)
            End If
            Me.ProduitsTableAdapter.selectproduit(Me.PharmaDataSet.Produits, produits_string_searched, produits_string_searched, Replace(produits_string_searched, " ", "%"), produits_string_searched)
                RechercheProduits_Datagridview.DataSource = Me.PharmaDataSet.Produits
                For r = 0 To RechercheProduits_Datagridview.RowCount - 1
                    RechercheProduits_Datagridview.Item(Selection.Index, r).Value = "selection"
                Next
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub RechercheProduits_Datagridview_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles RechercheProduits_Datagridview.CellContentClick
        If e.ColumnIndex = Selection.Index And e.RowIndex >= 0 Then
            MyMsg_Box.Presentation("Chronique", "Remplacer:" & vbCrLf & Produit_Désignation & vbCrLf & vbCrLf & "par:" _
                                   & vbCrLf & RechercheProduits_Datagridview.Item(Designation.Index, e.RowIndex).Value, _
                                   True, "Oui", True, "Non", True, "Annuler")

            Dim rep = MyMsg_Box.ShowDialog
            If rep = Windows.Forms.DialogResult.Yes Then
                Dim update_commande = False
                MyMsg_Box.Presentation("Remplacement de produit", "Voulez-vous reprogrammer les commandes?", _
                                    True, "Oui", True, "Non", True, "Annuler")
                Select Case MyMsg_Box.ShowDialog
                    Case Windows.Forms.DialogResult.Yes
                        update_commande = True
                    Case Windows.Forms.DialogResult.No
                    Case Windows.Forms.DialogResult.Cancel
                        Exit Sub
                End Select
                Bandeau_info_bas_show("Enregistrement")
                If Vitale_Num <> 0 Then
                    BDD.ChroniqueTableAdapter.Update_produit_Ligne(RechercheProduits_Datagridview.Item(Designation.Index, e.RowIndex).Value, _
                                                                   RechercheProduits_Datagridview.Item(CIP.Index, e.RowIndex).Value, _
                                                                   RechercheProduits_Datagridview.Item(EAN13.Index, e.RowIndex).Value, _
                                                                   RechercheProduits_Datagridview.Item(CAB.Index, e.RowIndex).Value, _
                                                                   Produit_Désignation, Produit_CIP, Produit_EAN13, Produit_CAB, Vitale_Num)
                    If update_commande = True Then
                        BDD.ChroniqueTableAdapter.Update_Commande_Ref("", 0, Vitale_Num, RechercheProduits_Datagridview.Item(Designation.Index, e.RowIndex).Value, _
                                                                   RechercheProduits_Datagridview.Item(CIP.Index, e.RowIndex).Value, _
                                                                   RechercheProduits_Datagridview.Item(EAN13.Index, e.RowIndex).Value, _
                                                                   RechercheProduits_Datagridview.Item(CAB.Index, e.RowIndex).Value)
                    End If
                    declarations.trace_log("BDD.ChroniqueTableAdapter.Update_produit_Ligne " & RechercheProduits_Datagridview.Item(Designation.Index, e.RowIndex).Value & "/" & _
                                                                   RechercheProduits_Datagridview.Item(CIP.Index, e.RowIndex).Value & "/" & _
                                                                   RechercheProduits_Datagridview.Item(EAN13.Index, e.RowIndex).Value & "/" & _
                                                                   RechercheProduits_Datagridview.Item(CAB.Index, e.RowIndex).Value & "/" & _
                                                                   Produit_Désignation & "/" & Produit_CIP & "/" & Produit_EAN13 & "/" & Produit_CAB & "/" & Vitale_Num & "/" & update_commande.ToString)

                Else
                    BDD.ChroniqueTableAdapter.Update_Produit_ToutesLignes(RechercheProduits_Datagridview.Item(Designation.Index, e.RowIndex).Value, _
                                                                   RechercheProduits_Datagridview.Item(CIP.Index, e.RowIndex).Value, _
                                                                   RechercheProduits_Datagridview.Item(EAN13.Index, e.RowIndex).Value, _
                                                                   RechercheProduits_Datagridview.Item(CAB.Index, e.RowIndex).Value, _
                                                                   Produit_Désignation, Produit_CIP, Produit_EAN13, Produit_CAB)
                    If update_commande = True Then
                        BDD.ChroniqueTableAdapter.Update_Commande_Ref_By_Produit("", 0, RechercheProduits_Datagridview.Item(Designation.Index, e.RowIndex).Value, _
                                                                   RechercheProduits_Datagridview.Item(CIP.Index, e.RowIndex).Value, _
                                                                   RechercheProduits_Datagridview.Item(EAN13.Index, e.RowIndex).Value, _
                                                                   RechercheProduits_Datagridview.Item(CAB.Index, e.RowIndex).Value)
                    End If
                    declarations.trace_log("BDD.ChroniqueTableAdapter.Update_Produit_ToutesLignes " & RechercheProduits_Datagridview.Item(Designation.Index, e.RowIndex).Value & "/" & _
                                                                 RechercheProduits_Datagridview.Item(CIP.Index, e.RowIndex).Value & "/" & _
                                                                 RechercheProduits_Datagridview.Item(EAN13.Index, e.RowIndex).Value & "/" & _
                                                                 RechercheProduits_Datagridview.Item(CAB.Index, e.RowIndex).Value & "/" & _
                                                                 Produit_Désignation & "/" & Produit_CIP & "/" & Produit_EAN13 & "/" & Produit_CAB & "/" & update_commande.ToString)
                End If

                Me.Close()
            ElseIf rep = Windows.Forms.DialogResult.No Then
                Me.Close()
            End If
        End If
        Bandeau_info_bas_hide()
    End Sub
End Class