' 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.Xml
Imports System.Drawing.Drawing2D

Public Class COMPTOIR_MAIN
#Region "DECLARATION VARIABLES"
    Public ModeSecur As String 'argument pour Facturation()-->SIS_FormaterFactures()

    Private lignevente As Integer
    'Private lignevente_is_stupefiant As Boolean
    Public Nombre_de_Prestations As Integer

    Public ConfigXml As New XmlDocument
    Public ConfigXMLelementliste As XmlNodeList

    Public location_lpp_date_debut As String
    Public location_lpp_date_fin As String

    'Private Date_Droits_AMC As Date

    Public Choix_Facturation_TP_retour As Boolean
    Public FS_Papier As Boolean

    'Public ventetype_index_defaut As Integer
    Public ventetype_defaut As String

    Private TauxSNCF As Boolean
    Private MédecinSNCF As Boolean

    Public STS_Affiche_sortie_result As Boolean

    Private Valide_VenteCells As Boolean

    'fiche info 118 Limitation du nombre d’enregistrements de types 4 dans une facture
    Private FI118_nombre_enregistrements_types_4 As Integer
    Private Médicaments_Détournables As Boolean

    Private Warning_Lecture_Vitale As UInt32
#End Region

#Region "SMG"
    Private Structure SMG_struct
        Dim présence_Prestation_Remboursable_AMO As Boolean
        Dim présence_Prestation_NON_Remboursable_AMO As Boolean
        Dim Montant_PEC_SMG As Single
        Dim Montant_PEC_SMG_restant As Single
        Dim total_facture As Integer
        Dim reste_facture As Integer
        Dim montant_facturé_par_acte() As Single
        Dim part_amo_par_acte() As Single

        Public Sub Controle_présence_Prestation_Remboursable_AMO()
            For r = 0 To COMPTOIR_MAIN.Vente.RowCount - 2
                If UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteType.Index, r).Value) <> "VENTE DIRECTE" Then
                    If COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteCodeActe.Index, r).Value <> "PHN" And COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteCodeActe.Index, r).Value <> "SGS" Then
                        présence_Prestation_Remboursable_AMO = True
                    End If
                End If
            Next
        End Sub
        Public Sub Controle_présence_Prestation_NON_Remboursable_AMO()
            For r = 0 To COMPTOIR_MAIN.Vente.RowCount - 2
                If UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteType.Index, r).Value) <> "VENTE DIRECTE" Then
                    If COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteCodeActe.Index, r).Value = "PHN" Then
                        présence_Prestation_NON_Remboursable_AMO = True
                    End If
                End If
            Next
        End Sub
        'Public Sub Calcul_Montant_PEC_SMG()
        '    Controle_présence_Prestation_Remboursable_AMO()
        '    Controle_présence_Prestation_NON_Remboursable_AMO()

        '    Montant_PEC_SMG = Val(COMPTOIR_MAIN.Montant_PEC_SMG_TextBox1.Text)
        '    Montant_PEC_SMG_restant = Val(COMPTOIR_MAIN.Montant_PEC_SMG_TextBox1.Text)
        '    total_facture = 0
        '    For r = 0 To COMPTOIR_MAIN.Vente.RowCount - 2
        '        If UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteType.Index, r).Value) <> "VENTE DIRECTE" Then
        '            total_facture = total_facture + (Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100))
        '        End If
        '    Next
        '    If total_facture < Montant_PEC_SMG Then
        '        Montant_PEC_SMG = total_facture
        '        Montant_PEC_SMG_restant = total_facture
        '    End If
        '    reste_facture = total_facture
        'End Sub
        Public Sub Calcul_Montant_PEC_SMG_2()

            Controle_présence_Prestation_Remboursable_AMO()
            Controle_présence_Prestation_NON_Remboursable_AMO()

            If COMPTOIR_MAIN.Montant_PEC_SMG_TextBox1.Text = "" Then
                For r = 0 To COMPTOIR_MAIN.Vente.RowCount - 2
                    If UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteType.Index, r).Value) <> "VENTE DIRECTE" Then
                        total_facture = total_facture + (Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100))
                        montant_facturé_par_acte(r) = Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100)
                        part_amo_par_acte(r) = Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100)
                        présence_Prestation_Remboursable_AMO = False
                        présence_Prestation_NON_Remboursable_AMO = False
                    End If
                Next

            Else
                Montant_PEC_SMG = Val(COMPTOIR_MAIN.Montant_PEC_SMG_TextBox1.Text)
                Montant_PEC_SMG_restant = Val(COMPTOIR_MAIN.Montant_PEC_SMG_TextBox1.Text)
                total_facture = 0
                For r = 0 To COMPTOIR_MAIN.Vente.RowCount - 2
                    If UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteType.Index, r).Value) <> "VENTE DIRECTE" Then
                        total_facture = total_facture + (Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100))
                    End If
                Next
                If total_facture < Montant_PEC_SMG Then
                    Montant_PEC_SMG = total_facture
                    Montant_PEC_SMG_restant = total_facture
                End If
                reste_facture = total_facture
                'calcul des montants frais PH et LPP, par lignes
                For r = 0 To COMPTOIR_MAIN.Vente.RowCount - 2
                    If UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteType.Index, r).Value) <> "VENTE DIRECTE" Then


                        If UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteCodeActe.Index, r).Value) <> "PHN" And _
                           UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteCodeActe.Index, r).Value) <> "SGS" Then

                            If COMPTOIR_MAIN.CodePrestationsTableAdapter.SelectTypeNomenclatureByCodeActe(COMPTOIR_MAIN.Vente(COMPTOIR_MAIN.VenteCodeActe.Index, r).Value.ToString) = "Frais PH" Then
                                montant_facturé_par_acte(r) = Val(COMPTOIR_MAIN.Vente(COMPTOIR_MAIN.VenteTFRprix.Index, r).Value) * 100 * COMPTOIR_MAIN.Vente(COMPTOIR_MAIN.VenteQuantité.Index, r).Value
                                part_amo_par_acte(r) = montant_facturé_par_acte(r)
                            ElseIf COMPTOIR_MAIN.CodePrestationsTableAdapter.SelectTypeNomenclatureByCodeActe(COMPTOIR_MAIN.Vente(COMPTOIR_MAIN.VenteCodeActe.Index, r).Value.ToString) = "LPP" Then
                                Dim quantité_lpp As Integer = 1
                                quantité_lpp = COMPTOIR_MAIN.ProduitsTableAdapter.Select_LPP_Quantité(COMPTOIR_MAIN.Vente(COMPTOIR_MAIN.VenteCIP.Index, r).Value.ToString, _
                                COMPTOIR_MAIN.Vente(COMPTOIR_MAIN.VenteEAN13.Index, r).Value.ToString, COMPTOIR_MAIN.Vente(COMPTOIR_MAIN.Ventecab.Index, r).Value.ToString, _
                                COMPTOIR_MAIN.Vente(COMPTOIR_MAIN.Vente_produits.Index, r).Value.ToString)
                                montant_facturé_par_acte(r) = (COMPTOIR_MAIN.LPPTableAdapter.selectPrixLPPByCode(COMPTOIR_MAIN.Vente(COMPTOIR_MAIN.VenteLPP.Index, r).Value.ToString, _
                                Val(Format(COMPTOIR_MAIN.Date_Droits_AMO(), "yyyyMMdd"))) * (COMPTOIR_MAIN.Vente(COMPTOIR_MAIN.VenteQuantité.Index, r).Value) * quantité_lpp)
                                part_amo_par_acte(r) = montant_facturé_par_acte(r)
                            Else
                                montant_facturé_par_acte(r) = COMPTOIR_MAIN.Vente(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100
                                part_amo_par_acte(r) = montant_facturé_par_acte(r)
                            End If
                        End If
                    End If
                Next


                'calcul des restes
                For r = 0 To COMPTOIR_MAIN.Vente.RowCount - 2
                    Montant_PEC_SMG_restant = Montant_PEC_SMG_restant - part_amo_par_acte(r)
                    reste_facture = reste_facture - montant_facturé_par_acte(r)
                Next

                'calcul SGS
                If reste_facture - Montant_PEC_SMG_restant > 0 Then
                    For r = 0 To COMPTOIR_MAIN.Vente.RowCount - 2
                        If UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteType.Index, r).Value) <> "VENTE DIRECTE" Then
                            If UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteCodeActe.Index, r).Value) = "SGS" Then
                                If Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100) >= reste_facture - Montant_PEC_SMG_restant Then
                                    montant_facturé_par_acte(r) = reste_facture - Montant_PEC_SMG_restant
                                    reste_facture = 0
                                    Exit For
                                Else
                                    montant_facturé_par_acte(r) = Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100)
                                    reste_facture = reste_facture - Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100)
                                End If
                            End If
                        End If
                    Next
                End If
                If présence_Prestation_Remboursable_AMO = False And présence_Prestation_NON_Remboursable_AMO = False Then 'que des actes SGS
                    For r = 0 To COMPTOIR_MAIN.Vente.RowCount - 2
                        montant_facturé_par_acte(r) = Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100)
                        If UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteType.Index, r).Value) <> "VENTE DIRECTE" Then
                            If Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100) >= Montant_PEC_SMG_restant Then
                                part_amo_par_acte(r) = Montant_PEC_SMG_restant
                                Montant_PEC_SMG_restant = 0
                            Else
                                part_amo_par_acte(r) = Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100)
                                Montant_PEC_SMG_restant = Montant_PEC_SMG_restant - part_amo_par_acte(r)
                            End If
                        End If
                    Next
                End If

                'calcul PHN
                If reste_facture - Montant_PEC_SMG_restant > 0 Then
                    For r = 0 To COMPTOIR_MAIN.Vente.RowCount - 2
                        If UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteType.Index, r).Value) <> "VENTE DIRECTE" Then
                            If UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteCodeActe.Index, r).Value) = "PHN" Then
                                If Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100) >= reste_facture - Montant_PEC_SMG_restant Then
                                    montant_facturé_par_acte(r) = reste_facture - Montant_PEC_SMG_restant
                                    reste_facture = 0
                                    Exit For
                                Else
                                    montant_facturé_par_acte(r) = Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100)
                                    reste_facture = reste_facture - Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100)
                                End If
                            End If
                        End If
                    Next
                End If

                'si reste facture, augmente valeur facturée sur actes <> (PHN et SGS)
                If reste_facture - Montant_PEC_SMG_restant > 0 Then
                    For r = 0 To COMPTOIR_MAIN.Vente.RowCount - 2
                        If reste_facture > 0 Then
                            If UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteType.Index, r).Value) <> "VENTE DIRECTE" Then

                                If UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteCodeActe.Index, r).Value) <> "PHN" And _
                                   UCase(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteCodeActe.Index, r).Value) <> "SGS" Then
                                    If reste_facture - Montant_PEC_SMG_restant >= (Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100)) - montant_facturé_par_acte(r) Then
                                        Dim dif As Single = (Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100)) - montant_facturé_par_acte(r)
                                        montant_facturé_par_acte(r) = (Val(COMPTOIR_MAIN.Vente.Item(COMPTOIR_MAIN.VenteTotal.Index, r).Value * 100))
                                        reste_facture = reste_facture - dif
                                    Else
                                        montant_facturé_par_acte(r) = montant_facturé_par_acte(r) + reste_facture - Montant_PEC_SMG_restant
                                        reste_facture = 0
                                    End If

                                End If
                            End If
                        End If
                    Next
                End If


            End If ' If Val(COMPTOIR_MAIN.Montant_PEC_SMG_TextBox1.Text) = 0 Then
        End Sub

        'groupe 1610 DPS
        Public Sub groupe1610DPS(ByVal NumeroSession As UInt16, ByRef Nombre_de_Prestations As Integer, ByRef Total_des_montants_facturés As Double, ByRef Total_remboursable_par_l_AMO As Double)
            Nombre_de_Prestations = Nombre_de_Prestations + 1

            SGD_AjouterGroupe_Tracé(NumeroSession, 1610, Visu_API, FichierTrace)

            If CurrentFactureVitale.TabLigneFacture.Length - 1 < Nombre_de_Prestations Then
                ReDim Preserve CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations)
            End If


            'Champ1
            Dim NuméroPrestation As String = Nombre_de_Prestations.ToString
            SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C1 = NuméroPrestation

            'Champ2 Date d’exécution
            SGD_AjouterChamp_Tracé(NumeroSession, Format(COMPTOIR_MAIN.DateExecution.Value, "yyyyMMdd") + "0000", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C2 = Format(COMPTOIR_MAIN.DateExecution.Value, "yyyyMMdd") + "0000"

            'Champ3 Lieu d’exécution 0 pharmacie | 1 domicile patient
            SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C3 = "0"

            'Champ 4 Code prestation
            SGD_AjouterChamp_Tracé(NumeroSession, "DPS", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C4 = "DPS"

            'Champ 5 CCAM : champ non renseigné
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C5 = ""

            'Champ6 Montant des honoraires
            SGD_AjouterChamp_Tracé(NumeroSession, Montant_PEC_SMG_restant, Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C6 = Montant_PEC_SMG_restant.ToString
            Total_des_montants_facturés = Total_des_montants_facturés + Montant_PEC_SMG_restant

            'Champ7 Qualificatif de la dépense
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "L"
            SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7, Visu_API, FichierTrace, Nombre_de_Prestations)

            'Champ8 Coefficient
            SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C8 = "1"

            'Champ9 Quantité
            SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C9 = "1"

            'Champ10 Dénombrement
            SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C10 = "1"

            'Champ11 Prix unitaire
            SGD_AjouterChamp_Tracé(NumeroSession, Montant_PEC_SMG_restant, Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C11 = Montant_PEC_SMG_restant

            'champ 12 Base de remboursement
            SGD_AjouterChamp_Tracé(NumeroSession, Montant_PEC_SMG_restant, Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C12 = Montant_PEC_SMG_restant


            'champ13 Taux applicable à la prestation
            SGD_AjouterChamp_Tracé(NumeroSession, 100, Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C13 = 100

            'champ 14 Montant remboursable par l’AMO
            SGD_AjouterChamp_Tracé(NumeroSession, Montant_PEC_SMG_restant, Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C14 = Montant_PEC_SMG_restant
            Total_remboursable_par_l_AMO = Total_remboursable_par_l_AMO + Montant_PEC_SMG_restant
            reste_facture = reste_facture - Montant_PEC_SMG_restant
            'champ 15
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C15 = 0

            'champ 16
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C16 = 0
            COMPTOIR_MAIN.FI118_nombre_enregistrements_types_4 = COMPTOIR_MAIN.FI118_nombre_enregistrements_types_4 + 3

            'Groupe 1820
            SGD_AjouterGroupe_Tracé(NumeroSession, 1820, Visu_API, FichierTrace)
            If CurrentFactureVitale.TabLigneFacture.Length - 1 < Nombre_de_Prestations Then
                ReDim Preserve CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations)
            End If
            SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace, Nombre_de_Prestations)
            SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1820C2 = "0"

        End Sub
        'groupe 1610 SGN
        Public Sub groupe1610SGN(ByVal NumeroSession As UInt16, ByRef Nombre_de_Prestations As Integer, ByRef Total_des_montants_facturés As Double, ByRef Total_remboursable_par_l_AMO As Double)
            Nombre_de_Prestations = Nombre_de_Prestations + 1

            SGD_AjouterGroupe_Tracé(NumeroSession, 1610, Visu_API, FichierTrace)

            If CurrentFactureVitale.TabLigneFacture.Length - 1 < Nombre_de_Prestations Then
                ReDim Preserve CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations)
            End If


            'Champ1
            Dim NuméroPrestation As String = Nombre_de_Prestations.ToString
            SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C1 = NuméroPrestation

            'Champ2 Date d’exécution
            SGD_AjouterChamp_Tracé(NumeroSession, Format(COMPTOIR_MAIN.DateExecution.Value, "yyyyMMdd") + "0000", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C2 = Format(COMPTOIR_MAIN.DateExecution.Value, "yyyyMMdd") + "0000"

            'Champ3 Lieu d’exécution 0 pharmacie | 1 domicile patient
            SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C3 = "0"

            'Champ 4 Code prestation
            SGD_AjouterChamp_Tracé(NumeroSession, "SGN", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C4 = "SGN"

            'Champ 5 CCAM : champ non renseigné
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C5 = ""

            'Champ6 Montant des honoraires
            If présence_Prestation_Remboursable_AMO = True Then
                SGD_AjouterChamp_Tracé(NumeroSession, 0, Visu_API, FichierTrace)
                CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C6 = 0
            Else
                SGD_AjouterChamp_Tracé(NumeroSession, Montant_PEC_SMG_restant, Visu_API, FichierTrace)
                CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C6 = Montant_PEC_SMG_restant.ToString
            End If
            If présence_Prestation_Remboursable_AMO = False Then
                Total_des_montants_facturés = Total_des_montants_facturés + Montant_PEC_SMG_restant
            End If

            'Champ7 Qualificatif de la dépense
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "L"
            SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7, Visu_API, FichierTrace, Nombre_de_Prestations)

            'Champ8 Coefficient
            SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C8 = "1"

            'Champ9 Quantité
            SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C9 = "1"

            'Champ10 Dénombrement
            SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C10 = "1"

            'Champ11 Prix unitaire
            If présence_Prestation_Remboursable_AMO = True Then
                SGD_AjouterChamp_Tracé(NumeroSession, 0, Visu_API, FichierTrace, Nombre_de_Prestations)
                CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C11 = 0
            Else
                SGD_AjouterChamp_Tracé(NumeroSession, Montant_PEC_SMG_restant, Visu_API, FichierTrace, Nombre_de_Prestations)
                CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C11 = Montant_PEC_SMG_restant
            End If

            'champ 12 Base de remboursement
            If présence_Prestation_Remboursable_AMO = True Then
                SGD_AjouterChamp_Tracé(NumeroSession, 0, Visu_API, FichierTrace, Nombre_de_Prestations)
                CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C12 = 0
            Else
                SGD_AjouterChamp_Tracé(NumeroSession, Montant_PEC_SMG_restant, Visu_API, FichierTrace, Nombre_de_Prestations)
                CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C12 = Montant_PEC_SMG_restant
            End If


            'champ13 Taux applicable à la prestation
            SGD_AjouterChamp_Tracé(NumeroSession, 100, Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C13 = 100

            'champ 14 Montant remboursable par l’AMO
            If présence_Prestation_Remboursable_AMO = True Then
                SGD_AjouterChamp_Tracé(NumeroSession, 0, Visu_API, FichierTrace, Nombre_de_Prestations)
                CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C14 = 0
            Else
                SGD_AjouterChamp_Tracé(NumeroSession, Montant_PEC_SMG_restant, Visu_API, FichierTrace, Nombre_de_Prestations)
                CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C14 = Montant_PEC_SMG_restant
            End If
            If présence_Prestation_Remboursable_AMO = False Then
                Total_remboursable_par_l_AMO = Total_remboursable_par_l_AMO + Montant_PEC_SMG_restant
            End If
            reste_facture = reste_facture - Montant_PEC_SMG_restant

            'champ 15
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C15 = 0

            'champ 16
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C16 = 0
            COMPTOIR_MAIN.FI118_nombre_enregistrements_types_4 = COMPTOIR_MAIN.FI118_nombre_enregistrements_types_4 + 3


            'Groupe 1820
            SGD_AjouterGroupe_Tracé(NumeroSession, 1820, Visu_API, FichierTrace)
            If CurrentFactureVitale.TabLigneFacture.Length - 1 < Nombre_de_Prestations Then
                ReDim Preserve CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations)
            End If
            SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace, Nombre_de_Prestations)
            SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1820C2 = "0"

        End Sub

        Public Sub Clear()
            Montant_PEC_SMG = 0
            présence_Prestation_Remboursable_AMO = False
            présence_Prestation_NON_Remboursable_AMO = False
            Montant_PEC_SMG_restant = 0
            total_facture = 0
            ReDim montant_facturé_par_acte(COMPTOIR_MAIN.Vente.RowCount)
            ReDim part_amo_par_acte(COMPTOIR_MAIN.Vente.RowCount)
        End Sub
    End Structure
    Private SMG As SMG_struct

#End Region
#Region "Groupes"


    'retourne Codesituation
    Private Function CodeSituation(ByVal Date_Droits As Date, ByVal Forçage_Fin_Maternité As Boolean)
        Dim out As String = ""
        For i = 0 To CurrentBenéficiaire.G106C4.Length - 1
            Dim datedebut = Val(CurrentBenéficiaire.G106C1(i))
            Dim datefin = Val(CurrentBenéficiaire.G106C2(i))
            Dim datedroits = Val(Format(Date_Droits, "yyyyMMdd") + "0000")
            Select Case datedebut
                Case 0
                    Select Case datefin
                        Case 0
                            If CurrentBenéficiaire.G106C4(i) <> "" Then
                                out = CurrentBenéficiaire.G106C4(i)
                            End If
                        Case Is >= datedroits
                            out = CurrentBenéficiaire.G106C4(i)
                    End Select

                Case Is <= datedroits

                    Select Case datefin
                        Case 0
                            out = CurrentBenéficiaire.G106C4(i)
                        Case Else
                            If datefin > datedroits Then
                                out = CurrentBenéficiaire.G106C4(i)
                                If (out = "0103" Or out = "0107" Or out = "0110" Or out = "0203" Or out = "0207" Or out = "0405" Or out = "1003" Or out = "9003") _
                                And NatureAssurance_Button.Text <> "MATERNITE" And Forçage_Fin_Maternité = True And Val(RenouvellementToolStripTextBox.Text) = 0 Then
                                    out = CurrentBenéficiaire.G106C4(i + 1)
                                    If InStr(CurrentFactureVitale.G1440C1, "M") = 0 Then
                                        CurrentFactureVitale.G1440C1 = CurrentFactureVitale.G1440C1 + "M"
                                    End If
                                End If
                            End If
                    End Select
            End Select

        Next
        Return out
    End Function
    'retourne CodeALD
    Private Function CodeALD(ByVal Indicateur_forçage_AMO As String, ByVal Date_Droits As Date)
        If Indicateur_forçage_AMO = "A" Then
            Return 1
        End If
        Dim out As String = ""
        For i = 0 To CurrentBenéficiaire.G106C4.Length - 1
            Dim datedebut = Val(CurrentBenéficiaire.G106C1(i))
            Dim datefin = Val(CurrentBenéficiaire.G106C2(i))
            Dim datedroits = Val(Format(Date_Droits, "yyyyMMdd") + "0000")
            Select Case datedebut
                Case 0
                    Select Case datefin
                        Case 0
                            If CurrentBenéficiaire.G106C3(i) <> "" Then
                                out = CurrentBenéficiaire.G106C3(i)
                            End If
                        Case Is >= datedroits
                            out = CurrentBenéficiaire.G106C3(i)
                    End Select

                Case Is <= datedroits
                    Select Case datefin
                        Case 0
                            out = CurrentBenéficiaire.G106C3(i)
                        Case Else
                            If datefin > datedroits Then
                                out = CurrentBenéficiaire.G106C3(i)
                            End If
                    End Select
            End Select
        Next
        Return out
    End Function

    'Groupe 1110 : Identification Facture
    Public Sub groupe1110(ByVal NumeroSession As UInt16, ByVal NumFacture As String)
        SGD_AjouterGroupe_Tracé(NumeroSession, 1110, Visu_API, FichierTrace)
        'champ 1
        SGD_AjouterChamp_Tracé(NumeroSession, NumFacture, Visu_API, FichierTrace)
        CurrentFactureVitale.G1110C1 = NumFacture
        'champ 2
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace) '1 Normale (pas d'autre valeur dans dico des données)
        CurrentFactureVitale.G1110C2 = "1"
        'champ 3
        SGD_AjouterChamp_Tracé(NumeroSession, Format(DateFacture.Value, "yyyyMMdd") + "0000", Visu_API, FichierTrace)
        CurrentFactureVitale.G1110C3 = Format(DateFacture.Value, "yyyyMMdd") + "0000"
        'champ 4
        ValeurChamp = "@"
        TailleMax = 1
        SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 1, ValeurChamp, TailleMax)
        SGD_AjouterChamp_Tracé(NumeroSession, ValeurChamp, Visu_API, FichierTrace)
        CurrentFactureVitale.G1110C4 = ValeurChamp
        'champ 5
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        'champ 6
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        'SGD_AjouterGroupe(NumeroSession, 1110)
        'If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1110")
        ''champ 1
        'SGD_AjouterChamp(NumeroSession, NumFacture)
        'CurrentFactureVitale.G1110C1 = NumFacture
        'CurrentFactureVitale.num = NumFacture
        'If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + NumFacture, "")
        ''champ 2
        'SGD_AjouterChamp(NumeroSession, "1") '1 Normale (pas d'autre valeur dans dico des données)
        'CurrentFactureVitale.G1110C2 = "1"
        'If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "1", "")
        ''champ 3
        'SGD_AjouterChamp(NumeroSession, Format(DateFacture.Value, "yyyyMMdd") + "0000")
        'CurrentFactureVitale.G1110C3 = Format(DateFacture.Value, "yyyyMMdd") + "0000"
        'If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + Format(DateFacture.Value, "yyyyMMdd") + "0000", "")
        ''champ 4
        'ValeurChamp = "@"
        'TailleMax = 1
        'SGD_LireChamp(NumeroSessionCPS, 2, 1, 1, ValeurChamp, TailleMax)
        'SGD_AjouterChamp(NumeroSession, ValeurChamp)
        'CurrentFactureVitale.G1110C4 = ValeurChamp
        'If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + ValeurChamp, "")
        ''champ 5
        'SGD_AjouterChamp(NumeroSession, "")
        'If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + "", "")
        ''champ 6
        'SGD_AjouterChamp(NumeroSession, "")
        'If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 6:" + "", "")
    End Sub

    'Groupe 1120 : Identification Professionnel de Santé 
    Public Sub groupe1120(ByVal NumeroSession As UInt16)
        If Config.Activer_Session_Remplacement = True Then
            SGD_AjouterGroupe_Tracé(NumeroSession, 1120, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Titulaire_Num_Id_Facturation, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C1 = Config.Titulaire_Num_Id_Facturation
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Titulaire_Cle_Num_Id_Facturation, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C2 = Config.Titulaire_Cle_Num_Id_Facturation
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Titulaire_Nom, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C3 = Config.Titulaire_Nom
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Titulaire_Prenom, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C4 = Config.Titulaire_Prenom
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Titulaire_Code_Conventionnel, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C5 = Config.Titulaire_Code_Conventionnel
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Titulaire_Code_specialite, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C6 = Config.Titulaire_Code_specialite
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Titulaire_Code_Zone_tarifaire, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C7 = Config.Titulaire_Code_Zone_tarifaire
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Titulaire_Code_Zone_IK, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C8 = Config.Titulaire_Code_Zone_IK
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Titulaire_Code__Agrement_1, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C9 = Config.Titulaire_Code__Agrement_1
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Titulaire_Code__Agrement_2, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C10 = Config.Titulaire_Code__Agrement_2
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Titulaire_Code__Agrement_3, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C11 = Config.Titulaire_Code__Agrement_3
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Titulaire_Condition_Exercice, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C12 = Config.Titulaire_Condition_Exercice
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Titulaire_Num_RPPS, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C13 = Config.Titulaire_Num_RPPS
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Titulaire_Cle_Num_RPPS, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C14 = Config.Titulaire_Cle_Num_RPPS

        ElseIf ModeSecur = "4" Then
            SGD_AjouterGroupe_Tracé(NumeroSession, 1120, Visu_API, FichierTrace)

            Dim ConfigXml As New XmlDocument
            ConfigXml.Load("InfoPro.xml")
            Dim XMLelementliste As XmlNodeList
            XMLelementliste = ConfigXml.GetElementsByTagName("Desync")

            'champ 1
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("G2C9").InnerText, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C1 = XMLelementliste.Item(0).Item("G2C9").InnerText
            'champ 2
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("G2C10").InnerText, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C2 = XMLelementliste.Item(0).Item("G2C10").InnerText
            'champ 3
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("G1C6").InnerText, Visu_API, FichierTrace)
            'champ 4
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("G1C7").InnerText, Visu_API, FichierTrace)
            'champ 5
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("G2C13").InnerText, Visu_API, FichierTrace)
            'champ 6
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("G2C14").InnerText, Visu_API, FichierTrace)
            'champ 7
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("G2C15").InnerText, Visu_API, FichierTrace)
            'champ 8
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("G2C16").InnerText, Visu_API, FichierTrace)
            'champ 9
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("G2C17").InnerText, Visu_API, FichierTrace)
            'champ 10(champ prévu pour une utilisation future)
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            'champ 11(champ prévu pour une utilisation future)
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            'champ 12
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("ConditionDexercice").InnerText, Visu_API, FichierTrace)
            'champ 13
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("G1C3").InnerText, Visu_API, FichierTrace)
            'champ 14
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("G1C4").InnerText, Visu_API, FichierTrace)

        Else

            SGD_AjouterGroupe_Tracé(NumeroSession, 1120, Visu_API, FichierTrace)
            'champ 1
            ValeurChamp = "@@@@@@@@"
            TailleMax = 8
            SGD_LireChamp(NumeroSessionCPS, 2, Occurence_Grp2, 9, ValeurChamp, TailleMax)
            SGD_AjouterChamp_Tracé(NumeroSession, ValeurChamp, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C1 = ValeurChamp
            'champ 2
            ValeurChamp = "@"
            TailleMax = 1
            SGD_LireChamp(NumeroSessionCPS, 2, Occurence_Grp2, 10, ValeurChamp, TailleMax)
            SGD_AjouterChamp_Tracé(NumeroSession, ValeurChamp, Visu_API, FichierTrace)
            CurrentFactureVitale.G1120C2 = ValeurChamp
            'champ 3
            ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@"
            TailleMax = 27
            SGD_LireChamp(NumeroSessionCPS, 1, 1, 6, ValeurChamp, TailleMax)
            SGD_AjouterChamp_Tracé(NumeroSession, Mid(ValeurChamp, 1, TailleMax), Visu_API, FichierTrace)
            'champ 4
            ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@"
            TailleMax = 27
            SGD_LireChamp(NumeroSessionCPS, 1, 1, 7, ValeurChamp, TailleMax)
            SGD_AjouterChamp_Tracé(NumeroSession, Mid(ValeurChamp, 1, TailleMax), Visu_API, FichierTrace)
            'champ 5
            ValeurChamp = "@"
            TailleMax = 1
            SGD_LireChamp(NumeroSessionCPS, 2, Occurence_Grp2, 13, ValeurChamp, TailleMax)
            SGD_AjouterChamp_Tracé(NumeroSession, ValeurChamp, Visu_API, FichierTrace)

            'champ 6
            ValeurChamp = "@@"
            TailleMax = 2
            SGD_LireChamp(NumeroSessionCPS, 2, Occurence_Grp2, 14, ValeurChamp, TailleMax)
            SGD_AjouterChamp_Tracé(NumeroSession, ValeurChamp, Visu_API, FichierTrace)

            'champ 7
            ValeurChamp = "@@"
            TailleMax = 2
            SGD_LireChamp(NumeroSessionCPS, 2, Occurence_Grp2, 15, ValeurChamp, TailleMax)
            SGD_AjouterChamp_Tracé(NumeroSession, ValeurChamp, Visu_API, FichierTrace)

            'champ 8
            ValeurChamp = "@@"
            TailleMax = 2
            SGD_LireChamp(NumeroSessionCPS, 2, Occurence_Grp2, 16, ValeurChamp, TailleMax)
            SGD_AjouterChamp_Tracé(NumeroSession, ValeurChamp, Visu_API, FichierTrace)

            'champ 9
            ValeurChamp = "@"
            TailleMax = 1
            SGD_LireChamp(NumeroSessionCPS, 2, Occurence_Grp2, 17, ValeurChamp, TailleMax)
            SGD_AjouterChamp_Tracé(NumeroSession, ValeurChamp, Visu_API, FichierTrace)

            'champ 10(champ prévu pour une utilisation future)
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)

            'champ 11(champ prévu pour une utilisation future)
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)

            'champ 12
            Dim ModeExercice As String = "@@"
            SGD_LireChamp(NumeroSessionCPS, 2, Occurence_Grp2, 2, ModeExercice, TailleMax)
            ModeExercice = Mid(ModeExercice, 1, TailleMax)
            Select Case ModeExercice
                Case "00", "0" 'Libéral, exploitant, commerçant
                    SGD_AjouterChamp_Tracé(NumeroSession, "L", Visu_API, FichierTrace)
                Case "01", "1" 'Salarié
                    SGD_AjouterChamp_Tracé(NumeroSession, "S", Visu_API, FichierTrace)
                Case "04", "4" 'Remplaçant
                    SGD_AjouterChamp_Tracé(NumeroSession, "L", Visu_API, FichierTrace)
                Case "07", "7" 'Bénévole
                    SGD_AjouterChamp_Tracé(NumeroSession, "B", Visu_API, FichierTrace)
            End Select

            'champ 13, 14
            ValeurChamp = "@@"
            TailleMax = 2
            SGD_LireChamp(NumeroSessionCPS, 1, 1, 1, ValeurChamp, TailleMax)
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            If ValeurChamp = "0" Or ValeurChamp = "00" Then 'Carte du Professionnel de Santé (CPS)
                ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
                TailleMax = 30
                SGD_LireChamp(NumeroSessionCPS, 1, 1, 3, ValeurChamp, TailleMax)
                If TailleMax > 10 Then
                    ValeurChamp = Mid(ValeurChamp, 1, 10)
                Else
                    ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                    While ValeurChamp.Length < 10
                        ValeurChamp = "0" & ValeurChamp
                    End While
                End If
                If InStr(ValeurChamp, "@") = 0 Then
                    SGD_AjouterChamp_Tracé(NumeroSession, ValeurChamp, Visu_API, FichierTrace)
                Else
                    SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
                End If


                'champ 14
                ValeurChamp = "@"
                TailleMax = 1
                SGD_LireChamp(NumeroSessionCPS, 1, 1, 4, ValeurChamp, TailleMax)
                If ValeurChamp <> "@" Then
                    SGD_AjouterChamp_Tracé(NumeroSession, ValeurChamp, Visu_API, FichierTrace)
                Else
                    SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
                End If

            Else 'CPF ou CPE
                SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            End If
        End If
    End Sub

    'Groupe 1130 : Identification du bénéficiaire 
    Public Sub groupe1130(ByVal NumeroSession As UInt16)
        SGD_AjouterGroupe_Tracé(NumeroSession, 1130, Visu_API, FichierTrace)
        'champ 1
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentBenéficiaire.G101C7, Visu_API, FichierTrace)
        CurrentFactureVitale.G1130C1 = CurrentBenéficiaire.G101C7
        'champ 2
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentBenéficiaire.G101C8, Visu_API, FichierTrace)
        CurrentFactureVitale.G1130C2 = CurrentBenéficiaire.G101C8
        'champ 3
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentBenéficiaire.G101C9, Visu_API, FichierTrace)
        CurrentFactureVitale.G1130C3 = CurrentBenéficiaire.G101C9
        'champ 4
        If Mid(CurrentBenéficiaire.G104C12, 1, 2) <> "19" And Mid(CurrentBenéficiaire.G104C12, 1, 2) <> "20" Then
            If MsgBox("Annnée de naissance de l'assuré = " + Mid(CurrentBenéficiaire.G104C12, 1, 4).ToString + Chr(10) + "Voulez vous modifier cette valeur?", 36) = MsgBoxResult.Yes Then
                CurrentBenéficiaire.G104C12 = InputBox("Entrez année de naissance", "", Mid(CurrentBenéficiaire.G104C12, 1, 4).ToString) + Mid(CurrentBenéficiaire.G104C12, 5)
            End If
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentBenéficiaire.G104C12, Visu_API, FichierTrace)
        CurrentFactureVitale.G1130C4 = CurrentBenéficiaire.G104C12
        'champ 5
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentBenéficiaire.G104C13, Visu_API, FichierTrace)
        CurrentFactureVitale.G1130C5 = CurrentBenéficiaire.G104C13
        'champ 6
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentBenéficiaire.G104C14, Visu_API, FichierTrace)
        CurrentFactureVitale.G1130C6 = CurrentBenéficiaire.G104C14
        'champ 7, 8
        If CheckBoxModeDegradé.Checked = False Then 'mode sécurisé
            CurrentFactureVitale.G1130C7 = CodeALD(CurrentFactureVitale.G1440C1, Date_Droits_AMO)
            SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1130C7, Visu_API, FichierTrace)
            CurrentFactureVitale.G1130C8 = CodeSituation(Date_Droits_AMO, True)
            SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1130C8, Visu_API, FichierTrace)
        Else 'mode dégradé
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            CurrentFactureVitale.G1130C7 = ""
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            CurrentFactureVitale.G1130C8 = ""
        End If
        'champ 9
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace) 'Code de présentation du carnet médical Inutilisé depuis la version 3.18
    End Sub

    'Groupe 1140 : Identification Structure
    Public Sub groupe1140(ByVal NumeroSession As UInt16)

        If ModeSecur = "4" Then
            SGD_AjouterGroupe_Tracé(NumeroSession, 1140, Visu_API, FichierTrace)

            Dim ConfigXml As New XmlDocument
            ConfigXml.Load("InfoPro.xml")
            Dim XMLelementliste As XmlNodeList
            XMLelementliste = ConfigXml.GetElementsByTagName("Desync")

            'champ 1
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("G2C5").InnerText, Visu_API, FichierTrace)
            'champ 2
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("G2C6").InnerText, Visu_API, FichierTrace)
            'champ 3
            SGD_AjouterChamp_Tracé(NumeroSession, XMLelementliste.Item(0).Item("G2C8").InnerText, Visu_API, FichierTrace)

        Else

            SGD_AjouterGroupe_Tracé(NumeroSession, 1140, Visu_API, FichierTrace)
            'champ 1
            ValeurChamp = "@"
            TailleMax = 1
            SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 5, ValeurChamp, TailleMax)
            SGD_AjouterChamp_Tracé(NumeroSession, Mid(ValeurChamp, 1, TailleMax), Visu_API, FichierTrace)
            'champ 2
            ValeurChamp = "@@@@@@@@@@@@@@"
            TailleMax = 14
            SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 6, ValeurChamp, TailleMax)
            SGD_AjouterChamp_Tracé(NumeroSession, Mid(ValeurChamp, 1, TailleMax), Visu_API, FichierTrace)
            'champ 3
            ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
            TailleMax = 40
            SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 8, ValeurChamp, TailleMax)
            SGD_AjouterChamp_Tracé(NumeroSession, Mid(ValeurChamp, 1, TailleMax), Visu_API, FichierTrace)
        End If
    End Sub

    'Groupe 1150 : Identification Remplaçant
    Public Function groupe1150(ByVal NumeroSession As UInt16) As Boolean
        If Config.Activer_Session_Remplacement = True Then
            SGD_AjouterGroupe_Tracé(NumeroSession, 1150, Visu_API, FichierTrace)
            'champ 1
            ValeurChamp = "12345678"
            TailleMax = 8
            SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 9, ValeurChamp, TailleMax)
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            If ValeurChamp <> Config.Remplacant_Num_Id_Facturation Then
                MsgBox("N° d’identification de facturation du remplaçant en carte PS ne correspond pas au N° d’identification de facturation du remplaçant déclaré", MsgBoxStyle.Critical)
                Return False
            End If
            SGD_AjouterChamp_Tracé(NumeroSession, ValeurChamp, Visu_API, FichierTrace)

            'champ 2
            ValeurChamp = "1"
            TailleMax = 1
            SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 10, ValeurChamp, TailleMax)
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            If ValeurChamp <> Config.Remplacant_Cle_Num_Id_Facturation Then
                MsgBox("Clé du n° d’identification de facturation du remplaçant en carte PS ne correspond pas à la Clé du n° d’identification de facturation du remplaçant déclarée", MsgBoxStyle.Critical)
                Return False
            End If
            SGD_AjouterChamp_Tracé(NumeroSession, ValeurChamp, Visu_API, FichierTrace)

            'champ 3
            ValeurChamp = "123456789012345678901234567"
            TailleMax = 27
            SGD_LireChamp(NumeroSessionCPS, 1, 1, 6, ValeurChamp, TailleMax)
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            SGD_AjouterChamp_Tracé(NumeroSession, ValeurChamp, Visu_API, FichierTrace)

            'champ 4
            ValeurChamp = "123456789012345678901234567"
            TailleMax = 27
            SGD_LireChamp(NumeroSessionCPS, 1, 1, 7, ValeurChamp, TailleMax)
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            SGD_AjouterChamp_Tracé(NumeroSession, ValeurChamp, Visu_API, FichierTrace)

            'champ5
            SGD_AjouterChamp_Tracé(NumeroSession, "2", Visu_API, FichierTrace)

        End If
        Return True
    End Function

    'Groupe 1160 : Identification de l’individu
    Public Sub groupe1160(ByVal NumeroSession As UInt16)
        If CurrentBenéficiaire.G104C9 <> "" Then
            SGD_AjouterGroupe_Tracé(NumeroSession, 1160, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, CurrentBenéficiaire.G104C9, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, CurrentBenéficiaire.G104C10, Visu_API, FichierTrace)
        End If
    End Sub

    'Groupe 1170 : Liste d’opposition carte Vitale
    Public Sub groupe1170(ByVal NumeroSession As UInt16)
        If Config.LOI_Activer = True Then
            SGD_AjouterGroupe_Tracé(NumeroSession, 1170, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, Config.LOI_Ref, Visu_API, FichierTrace)
        End If
    End Sub

    'Groupe1211-1213-1214: Prescription PS
    Public Sub groupe1211_1213_1214(ByVal NumeroSession As UInt16, ByVal IDinternePrescripteur As String, ByVal DatePrecription As Date)

        If CurrentBenéficiaire.G101C8 = Config.Data_ContaceptifUrgence_NIR Then
            SGD_AjouterGroupe_Tracé(NumeroSession, 1211, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Data_ContaceptifUrgence_NumPrecripteur, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, Config.Data_ContaceptifUrgence_CleNumPrecripteur, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, Format(DatePrecription, "yyyyMMdd") + "0000", Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            Exit Sub
        End If

        CurrentFactureVitale.IDPrescripteur = IDinternePrescripteur
        Dim mydatatable As DataTable = Me.PrescripteursTableAdapter.GetPrescripteurDataByIDinterne(IDinternePrescripteur)
        Dim statut As String = ""
        For i = 0 To mydatatable.Columns.Count - 1
            If mydatatable.Columns.Item(i).ColumnName = "Statut" Then
                statut = mydatatable(0).Item(i).ToString
                Exit For
            End If
        Next

        Select Case statut
            Case "LIBERAL"
                SGD_AjouterGroupe_Tracé(NumeroSession, 1211, Visu_API, FichierTrace)
                'N° d’identification du PS libéral
                Dim data As String = ""
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "Numidentification" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1211C1 = data
                'Clé du n° d’identification du PS libéral
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "Clé" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1211C2 = data
                'Date de prescription du PS libéral
                SGD_AjouterChamp_Tracé(NumeroSession, Format(DatePrecription, "yyyyMMdd") + "0000", Visu_API, FichierTrace)
                CurrentFactureVitale.G1211C3 = Format(DatePrecription, "yyyyMMdd") + "0000"
                'Identification de la prescription du PS libéral
                SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
                CurrentFactureVitale.G1211C4 = ""
                'N° RPPS du PS libéral
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "NumRPPS" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1211C5 = data
                'Clé du N° RPPS du PS libéral
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "CléRPPS" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1211C6 = data
                'N° de la structure du PS libéral
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "numStructure" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1211C7 = data

            Case "SALARIE"
                SGD_AjouterGroupe_Tracé(NumeroSession, 1213, Visu_API, FichierTrace)
                'N° d’identification du PS salarié
                Dim data As String = ""
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "Numidentification" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1213C1 = data
                'Clé du n° d’identification du PS salarié
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "Clé" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1213C2 = data
                'Code spécialité du PS salarié
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "CodeSpécialité" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1213C3 = data
                'Date de prescription du PS salarié
                SGD_AjouterChamp_Tracé(NumeroSession, Format(DatePrecription, "yyyyMMdd") + "0000", Visu_API, FichierTrace)
                CurrentFactureVitale.G1213C4 = Format(DatePrecription, "yyyyMMdd") + "0000"
                'Identification de la prescription du PS salarié
                SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
                CurrentFactureVitale.G1213C5 = ""
                'N° RPPS du PS salarié
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "NumRPPS" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1213C6 = data
                'Clé du N° RPPS du PS salarié
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "CléRPPS" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1213C7 = data
                'N° de la structure du PS salarié
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "numStructure" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1213C8 = data


            Case "BENEVOLE"
                SGD_AjouterGroupe_Tracé(NumeroSession, 1214, Visu_API, FichierTrace)
                'N° d’identification du PS bénévole
                Dim data As String = ""
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "Numidentification" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1214C1 = data
                'Clé du n° d’identification du PS bénévole
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "Clé" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1214C2 = data
                'Code spécialité du PS bénévole
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "CodeSpécialité" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1214C3 = data
                'Date de prescription du PS bénévole
                SGD_AjouterChamp_Tracé(NumeroSession, Format(DatePrecription, "yyyyMMdd") + "0000", Visu_API, FichierTrace)
                CurrentFactureVitale.G1214C4 = Format(DatePrecription, "yyyyMMdd") + "0000"
                'Identification de la prescription du PS bénévole
                SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
                CurrentFactureVitale.G1214C5 = ""
                'N° RPPS du PS bénévole
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "NumRPPS" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1214C6 = data
                'Clé du N° RPPS du PS bénévole
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "CléRPPS" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1214C7 = data
                'N° de la structure du PS bénévole
                For i = 0 To mydatatable.Columns.Count - 1
                    If mydatatable.Columns.Item(i).ColumnName = "numStructure" Then
                        data = mydatatable(0).Item(i).ToString
                        Exit For
                    End If
                Next
                SGD_AjouterChamp_Tracé(NumeroSession, data, Visu_API, FichierTrace)
                CurrentFactureVitale.G1214C8 = data
            Case Else
                MsgBox("PRESCRIPTEUR NON RENSEIGNE" + Chr(10) + "ou" + Chr(10) + " STATUT DU PRESCRIPTEUR NON RENSEIGNE")
                SGD_LibererSession(NumeroSession)
                Exit Sub
        End Select


    End Sub

    'Groupe 1230 : Origine de la prescription
    Public Sub groupe1230(ByVal NumeroSession As UInt16)
        If OriginePrescriptionToolStripMenuItem.Checked = True Then
            SGD_AjouterGroupe_Tracé(NumeroSession, 1230, Visu_API, FichierTrace)
            'champ 1
            SGD_AjouterChamp_Tracé(NumeroSession, Mid(OriginePrescriptionToolStripComboBox.SelectedItem.ToString, 1, 1), Visu_API, FichierTrace)
        End If
    End Sub

    'Groupe 1310 : Organisme AMO 
    Public Function groupe1310(ByVal NumeroSession As UInt16)
        Dim CodeRégime, CaisseGest, CentreGest As String
        If NatureAssurance_Button.Text = "ACCIDENT DU TRAVAIL" And current_AT.CodeRégime <> "" And current_AT.CaisseGest <> "" And current_AT.CentreGest <> "" Then
            CodeRégime = current_AT.CodeRégime
            CaisseGest = current_AT.CaisseGest
            CentreGest = current_AT.CentreGest
        ElseIf NatureAssurance_Button.Text = "SMG" Then
            CodeRégime = "08"
            CaisseGest = "835"
            CentreGest = "0300"
        Else
            CodeRégime = CurrentBenéficiaire.G101C10
            CaisseGest = CurrentBenéficiaire.G101C11
            CentreGest = CurrentBenéficiaire.G101C12
        End If
        SGD_AjouterGroupe_Tracé(NumeroSession, 1310, Visu_API, FichierTrace)
        'champ 1
        SGD_AjouterChamp_Tracé(NumeroSession, CodeRégime, Visu_API, FichierTrace)
        CurrentFactureVitale.G1310C1 = CodeRégime
        'champ 2
        SGD_AjouterChamp_Tracé(NumeroSession, CaisseGest, Visu_API, FichierTrace)
        CurrentFactureVitale.G1310C2 = CaisseGest
        'champ 3
        SGD_AjouterChamp_Tracé(NumeroSession, CentreGest, Visu_API, FichierTrace)
        CurrentFactureVitale.G1310C3 = CentreGest
        'champ 4
        Select Case CurrentBenéficiaire.G101C1 'Type de carte Vitale
            Case "R" ', "T"

                Select Case CodeRégime 'Code Régime

                    Case "03", "99"
                        Select Case Me.AmoTableAdapter1.SelectCount(CodeRégime, CaisseGest, CentreGest)
                            Case 0
                                MsgBox("AUCUN ENREGISTREMENT POUR:" + Chr(10) + "Code Régime:" + CodeRégime + Chr(10) + "Caisse Gestionnaire:" + CaisseGest + Chr(10) + "Centre Gestionnaire:" + CentreGest + Chr(10) + "FACTURATION INTERROMPUE", MsgBoxStyle.Critical)
                                Return False
                            Case 1
                                Dim Codeorganismedestinataire As String
                                Codeorganismedestinataire = Me.AmoTableAdapter1.SelectOrganismeDestinataire(CodeRégime, CaisseGest, CentreGest)
                                SGD_AjouterChamp_Tracé(NumeroSession, Codeorganismedestinataire, Visu_API, FichierTrace)
                                CurrentFactureVitale.G1310C4 = Codeorganismedestinataire
                            Case Else
                                MsgBox("PLUSIEURS ENREGISTREMENTS POUR:" + Chr(10) + "Code Régime:" + CodeRégime + Chr(10) + "Caisse Gestionnaire:" + CaisseGest + Chr(10) + "Centre Gestionnaire:" + CentreGest, MsgBoxStyle.Critical)
                                Return False
                        End Select


                    Case "01", "05", "06", "07", "08", "10", "14", "15", "16", "90", "92", "95"
                        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1310C2, Visu_API, FichierTrace)
                        CurrentFactureVitale.G1310C4 = CurrentFactureVitale.G1310C2

                    Case "02"
                        If Mid(CurrentFactureVitale.G1310C2, 3, 1) = "5" Then
                            SGD_AjouterChamp_Tracé(NumeroSession, Mid(CurrentFactureVitale.G1310C2, 1, 2) & "1", Visu_API, FichierTrace)
                            CurrentFactureVitale.G1310C4 = Mid(CurrentFactureVitale.G1310C2, 1, 2) & "1"
                        Else
                            SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1310C2, Visu_API, FichierTrace)
                            CurrentFactureVitale.G1310C4 = CurrentFactureVitale.G1310C2
                        End If

                    Case "04"
                        SGD_AjouterChamp_Tracé(NumeroSession, "110", Visu_API, FichierTrace)
                        CurrentFactureVitale.G1310C4 = "110"

                    Case "12"
                        SGD_AjouterChamp_Tracé(NumeroSession, "001", Visu_API, FichierTrace)
                        CurrentFactureVitale.G1310C4 = "001"

                    Case "91"
                        If CurrentFactureVitale.G1310C2 = "751" And CurrentFactureVitale.G1310C3 = "0501" Then
                            SGD_AjouterChamp_Tracé(NumeroSession, "999", Visu_API, FichierTrace)
                            CurrentFactureVitale.G1310C4 = "999"
                        Else
                            SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1310C2, Visu_API, FichierTrace)
                            CurrentFactureVitale.G1310C4 = CurrentFactureVitale.G1310C2
                        End If

                    Case "93"
                        If CurrentFactureVitale.G1310C2 = "751" Or CurrentFactureVitale.G1310C2 = "781" Or CurrentFactureVitale.G1310C2 = "911" Or CurrentFactureVitale.G1310C2 = "921" Or CurrentFactureVitale.G1310C2 = "931" Or CurrentFactureVitale.G1310C2 = "941" Or CurrentFactureVitale.G1310C2 = "951" Then
                            SGD_AjouterChamp_Tracé(NumeroSession, Mid(CurrentFactureVitale.G1310C3, 2, 3), Visu_API, FichierTrace)
                            CurrentFactureVitale.G1310C4 = Mid(CurrentFactureVitale.G1310C3, 2, 3)
                        Else
                            SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1310C2, Visu_API, FichierTrace)
                            CurrentFactureVitale.G1310C4 = CurrentFactureVitale.G1310C2
                        End If

                    Case "94"
                        If CurrentFactureVitale.G1310C2 = "751" Or CurrentFactureVitale.G1310C2 = "781" Or CurrentFactureVitale.G1310C2 = "911" Or CurrentFactureVitale.G1310C2 = "921" Or CurrentFactureVitale.G1310C2 = "931" Or CurrentFactureVitale.G1310C2 = "941" Or CurrentFactureVitale.G1310C2 = "951" Then
                            If CurrentFactureVitale.G1310C3 = "0511" Then
                                SGD_AjouterChamp_Tracé(NumeroSession, "514", Visu_API, FichierTrace)
                                CurrentFactureVitale.G1310C4 = "514"
                            Else
                                SGD_AjouterChamp_Tracé(NumeroSession, Mid(CurrentFactureVitale.G1310C3, 2, 3), Visu_API, FichierTrace)
                                CurrentFactureVitale.G1310C4 = Mid(CurrentFactureVitale.G1310C3, 2, 3)
                            End If
                        Else
                            SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1310C2, Visu_API, FichierTrace)
                            CurrentFactureVitale.G1310C4 = CurrentFactureVitale.G1310C2
                        End If

                    Case "96"
                        If CurrentFactureVitale.G1310C2 = "751" Or CurrentFactureVitale.G1310C2 = "781" Or CurrentFactureVitale.G1310C2 = "911" Or CurrentFactureVitale.G1310C2 = "921" Or CurrentFactureVitale.G1310C2 = "931" Or CurrentFactureVitale.G1310C2 = "941" Or CurrentFactureVitale.G1310C2 = "951" Then
                            SGD_AjouterChamp_Tracé(NumeroSession, "751", Visu_API, FichierTrace)
                            CurrentFactureVitale.G1310C4 = "751"
                        Else
                            SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1310C2, Visu_API, FichierTrace)
                            CurrentFactureVitale.G1310C4 = CurrentFactureVitale.G1310C2
                        End If
                End Select

                'champ 5
                SGD_AjouterChamp_Tracé(NumeroSession, "000", Visu_API, FichierTrace)
                CurrentFactureVitale.G1310C5 = "000"

            Case "T"
                'champ 4
                SGD_AjouterChamp_Tracé(NumeroSession, "349", Visu_API, FichierTrace)
                CurrentFactureVitale.G1310C4 = "349"
                'champ 5
                SGD_AjouterChamp_Tracé(NumeroSession, "000", Visu_API, FichierTrace)
                CurrentFactureVitale.G1310C5 = "000"

            Case "D"
                'champ 4
                SGD_AjouterChamp_Tracé(NumeroSession, "999", Visu_API, FichierTrace)
                CurrentFactureVitale.G1310C4 = "999"
                'champ 5
                SGD_AjouterChamp_Tracé(NumeroSession, "999", Visu_API, FichierTrace)
                CurrentFactureVitale.G1310C5 = "999"
        End Select
        Return True
    End Function

    'Groupe 1321 STS : Organisme AMC 
    Public Function groupe1321_STS(ByVal NumeroSession As UInt16) As Boolean
        '____________________________________________________________________________________________________
        'En gestion unique et HTP  AMC le logiciel ne doit pas gérer la part complémentaire, pas de groupe 1321 ni 1330.
        If CurrentFactureVitale.Mode_Gestion = "RO" And CurrentFactureVitale.TP_AMC = False Then
            Return True
        End If
        '______________________________________________________________________________________________________________________
        'ControlesNécessité groupe 1321
        'pas de Num Org Complementaire(champ2)
        If CurrentBenéficiaire.AMC_NumOrganisme = "" And CurrentBenéficiaire.AMC_NumMutuelle = "" Then
            Exit Function
        End If

        '____________________________________________________________________________________________________
        'pour calcul "manuel"
        If CurrentFactureVitale.TOP_CMU = True Then
            'If CurrentFactureVitale.GestionUnique = True Then
            If CurrentFactureVitale.Mode_Gestion = "RO" Then
                CurrentBenéficiaire.AMC_TypeContrat = "CMU-TPcoord"
            Else
                CurrentBenéficiaire.AMC_TypeContrat = "CMU"
            End If
        End If

        '______________________________________________________________________________________________________________________

        SGD_AjouterGroupe_Tracé(NumeroSession, 1321, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 1 Type de contrat
        CurrentFactureVitale.G1321C1 = ""
        If Config.OCT_UtilisationOCT = True And Config.OCT_FSEenrichies = True And CurrentBenéficiaire.AMC_TypeContrat <> "CMU-TPcoord" Then ' And CurrentFactureVitale.Mode_Gestion <> "RO" Then
            CurrentFactureVitale.G1321C1 = "99"
        Else
            If CurrentFactureVitale.TOP_CMU = True Then
                CurrentFactureVitale.G1321C1 = "89"
            End If
            If CurrentFactureVitale.Sortant_CMU = True Then
                CurrentFactureVitale.G1321C1 = "01"
            End If
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C1, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 2 N° organisme complémentaire
        If CurrentFactureVitale.Mode_Gestion = "RO" Then
            CurrentFactureVitale.G1321C2 = CurrentBenéficiaire.AMC_NumMutuelle
        Else
            CurrentFactureVitale.G1321C2 = CurrentBenéficiaire.AMC_NumOrganisme
        End If
        'End If
        If (CurrentFactureVitale.TOP_CMU = True And CurrentFactureVitale.Mode_Gestion = "RO" _
        And CurrentFactureVitale.Sortant_CMU = False And Config.OCT_UtilisationOCT = False) Then
            CurrentFactureVitale.G1321C2 = "         M"
        End If
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            CurrentFactureVitale.G1321C2 = "75500017"
        End If
        If CurrentFactureVitale.Sortant_CMU = True And CurrentFactureVitale.G1321C2 = "" Then
            MsgBox("Sortant de CMU, veuillez indiquer le numéro d'organisme complementaire", MsgBoxStyle.Exclamation)
            Return False
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C2, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 3 N° adhérent(1)
        If (CurrentFactureVitale.TOP_CMU = True And CurrentFactureVitale.Mode_Gestion = "RO" And CurrentFactureVitale.Sortant_CMU = False And Config.OCT_UtilisationOCT = False) Then
            CurrentBenéficiaire.AMC_NumAdherent = ""
        End If
        CurrentFactureVitale.G1321C3 = CurrentBenéficiaire.AMC_NumAdherent
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C3, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 4 Données AMC zone 1
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        CurrentFactureVitale.G1321C4 = ""
        '----------------------------------------------------------------------------------------------------------------------
        'champ 5 Données AMC zone 2
        Dim Champ5 As String = ""
        'pos 1
        Champ5 = (AMC_Piècejustificative_ComboBox.SelectedIndex).ToString
        'pos 2
        Champ5 = Champ5 + " "
        'pos 3
        Select Case CurrentFactureVitale.TP_AMC
            Case False 'pas de TP sur part complémentaire
                Champ5 = Champ5 + "H"
            Case True 'TP sur part complémentaire
                Champ5 = Champ5 + "T"
        End Select

        'pos 4
        If CheckBox_DRE_annulation.Checked = True Then
            Champ5 = Champ5 + "2"
        ElseIf CheckBox_DRE_rectificative.Checked = True Then
            Champ5 = Champ5 + "A"
            'ElseIf (Config.OCT_UtilisationOCT = True And Config.OCT_FSEenrichies = True And CurrentFactureVitale.TP_AMC = True And CurrentFactureVitale.TP_AMO = False) Then
            '    Champ5 = Champ5 + "1"
        Else
            Dim G1321C5pos4 As String = "6"
            For i = 0 To Vente.RowCount - 2
                Dim codeprestation As DataTable = Me.CodePrestationsTableAdapter.GetDataBy_CodeActe(Vente(VenteCodeActe.Index, i).Value.ToString)
                Dim typenomenclature As String = ""
                For c = 0 To codeprestation.Columns.Count - 1
                    If codeprestation.Columns.Item(c).ColumnName = "TypeNomenclature" Then
                        typenomenclature = codeprestation(0).Item(c)
                        Exit For
                    End If
                Next
                If UCase(Vente(VenteType.Index, i).Value.ToString) <> "VENTE DIRECTE" And (Vente(VenteCodeActe.Index, i).Value.ToString) <> "PHN" And typenomenclature <> "" Then
                    G1321C5pos4 = "1"
                End If
            Next
            Champ5 = Champ5 + G1321C5pos4
            'If CurrentFactureVitale.TP_AMO = False And CurrentFactureVitale.TP_AMC = True Then
            '    'CDC annexe 1-A0: "Dans le cadre de SESAM-Vitale, les valeurs 3-4-5-7 ne sont pas utilisées. Elles sont réservées pour les organismes complémentaire"
            '    'facture normale RC seulement
            '    Champ5 = Champ5 + "6"
            'Else 'facture normale RO+RC
            '    Champ5 = Champ5 + "1"
            'End If

        End If


        SGD_AjouterChamp_Tracé(NumeroSession, Champ5, Visu_API, FichierTrace)
        CurrentFactureVitale.G1321C5 = Champ5
        '----------------------------------------------------------------------------------------------------------------------
        'champ 6 N° organisme complémentaire EDI
        If AMC_Piècejustificative_ComboBox.SelectedIndex = 4 And CurrentBenéficiaire.G109C2 <> "" Then
            CurrentFactureVitale.G1321C6 = CurrentBenéficiaire.G109C2
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C6, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 7 Code application
        SGD_AjouterChamp_Tracé(NumeroSession, "99", Visu_API, FichierTrace)
        CurrentFactureVitale.G1321C7 = "99"
        '----------------------------------------------------------------------------------------------------------------------
        'champ 8 Code de routage flux AMC
        If (Config.OCT_UtilisationOCT = True And Config.OCT_FSEenrichies = True) Or CurrentFactureVitale.Mode_Gestion = "RO" Then
            CurrentFactureVitale.G1321C9 = ""
        ElseIf CurrentFactureVitale.TP_AMC = False Then
            If AMC_Piècejustificative_ComboBox.SelectedIndex = 4 Then
                If CurrentBenéficiaire.G109C7 <> "" And CurrentBenéficiaire.G109C8 <> "" And CurrentBenéficiaire.G109C9 <> "" Then
                    CurrentFactureVitale.G1321C8 = CurrentBenéficiaire.G109C7
                    CurrentFactureVitale.G1321C9 = CurrentBenéficiaire.G109C9
                    CurrentFactureVitale.G1321C11 = CurrentBenéficiaire.G109C8
                ElseIf CurrentConvention.selected = True And CurrentConvention.Code_routage <> "" And CurrentConvention.nom_domaine <> "" And CurrentConvention.identifiant_hôte <> "" Then
                    CurrentFactureVitale.G1321C8 = CurrentConvention.Code_routage
                    CurrentFactureVitale.G1321C9 = CurrentConvention.nom_domaine
                    CurrentFactureVitale.G1321C11 = CurrentConvention.identifiant_hôte
                    'Else
                    '    MsgBox("Données d'adressage incomplètes pour la DRE" + Chr(10) + "Facturation interompues", MsgBoxStyle.Information)
                    '    Return False
                End If

            ElseIf CurrentConvention.usage_attestation_papier = "0" Then
                If AMC_CodeRoutage_TextBox.Text <> "" And AMC_NomDomaine_TextBox.Text <> "" And AMC_IdHote_TextBox.Text <> "" Then
                    CurrentFactureVitale.G1321C8 = AMC_CodeRoutage_TextBox.Text
                    CurrentFactureVitale.G1321C9 = AMC_NomDomaine_TextBox.Text
                    CurrentFactureVitale.G1321C11 = AMC_IdHote_TextBox.Text
                ElseIf CurrentConvention.selected = True And CurrentConvention.Code_routage <> "" And CurrentConvention.nom_domaine <> "" And CurrentConvention.identifiant_hôte <> "" Then
                    CurrentFactureVitale.G1321C8 = CurrentConvention.Code_routage
                    CurrentFactureVitale.G1321C9 = CurrentConvention.nom_domaine
                    CurrentFactureVitale.G1321C11 = CurrentConvention.identifiant_hôte
                    'Else
                    '    MsgBox("Données d'adressage incomplètes pour la DRE" + Chr(10) + "Facturation interompues", MsgBoxStyle.Information)
                    '    Return False
                End If

            ElseIf CurrentConvention.usage_attestation_papier = "1" Then
                If CurrentConvention.selected = True And CurrentConvention.Code_routage <> "" And CurrentConvention.nom_domaine <> "" And CurrentConvention.identifiant_hôte <> "" Then
                    CurrentFactureVitale.G1321C8 = CurrentConvention.Code_routage
                    CurrentFactureVitale.G1321C9 = CurrentConvention.nom_domaine
                    CurrentFactureVitale.G1321C11 = CurrentConvention.identifiant_hôte
                    'Else
                    '    MsgBox("Données d'adressage incomplètes pour la DRE" + Chr(10) + "Facturation interompues", MsgBoxStyle.Information)
                    '    Return False
                End If

            End If

        ElseIf CurrentFactureVitale.TP_AMC = True Then
            If CurrentConvention.selected = True And CurrentConvention.Code_routage <> "" And CurrentConvention.nom_domaine <> "" And CurrentConvention.identifiant_hôte <> "" Then
                CurrentFactureVitale.G1321C8 = CurrentConvention.Code_routage
                CurrentFactureVitale.G1321C9 = CurrentConvention.nom_domaine
                CurrentFactureVitale.G1321C11 = CurrentConvention.identifiant_hôte
                'Else
                '    MsgBox("Données d'adressage incomplètes pour la DRE" + Chr(10) + "Facturation interompues", MsgBoxStyle.Information)
                '    Return False
            End If

        End If


        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C8, Visu_API, FichierTrace)

        '----------------------------------------------------------------------------------------------------------------------
        'champ 9 Domaine  (voire champ 8)
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C9, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 10 Indicateur de traitement AMC
        If CurrentFactureVitale.TOP_CMU = True And CurrentFactureVitale.Mode_Gestion = "RO" Then
            CurrentBenéficiaire.AMC_Indicateurdetrairement = "62" 'CDC 4.2.5.1.2 CMU-C
        End If
        CurrentFactureVitale.G1321C10 = CurrentBenéficiaire.AMC_Indicateurdetrairement
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C10, Visu_API, FichierTrace)
        '---------------------------------------------------------------------------------------------------------------------- 
        'champ 11 Identifiant hôte gestionnaire  (voire champ 8)
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C11, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 12 Identifiant de l’assuré AMC
        CurrentFactureVitale.G1321C12 = MUT_IDassure_TextBox.Text
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C12, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 13 Zone supplémentaire non certifiée
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        Return True
    End Function

    'Groupe 1321 : Organisme AMC 
    Public Function groupe1321(ByVal NumeroSession As UInt16) As Boolean
        '____________________________________________________________________________________________________
        'En gestion unique et HTP  AMC le logiciel ne doit pas gérer la part complémentaire, pas de groupe 1321 ni 1330.
        If CurrentFactureVitale.Mode_Gestion = "RO" And CurrentFactureVitale.TP_AMC = False And CurrentFactureVitale.TOP_CMU = False Then
            Return True
        End If
        '______________________________________________________________________________________________________________________
        'ControlesNécessité groupe 1321
        'pas de Num Org Complementaire(champ2)
        If CurrentBenéficiaire.AMC_NumOrganisme = "" And CurrentBenéficiaire.AMC_NumMutuelle = "" And CurrentFactureVitale.TOP_CMU = False Then
            Exit Function
        End If

        '____________________________________________________________________________________________________
        'pour calcul "manuel"
        If CurrentFactureVitale.TOP_CMU = True Then
            'If CurrentFactureVitale.GestionUnique = True Then
            If CurrentFactureVitale.Mode_Gestion = "RO" Then
                CurrentBenéficiaire.AMC_TypeContrat = "CMU-TPcoord"
            Else
                CurrentBenéficiaire.AMC_TypeContrat = "CMU"
            End If
        End If

        '______________________________________________________________________________________________________________________

        SGD_AjouterGroupe_Tracé(NumeroSession, 1321, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 1 Type de contrat
        CurrentFactureVitale.G1321C1 = ""
        If Config.OCT_UtilisationOCT = True And Config.OCT_FSEenrichies = True And CurrentBenéficiaire.AMC_TypeContrat <> "CMU-TPcoord" Then 'And CurrentFactureVitale.Mode_Gestion <> "RO"  Then
            CurrentFactureVitale.G1321C1 = "99"
        Else
            If CurrentFactureVitale.TOP_CMU = True Then
                CurrentFactureVitale.G1321C1 = "89"
            End If
            If CurrentFactureVitale.Sortant_CMU = True Then
                CurrentFactureVitale.G1321C1 = "01"
            End If
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C1, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 2 N° organisme complémentaire
        If CurrentFactureVitale.Mode_Gestion = "RO" Then
            CurrentFactureVitale.G1321C2 = CurrentBenéficiaire.AMC_NumMutuelle
        Else
            CurrentFactureVitale.G1321C2 = CurrentBenéficiaire.AMC_NumOrganisme
        End If
        'End If


        If (CurrentFactureVitale.TOP_CMU = True And CurrentFactureVitale.Mode_Gestion = "RO" And CurrentFactureVitale.Sortant_CMU = False And Config.OCT_UtilisationOCT = False) Then
            CurrentFactureVitale.G1321C2 = "         M"
        End If
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            CurrentFactureVitale.G1321C2 = "75500017"
        End If
        If CurrentFactureVitale.Sortant_CMU = True And CurrentFactureVitale.G1321C2 = "" Then
            MsgBox("Sortant de CMU, veuillez indiquer le numéro d'organisme complementaire", MsgBoxStyle.Exclamation)
            Return False
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C2, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 3 N° adhérent(1)
        If (CurrentFactureVitale.TOP_CMU = True And CurrentFactureVitale.Mode_Gestion = "RO" And CurrentFactureVitale.Sortant_CMU = False And Config.OCT_UtilisationOCT = False) Then
            CurrentBenéficiaire.AMC_NumAdherent = ""
        End If
        CurrentFactureVitale.G1321C3 = CurrentBenéficiaire.AMC_NumAdherent
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C3, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 4 Données AMC zone 1
        If RéférencedepriseenchargeToolStripMenuItem.Checked = True Then
            CurrentFactureVitale.G1321C4 = UCase(RéférencedepriseenchargeToolStripTextBox.Text)
        Else
            CurrentFactureVitale.G1321C4 = ""
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C4, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 5 Données AMC zone 2
        Dim Champ5 As String = ""
        'pos 1
        Champ5 = (AMC_Piècejustificative_ComboBox.SelectedIndex).ToString
        'pos 2
        Champ5 = Champ5 + " "
        'pos 3
        Select Case CurrentFactureVitale.TP_AMC
            Case False 'pas de TP sur part complémentaire
                Champ5 = Champ5 + "H"
            Case True 'TP sur part complémentaire
                Champ5 = Champ5 + "T"
        End Select

        'pos 4
        If CheckBox_DRE_annulation.Checked = True Then
            Champ5 = Champ5 + "2"
        ElseIf CheckBox_DRE_rectificative.Checked = True Then
            Champ5 = Champ5 + "A"
            'ElseIf (Config.OCT_UtilisationOCT = True And Config.OCT_FSEenrichies = True And CurrentFactureVitale.TP_AMC = True And CurrentFactureVitale.TP_AMO = False) Then
            '    Champ5 = Champ5 + "1"
        Else
            Dim G1321C5pos4 As String = "6"
            For i = 0 To Vente.RowCount - 2
                Dim codeprestation As DataTable = Me.CodePrestationsTableAdapter.GetDataBy_CodeActe(Vente(VenteCodeActe.Index, i).Value.ToString)
                Dim typenomenclature As String = ""
                For c = 0 To codeprestation.Columns.Count - 1
                    If codeprestation.Columns.Item(c).ColumnName = "TypeNomenclature" Then
                        typenomenclature = codeprestation(0).Item(c)
                        Exit For
                    End If
                Next
                If UCase(Vente(VenteType.Index, i).Value.ToString) <> "VENTE DIRECTE" And (Vente(VenteCodeActe.Index, i).Value.ToString) <> "PHN" And typenomenclature <> "" Then
                    G1321C5pos4 = "1"
                End If
            Next
            Champ5 = Champ5 + G1321C5pos4
            'If (CurrentFactureVitale.TP_AMO = False And CurrentFactureVitale.TP_AMC = True) Then 'And CurrentFactureVitale.Mode_Gestion <> "RO") Or NePasGénérerDeFSEToolStripMenuItem.Checked = True Then
            '    'CDC annexe 1-A0: "Dans le cadre de SESAM-Vitale, les valeurs 3-4-5-7 ne sont pas utilisées. Elles sont réservées pour les organismes complémentaire"
            '    'facture normale RC seulement
            '    Champ5 = Champ5 + "6"
            'Else 'facture normale RO+RC
            '    Champ5 = Champ5 + "1"
            'End If

        End If


        SGD_AjouterChamp_Tracé(NumeroSession, Champ5, Visu_API, FichierTrace)
        CurrentFactureVitale.G1321C5 = Champ5
        '----------------------------------------------------------------------------------------------------------------------
        'champ 6 N° organisme complémentaire EDI
        If AMC_Piècejustificative_ComboBox.SelectedIndex = 4 And CurrentBenéficiaire.G109C2 <> "" Then
            CurrentFactureVitale.G1321C6 = CurrentBenéficiaire.G109C2
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C6, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 7 Code application
        SGD_AjouterChamp_Tracé(NumeroSession, "99", Visu_API, FichierTrace)
        CurrentFactureVitale.G1321C7 = "99"
        '----------------------------------------------------------------------------------------------------------------------
        'champ 8 Code de routage flux AMC
        If (Config.OCT_UtilisationOCT = True And Config.OCT_FSEenrichies = False) Or CurrentFactureVitale.Mode_Gestion = "RO" Or CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            CurrentFactureVitale.G1321C8 = ""
            CurrentFactureVitale.G1321C9 = ""
        ElseIf CurrentFactureVitale.TP_AMC = False Then
            If AMC_Piècejustificative_ComboBox.SelectedIndex = 4 Then
                If CurrentBenéficiaire.G109C7 <> "" And CurrentBenéficiaire.G109C8 <> "" And CurrentBenéficiaire.G109C9 <> "" Then
                    CurrentFactureVitale.G1321C8 = CurrentBenéficiaire.G109C7
                    CurrentFactureVitale.G1321C9 = CurrentBenéficiaire.G109C9
                    CurrentFactureVitale.G1321C11 = CurrentBenéficiaire.G109C8
                ElseIf CurrentConvention.selected = True And CurrentConvention.Code_routage <> "" And CurrentConvention.nom_domaine <> "" And CurrentConvention.identifiant_hôte <> "" Then
                    CurrentFactureVitale.G1321C8 = CurrentConvention.Code_routage
                    CurrentFactureVitale.G1321C9 = CurrentConvention.nom_domaine
                    CurrentFactureVitale.G1321C11 = CurrentConvention.identifiant_hôte
                Else
                    MsgBox("Données d'adressage incomplètes pour la DRE" + Chr(10) + "Facturation interompues", MsgBoxStyle.Information)
                    Return False
                End If

            ElseIf CurrentConvention.usage_attestation_papier = "0" Then
                If AMC_CodeRoutage_TextBox.Text <> "" And AMC_NomDomaine_TextBox.Text <> "" And AMC_IdHote_TextBox.Text <> "" Then
                    CurrentFactureVitale.G1321C8 = AMC_CodeRoutage_TextBox.Text
                    CurrentFactureVitale.G1321C9 = AMC_NomDomaine_TextBox.Text
                    CurrentFactureVitale.G1321C11 = AMC_IdHote_TextBox.Text
                ElseIf CurrentConvention.selected = True And CurrentConvention.Code_routage <> "" And CurrentConvention.nom_domaine <> "" And CurrentConvention.identifiant_hôte <> "" Then
                    CurrentFactureVitale.G1321C8 = CurrentConvention.Code_routage
                    CurrentFactureVitale.G1321C9 = CurrentConvention.nom_domaine
                    CurrentFactureVitale.G1321C11 = CurrentConvention.identifiant_hôte
                Else
                    MsgBox("Données d'adressage incomplètes pour la DRE" + Chr(10) + "Facturation interompues", MsgBoxStyle.Information)
                    Return False
                End If

            ElseIf CurrentConvention.usage_attestation_papier = "1" Then
                If CurrentConvention.selected = True And CurrentConvention.Code_routage <> "" And CurrentConvention.nom_domaine <> "" And CurrentConvention.identifiant_hôte <> "" Then
                    CurrentFactureVitale.G1321C8 = CurrentConvention.Code_routage
                    CurrentFactureVitale.G1321C9 = CurrentConvention.nom_domaine
                    CurrentFactureVitale.G1321C11 = CurrentConvention.identifiant_hôte
                Else
                    MsgBox("Données d'adressage incomplètes pour la DRE" + Chr(10) + "Facturation interompues", MsgBoxStyle.Information)
                    Return False
                End If

            End If

        ElseIf CurrentFactureVitale.TP_AMC = True Then
            If CurrentConvention.selected = True And CurrentConvention.Code_routage <> "" And CurrentConvention.nom_domaine <> "" And CurrentConvention.identifiant_hôte <> "" Then
                CurrentFactureVitale.G1321C8 = CurrentConvention.Code_routage
                CurrentFactureVitale.G1321C9 = CurrentConvention.nom_domaine
                CurrentFactureVitale.G1321C11 = CurrentConvention.identifiant_hôte
            ElseIf Config.OCT_UtilisationOCT = True Then
                CurrentFactureVitale.G1321C8 = ""
                CurrentFactureVitale.G1321C9 = ""
                CurrentFactureVitale.G1321C11 = ""
            Else
                MsgBox("Données d'adressage incomplètes pour la DRE" + Chr(10) + "Facturation interompues", MsgBoxStyle.Information)
                Me.FacturesTableAdapter.DeleteByNum(CurrentFactureVitale.G1110C1)
                Return False
            End If

        End If


        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C8, Visu_API, FichierTrace)

        '----------------------------------------------------------------------------------------------------------------------
        'champ 9 Domaine  (voire champ 8)
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C9, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 10 Indicateur de traitement AMC
        If CurrentFactureVitale.TOP_CMU = True And CurrentFactureVitale.Mode_Gestion = "RO" Then
            CurrentBenéficiaire.AMC_Indicateurdetrairement = "62" 'CDC 4.2.5.1.2 CMU-C
        End If
        CurrentFactureVitale.G1321C10 = CurrentBenéficiaire.AMC_Indicateurdetrairement
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C10, Visu_API, FichierTrace)
        '---------------------------------------------------------------------------------------------------------------------- 
        'champ 11 Identifiant hôte gestionnaire  (voire champ 8)
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C11, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 12 Identifiant de l’assuré AMC
        'CurrentFactureVitale.G1321C12 = MUT_IDassure_TextBox.Text
        CurrentFactureVitale.G1321C12 = CurrentBenéficiaire.AMC_IdentifiantAMC
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1321C12, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 13 Zone supplémentaire non certifiée
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        Return True
    End Function

    'Groupe 1330 Données Complémentaire additionnelles
    Public Sub groupe1330(ByVal NumeroSession As UInt16)
        '____________________________________________________________________________________________________
        'En gestion unique et HTP  AMC le logiciel ne doit pas gérer la part complémentaire, pas de groupe 1321 ni 1330.
        If CurrentFactureVitale.Mode_Gestion = "RO" And CurrentFactureVitale.TP_AMC = False Then
            Exit Sub
        End If
        '____________________________________________________________________________________________________

        SGD_AjouterGroupe_Tracé(NumeroSession, 1330, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 1 N° opérateur de réglement AMC, Issu de la table de conventions ou N° AMC
        If CurrentFactureVitale.Mode_Gestion = "" Then
            If CurrentConvention.selected = True And CurrentConvention.Identifiant_Opérateur_règlement <> "" Then
                CurrentFactureVitale.G1330C1 = CurrentConvention.Identifiant_Opérateur_règlement
            Else
                CurrentFactureVitale.G1330C1 = CurrentBenéficiaire.AMC_NumOrganisme
            End If
        End If

        If CurrentFactureVitale.Mode_Gestion = "RO" Then

            If AMC_Piècejustificative_ComboBox.SelectedIndex = 4 Then
                If CurrentBenéficiaire.G107C5 <> "" And CurrentBenéficiaire.G107C4 <> "" Then
                    CurrentFactureVitale.G1330C1 = Mid(CurrentBenéficiaire.G107C5, 1, 10)
                ElseIf CurrentConvention.selected = True Then
                    CurrentFactureVitale.G1330C1 = CurrentConvention.Num_AMC
                Else
                    CurrentFactureVitale.G1330C1 = CurrentBenéficiaire.AMC_NumOrganisme
                End If

            Else 'pas carte vitale
                If CurrentBenéficiaire.AMC_NumOrganisme <> "" Then 'num AMC sur attestation
                    CurrentFactureVitale.G1330C1 = CurrentBenéficiaire.AMC_NumOrganisme
                Else
                    If CurrentConvention.selected = True Then 'num AMC table convention
                        CurrentFactureVitale.G1330C1 = CurrentConvention.Num_AMC
                    End If
                End If
            End If
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1330C1, Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 2 Contexte conventionnel AMC

        ValeurChamp = "@@"
        SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 14, ValeurChamp, 2)
        CurrentFactureVitale.G1330C2 = "01" + ValeurChamp
        ValeurChamp = "@"
        SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 13, ValeurChamp, 1)
        '------------
        If CurrentConvention.selected = True Then
            Dim critère_secondaire As String = CurrentConvention.critère_secondaire
            'Dim tab_char() As Char
            'ReDim tab_char(critère_secondaire.Length)
            'For i = 1 To critère_secondaire.Length
            '    If Mid(critère_secondaire, i, 1) = "?" Then
            '        tab_char(i - 1) = "X"
            '    Else
            '        tab_char(i - 1) = Mid(critère_secondaire, i, 1)
            '    End If
            'Next
            'critère_secondaire = tab_char
            While InStr(critère_secondaire, "?") <> 0
                Dim pos As Integer = InStr(critère_secondaire, "?")
                critère_secondaire = Mid(critère_secondaire, 1, pos - 1) + "X" + Mid(critère_secondaire, pos + 1)
            End While
            CurrentFactureVitale.G1330C2 = CurrentFactureVitale.G1330C2 + ValeurChamp + CurrentConvention.type_Identifiant_org_signataire + critère_secondaire
            '------------
            'ElseIf CurrentFactureVitale.GestionUnique = True Then
            '    CurrentFactureVitale.G1330C2 = CurrentFactureVitale.G1330C2 + ValeurChamp + "RO"+
            '------------
        Else
            CurrentFactureVitale.G1330C2 = ""

        End If
        '------------
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1330C2, Visu_API, FichierTrace)
        'SGD_AjouterChamp_Tracé(NumeroSession, "01501RO01349XXXX", Visu_API, FichierTrace)
        '----------------------------------------------------------------------------------------------------------------------
        'champ 3
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)

    End Sub

    'Groupe 1410 : Cadre de remboursement
    Public Sub groupe1410(ByVal NumeroSession)
        SGD_AjouterGroupe_Tracé(NumeroSession, 1410, Visu_API, FichierTrace)
        If CurrentFactureVitale.TP_AMO = True Then
            If CurrentFactureVitale.TP_AMC = True And CurrentConvention.selected = True And CurrentConvention.type_Identifiant_org_signataire = "RO" _
            And (Config.OCT_UtilisationOCT = False Or (Config.OCT_FSEenrichies = False And Config.OCT_FSE_FichierUnique = False)) Then
                CurrentFactureVitale.G1410C1 = "3"
            Else
                CurrentFactureVitale.G1410C1 = "2"
            End If
        Else 'TP_AMO=false
            If CurrentFactureVitale.TP_AMC = True And CurrentConvention.selected = True And CurrentConvention.type_Identifiant_org_signataire = "RO" _
            And (Config.OCT_UtilisationOCT = False Or (Config.OCT_FSEenrichies = False And Config.OCT_FSE_FichierUnique = False)) Then
                CurrentFactureVitale.G1410C1 = "4"
            Else
                CurrentFactureVitale.G1410C1 = "1"
            End If
        End If

        If (CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl") And CurrentFactureVitale.TP_AMC = True Then
            CurrentFactureVitale.G1410C1 = "3"
        End If

        'Cadrederemboursement
        '1 Pas de tiers-payant
        '2 Tiers-payant sur la part obligatoire seulement
        '3 Tiers-payant sur la part obligatoire et la part complémentaire dans le cadre d'une convention de gestion
        '4 Tiers-payant sur la part complémentaire dans le cadre d'une convention de gestion, la part obligatoire n'étant pas à rembourser
        '5 Tiers payant intégral pour le compte des régimes SNCF, RATP ou Mines.
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1410C1, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
    End Sub

    'Groupe 1420 : Identification de pièce justificative pour l’AMO, obligatoire uniquement dans Factures non signées par carte Vitale ou SMG
    Public Sub groupe1420(ByVal NumeroSession As UInt16)
        SGD_AjouterGroupe_Tracé(NumeroSession, 1420, Visu_API, FichierTrace)

        ''Champ1 Nature de la pièce justificative pour l’AMO
        If NatureAssurance_Button.Text = "SMG" Then
            CurrentFactureVitale.G1420C1 = "1"
        ElseIf CurrentBenéficiaire.G1420C1 = "" Then
            CurrentFactureVitale.G1420C1 = "0"
        Else
            CurrentFactureVitale.G1420C1 = CurrentBenéficiaire.G1420C1
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1420C1, Visu_API, FichierTrace)

        'Champ2 Date de validité de la pièce justificative pour l’AMO
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentBenéficiaire.G1420C2, Visu_API, FichierTrace)
        CurrentFactureVitale.G1420C1 = CurrentBenéficiaire.G1420C2

        'champ3 Origine de la pièce justificative pour l’AMO
        If CurrentBenéficiaire.G1420C1 = "2" Then
            SGD_AjouterChamp_Tracé(NumeroSession, CurrentBenéficiaire.G1420C3, Visu_API, FichierTrace)
            CurrentFactureVitale.G1420C2 = CurrentBenéficiaire.G1420C3
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            CurrentFactureVitale.G1420C3 = ""
        End If
    End Sub

    'Groupe 1440 : Forçage niveau facture   
    Public Sub groupe1440(ByVal NumeroSession As UInt16)
        If CurrentFactureVitale.G1440C1 <> "" Or CurrentFactureVitale.G1440C2 <> "" Then
            SGD_AjouterGroupe_Tracé(NumeroSession, 1440, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1440C1, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1440C2, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1440C3, Visu_API, FichierTrace)
        End If
    End Sub

    'Groupe 1450 : Module de Tarification Complémentaire
    Public Sub groupe1450(ByVal NumeroSession As UInt16)
        If Config.STS_Activer = False Then
            Exit Sub
        End If

        Dim groupe_existe As Boolean = False 'pour exit si pas de groupe 1450, evite d'ajouter des champs sans groupe
        For i = 0 To Tab_Valeur_STS.Length - 1
            If Tab_Valeur_STS(i).groupe = 1450 Then
                groupe_existe = True
                SGD_AjouterGroupe_Tracé(NumeroSession, 1450, Visu_API, FichierTrace)
                Exit For
            End If
        Next
        If groupe_existe = False Then Exit Sub

        'champ 1
        Dim found As Boolean = False
        For i = 0 To Tab_Valeur_STS.Length - 1
            If Tab_Valeur_STS(i).groupe = 1450 And Tab_Valeur_STS(i).champ = 1 Then
                SGD_AjouterChamp_Tracé(NumeroSession, Tab_Valeur_STS(i).valeur, Visu_API, FichierTrace)
                found = True
                Exit For
            End If
        Next
        If found = False Then
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        End If

        'champ 2
        found = False
        For i = 0 To Tab_Valeur_STS.Length - 1
            If Tab_Valeur_STS(i).groupe = 1450 And Tab_Valeur_STS(i).champ = 2 Then
                SGD_AjouterChamp_Tracé(NumeroSession, Tab_Valeur_STS(i).valeur, Visu_API, FichierTrace)
                found = True
                Exit For
            End If
        Next
        If found = False Then
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        End If


    End Sub

    'Groupe 1511 : Nature d’assurance Maladie
    Public Sub groupe1511(ByVal NumeroSession As UInt16)
        SGD_AjouterGroupe_Tracé(NumeroSession, 1511, Visu_API, FichierTrace)

        'champ1 Date d’accident de droit commun(renseignée sur le form Choix_Facturation)
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1511C1, Visu_API, FichierTrace)

        'champ2 Indicateur Régime Alsace - Moselle à indiquer pour le mode dégradé
        If CheckBoxModeDegradé.Checked = True Then
            'SGD_AjouterChamp_Tracé(NumeroSession, CurrentBenéficiaire.G1511C2)
            'CurrentFactureVitale.G1511C2 = CurrentBenéficiaire.G1511C2
            'azertyui = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + CurrentFactureVitale.G1511C2, "")
            If G1511C2_CheckBox1.Checked = True Then
                SGD_AjouterChamp_Tracé(NumeroSession, "O", Visu_API, FichierTrace)
                CurrentFactureVitale.G1511C2 = "O"
            Else
                SGD_AjouterChamp_Tracé(NumeroSession, "N", Visu_API, FichierTrace)
                CurrentFactureVitale.G1511C2 = "N"
            End If
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            CurrentFactureVitale.G1511C2 = ""
        End If

    End Sub

    'Groupe 1512 : Nature d’assurance Maternité
    Public Sub groupe1512(ByVal NumeroSession As UInt16, ByVal datematernite As Date)
        SGD_AjouterGroupe_Tracé(NumeroSession, 1512, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NumeroSession, Format(datematernite, "yyyyMMdd") + "0000", Visu_API, FichierTrace)
        CurrentFactureVitale.G1512C1 = Format(datematernite, "yyyyMMdd") + "0000"
    End Sub

    'Groupe 1514 : Nature d’assurance Prévention
    Public Sub groupe1514(ByVal NumeroSession As UInt16)
        SGD_AjouterGroupe_Tracé(NumeroSession, 1514, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)

    End Sub

    'Groupe 1513 : Nature d’assurance Accident du Travail
    Public Function groupe1513(ByVal NumeroSession As UInt16, ByVal dateaccidenttravail As String, ByVal numeroaccidenttravail As String, ByVal clenumeroaccidenttravail As String)
        Select Case CurrentFactureVitale.G1310C1
            Case "08", "10", "12", "14", "15", "16", "91", "92", "93", "94", "95", "96", "99"
                If MsgBox("Régime n'autorisant pas l'envoi d'une FSE AT" + Chr(10) + "Voulez vous forcer l'envoi?", 36) = MsgBoxResult.No Then
                    Return False
                Else
                    CurrentFactureVitale.G1440C1 = "W"
                End If
            Case "02"
                Select Case CurrentFactureVitale.G1310C2
                    Case "571", "575", "579", "671", "675", "679", "681", "685", "689"
                        If MsgBox("Caisse Gestionnaire de ce régime n'autorisant pas l'envoi d'une FSE AT" + Chr(10) + "Voulez vous forcer l'envoi?", 36) = MsgBoxResult.No Then
                            Return False
                        Else
                            CurrentFactureVitale.G1440C1 = "W"
                        End If
                End Select

            Case "03", "90"
                If MsgBox("Les assurés de ce régime ne sont pas couverts pour le risque AT" + Chr(10) + "Vous pouvez choisir la nature d'assurance: Maladie." + Chr(10) + "Voulez vous forcer l'envoi en AT?", 36) = MsgBoxResult.No Then
                    Return False
                Else
                    CurrentFactureVitale.G1440C1 = "W"
                End If
        End Select
        SGD_AjouterGroupe_Tracé(NumeroSession, 1513, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NumeroSession, dateaccidenttravail, Visu_API, FichierTrace)
        CurrentFactureVitale.G1513C1 = dateaccidenttravail
        SGD_AjouterChamp_Tracé(NumeroSession, numeroaccidenttravail, Visu_API, FichierTrace)
        CurrentFactureVitale.G1513C2 = numeroaccidenttravail
        SGD_AjouterChamp_Tracé(NumeroSession, clenumeroaccidenttravail, Visu_API, FichierTrace)
        CurrentFactureVitale.G1513C3 = clenumeroaccidenttravail
        Return True

    End Function

    'Groupe 1515 : Nature d’assurance Soins Médicaux Gratuits
    Public Function groupe1515(ByVal NumeroSession As UInt16)
        SGD_AjouterGroupe_Tracé(NumeroSession, 1515, Visu_API, FichierTrace)
        'Dim MPC As Integer
        'For r = 0 To Vente.RowCount - 1
        '    If UCase(Vente.Item(VenteType.Index, r).Value) = "ASSURANCE" Then
        '        MPC = MPC + (Vente.Item(VenteTotal.Index, r).Value * 100)
        '    End If
        'Next
        'SGD_AjouterChamp_Tracé(NumeroSession, MPC.ToString, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NumeroSession, Montant_PEC_SMG_TextBox1.Text, Visu_API, FichierTrace)
        CurrentFactureVitale.G1515C1 = Montant_PEC_SMG_TextBox1.Text
        Return True

    End Function

    'groupe 1610 Médicaments STS
    Public Sub groupe1610Médicaments_STS(ByVal NumeroSession As UInt16, ByVal numligne As Integer, ByRef Nombre_de_Prestations As Integer, ByRef Total_des_montants_facturés As Double, ByRef Total_remboursable_par_l_AMO As Double, ByRef Total_Théorique_Remboursable_par_AMC As Double, ByRef Total_Remboursable_par_AMC As Double)

        Nombre_de_Prestations = Nombre_de_Prestations + 1

        SGD_AjouterGroupe_Tracé(NumeroSession, 1610, Visu_API, FichierTrace)

        If CurrentFactureVitale.TabLigneFacture.Length - 1 < Nombre_de_Prestations Then
            ReDim Preserve CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations)
        End If

        'Champ1

        Dim NuméroPrestation As String = Nombre_de_Prestations.ToString
        SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C1 = NuméroPrestation

        'Champ2 Date d’exécution
        SGD_AjouterChamp_Tracé(NumeroSession, Format(DateExecution.Value, "yyyyMMdd") + "0000", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C2 = Format(DateExecution.Value, "yyyyMMdd") + "0000"

        'Champ3 Lieu d’exécution 0 pharmacie | 1 domicile patient
        SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C3 = "0"

        'Champ 4 Code prestation
        SGD_AjouterChamp_Tracé(NumeroSession, Vente(VenteCodeActe.Index, numligne).Value.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C4 = Vente(VenteCodeActe.Index, numligne).Value.ToString

        'Champ 5 CCAM : champ non renseigné
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C5 = ""

        'Champ6 Montant des honoraires
        Dim MontantHonoraires As Double = 0
        If tab_Lignes_Vente(numligne).deconditionement Then
            MontantHonoraires = tab_Lignes_Vente(numligne).deconditionement_prix_unitaire * tab_Lignes_Vente(numligne).deconditionement_quantité
        Else
            MontantHonoraires = Vente(VenteTotal.Index, numligne).Value * 100
        End If
        Total_des_montants_facturés = Total_des_montants_facturés + MontantHonoraires
        SGD_AjouterChamp_Tracé(NumeroSession, MontantHonoraires, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C6 = MontantHonoraires.ToString

        'Champ7 Qualificatif de la dépense
        If Me.CodePrestationsTableAdapter.GetDataBy_CodeActe(Vente(VenteCodeActe.Index, numligne).Value.ToString).Item(0).CompatibleTable1 = False Then
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "N"
        ElseIf CurrentFactureVitale.Mode_Gestion = "AME_Base" Or Vente(VenteCodeActe.Index, numligne).Value.ToString = "PHN" Then 'Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "N"
        ElseIf UCase(NatureAssurance_Button.Text) = "SMG" Then
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "L"
        Else
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = ""
        End If
        'médicaments_détournables
        If CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 <> "N" Then
            If Médicaments_Détournables = True Then
                Dim datatable As DataTable = Me.BDM_médicaments_detournablesTableAdapter.GetDataBy_CIP(Vente(VenteEAN13.Index, Nombre_de_Prestations).Value.ToString, Vente(VenteEAN13.Index, Nombre_de_Prestations).Value.ToString)
                If datatable.Rows.Count > 0 Then
                    CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "N"
                End If
            End If
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7, Visu_API, FichierTrace, Nombre_de_Prestations)

        'Champ8 Coefficient
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C8 = "1"

        'Champ9 Quantité
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C9 = "1"

        'Champ10 Dénombrement
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C10 = "1"

        'Champ11
        Dim PrixUnitaire As String
        Dim quantité As Integer
        If tab_Lignes_Vente(numligne).deconditionement Then
            PrixUnitaire = tab_Lignes_Vente(numligne).deconditionement_prix_unitaire * tab_Lignes_Vente(numligne).deconditionement_quantité
        Else
            Dim PUmed As Double = Vente(VentePrix.Index, numligne).Value * 100
            quantité = Vente(VenteQuantité.Index, numligne).Value
            PrixUnitaire = (PUmed * quantité)
            PUmed = Nothing
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, PrixUnitaire, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C11 = PrixUnitaire

        'champ 12
        Dim BaseRemboursement As Integer
        If tab_Lignes_Vente(numligne).deconditionement = True Then
            BaseRemboursement = PrixUnitaire
        Else
            Dim PUmedTFR As Double = Val(Vente(VenteTFRprix.Index, numligne).Value) * 100
            BaseRemboursement = PUmedTFR * quantité
            PUmedTFR = Nothing
            quantité = Nothing
            If BaseRemboursement = 0 And Vente(VenteCodeActe.Index, numligne).Value <> "PHN" Then
                BaseRemboursement = Vente(VenteTotal.Index, numligne).Value * 100
            End If
        End If
        If BaseRemboursement > Vente(VenteTotal.Index, numligne).Value * 100 And tab_Lignes_Vente(numligne).deconditionement = False Then
            BaseRemboursement = Vente(VenteTotal.Index, numligne).Value * 100
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, BaseRemboursement, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C12 = BaseRemboursement

        'champ13
        Dim tauxamo As Integer
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Or CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "N" Then
            tauxamo = 0
        Else
            Select Case NatureAssurance_Button.Text
                Case "MATERNITE", "ACCIDENT DU TRAVAIL", "PREVENTION", "SMG"
                    tauxamo = 100
                Case Else
                    If Vente(VenteType.Index, numligne).Value.ToString = "ALD" Or Vente(VenteType.Index, numligne).Value.ToString = "PREV" Or Vente(VenteType.Index, numligne).Value.ToString = "SP" Then
                        tauxamo = 100
                    Else

                        tauxamo = CalculTauxAMO(Vente(VenteCodeActe.Index, numligne).Value.ToString, CurrentBenéficiaire.G101C10, CodeSituation(Date_Droits_AMO, True))
                    End If
            End Select
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, tauxamo, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C13 = tauxamo
        Vente(VenteAMO.Index, numligne).Value = tauxamo

        'champ 14
        Dim MontantremboursableAMO As Integer
        MontantremboursableAMO = Arrondis(Val(BaseRemboursement) * Val(tauxamo) / 100)
        For i = 0 To CurrentFactureVitale.Forçage_Part_AMO.Length - 1
            If CurrentFactureVitale.Forçage_Part_AMO(i).Num_Acte = Nombre_de_Prestations Then
                MontantremboursableAMO = CurrentFactureVitale.Forçage_Part_AMO(i).Montant
                Exit For
            End If
        Next
        Total_remboursable_par_l_AMO = Total_remboursable_par_l_AMO + MontantremboursableAMO
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            MontantremboursableAMO = 0
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, MontantremboursableAMO, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C14 = MontantremboursableAMO

        'champ 15
        Dim champ15 As String = ""
        If MontantGlobalPriseEnchargeToolStripTextBox.Text <> "" Then
            champ15 = (MontantHonoraires - MontantremboursableAMO).ToString
            If Val(champ15) > CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global_STS Then
                champ15 = CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global_STS.ToString
                CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global_STS = 0
            Else
                CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global_STS = CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global_STS - Val(champ15)
            End If
        Else
            For i = 0 To CurrentFactureVitale.PEC.Montants_Actes.Length - 1
                If CurrentFactureVitale.PEC.Montants_Actes(i).Num_Acte = Nombre_de_Prestations Then
                    champ15 = CurrentFactureVitale.PEC.Montants_Actes(i).Montant.ToString
                End If
            Next
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, champ15, Visu_API, FichierTrace)

        'champ 16
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
    End Sub

    'groupe 1610 LPP STS
    Public Sub groupe1610LPP_STS_regroup(ByVal NumeroSession As UInt16, ByVal numligne As Integer, ByRef Nombre_de_Prestations As Integer, ByRef Total_des_montants_facturés As Double, ByRef Total_remboursable_par_l_AMO As Double, ByRef Total_Théorique_Remboursable_par_AMC As Double, ByRef Total_Remboursable_par_AMC As Double) ', ByRef Occurence1610 As Integer)

        Nombre_de_Prestations = Nombre_de_Prestations + 1

        SGD_AjouterGroupe_Tracé(NumeroSession, 1610, Visu_API, FichierTrace)

        If CurrentFactureVitale.TabLigneFacture.Length - 1 < Nombre_de_Prestations Then
            ReDim Preserve CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations)
        End If

        'Champ1

        Dim NuméroPrestation As String = Nombre_de_Prestations.ToString
        SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C1 = NuméroPrestation

        'Champ2 Date d’exécution
        SGD_AjouterChamp_Tracé(NumeroSession, Format(DateExecution.Value, "yyyyMMdd") + "0000", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C2 = Format(DateExecution.Value, "yyyyMMdd") + "0000"

        'Champ3 Lieu d’exécution 0 pharamcie | 1 domicile patient
        SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C3 = "0"

        'Champ 4 Code prestation
        Dim CodePrestation As String = Vente(VenteCodeActe.Index, numligne).Value.ToString
        SGD_AjouterChamp_Tracé(NumeroSession, CodePrestation, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C4 = CodePrestation

        'Champ 5 CCAM : champ non renseigné
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C5 = ""

        'Champ6 Montant des honoraires (p280/906) + calcul valeur champs suivant 11,12
        Dim MontantHonoraires As Double = 0
        Dim Dénombrement As Integer = 0
        Dim PrixUnitaire As Double = 0
        Dim BaseRemboursement As Double = 0


        For i = 0 To Vente.RowCount - 2

            If Vente(VenteCodeActe.Index, i).Value.ToString = CodePrestation Then
                Dim quantité_lpp As Integer = 1

                MontantHonoraires = MontantHonoraires + Vente(VenteTotal.Index, i).Value * 100
                Dénombrement = Dénombrement + 1
                PrixUnitaire = PrixUnitaire + Vente(VenteTotal.Index, i).Value * 100


                'If Vente(VenteCIP.Index, i).Value IsNot DBNull.Value And Vente(VenteCIP.Index, i).Value IsNot Nothing Then
                '    If Vente(VenteCIP.Index, i).Value.ToString <> "" Then
                '        quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité(Vente(VenteCIP.Index, i).Value.ToString, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
                '    End If
                'ElseIf Vente(VenteEAN13.Index, i).Value IsNot DBNull.Value And Vente(VenteEAN13.Index, i).Value IsNot Nothing Then
                '    If Vente(VenteEAN13.Index, i).Value.ToString <> "" Then
                '        quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", Vente(VenteEAN13.Index, i).Value.ToString, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
                '    End If
                'ElseIf Vente(Ventecab.Index, i).Value IsNot DBNull.Value And Vente(Ventecab.Index, i).Value IsNot Nothing Then
                '    If Vente(Ventecab.Index, i).Value.ToString <> "" Then
                '        quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", Vente(Ventecab.Index, i).Value.ToString, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
                '    End If
                'Else
                '    quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", Vente(VenteDésignation.Index, i).Value.ToString)
                'End If


                quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité(Vente(VenteCIP.Index, i).Value.ToString, Vente(VenteEAN13.Index, i).Value.ToString, _
                                                                           Vente(Ventecab.Index, i).Value.ToString, Vente(Vente_produits.Index, i).Value.ToString)

                BaseRemboursement = BaseRemboursement + (LPPTableAdapter.selectPrixLPPByCode(Vente(VenteLPP.Index, i).Value.ToString, Val(Format(Date_Droits_AMO(), "yyyyMMdd"))) * (Vente(VenteQuantité.Index, i).Value) * quantité_lpp)
            End If

        Next

        Total_des_montants_facturés = Total_des_montants_facturés + MontantHonoraires
        SGD_AjouterChamp_Tracé(NumeroSession, MontantHonoraires.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C6 = MontantHonoraires.ToString

        'Champ7 Qualificatif de la dépense
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CodePrestation = "PHN" Then 'Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            SGD_AjouterChamp_Tracé(NumeroSession, "N", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "N"
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = ""
        End If

        'Champ8 Coefficient
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C8 = "1"

        'Champ9 Quantité
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C9 = "1"

        'Champ10 Dénombrement
        SGD_AjouterChamp_Tracé(NumeroSession, Dénombrement, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C10 = Dénombrement


        'Champ11
        SGD_AjouterChamp_Tracé(NumeroSession, PrixUnitaire.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C11 = PrixUnitaire

        'champ 12
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C12 = "0"
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, BaseRemboursement.ToString, Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C12 = BaseRemboursement
        End If

        'champ13
        Dim tauxamo As Integer
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            tauxamo = 0
        Else
            Select Case NatureAssurance_Button.Text
                Case "MATERNITE", "ACCIDENT DU TRAVAIL", "PREVENTION", "SMG"
                    tauxamo = 100
                Case Else
                    If Vente(VenteType.Index, numligne).Value.ToString = "ALD" Or Vente(VenteType.Index, numligne).Value.ToString = "PREV" Or Vente(VenteType.Index, numligne).Value.ToString = "SP" Then
                        tauxamo = 100
                    Else
                        tauxamo = CalculTauxAMO(Vente(VenteCodeActe.Index, numligne).Value.ToString, CurrentBenéficiaire.G101C10, CodeSituation(Date_Droits_AMO, True))
                    End If
            End Select
        End If

        SGD_AjouterChamp_Tracé(NumeroSession, tauxamo.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C13 = tauxamo
        Vente(VenteAMO.Index, numligne).Value = tauxamo

        'champ 14
        Dim MontantremboursableAMO As Double
        MontantremboursableAMO = Arrondis((BaseRemboursement) * Val(tauxamo) / 100)
        Total_remboursable_par_l_AMO = Total_remboursable_par_l_AMO + MontantremboursableAMO
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            MontantremboursableAMO = 0
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, MontantremboursableAMO.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C14 = MontantremboursableAMO

        'champ 15
        Dim champ15 As String = ""
        For i = 0 To CurrentFactureVitale.PEC.Montants_Actes.Length - 1
            If CurrentFactureVitale.PEC.Montants_Actes(i).Num_Acte = Nombre_de_Prestations Then
                champ15 = CurrentFactureVitale.PEC.Montants_Actes(i).Montant.ToString
            End If
        Next
        SGD_AjouterChamp_Tracé(NumeroSession, champ15, Visu_API, FichierTrace)

        'champ 16
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
    End Sub
    Public Sub groupe1610LPP_STS(ByVal NumeroSession As UInt16, ByVal numligne As Integer, ByRef Nombre_de_Prestations As Integer, ByRef Total_des_montants_facturés As Double, ByRef Total_remboursable_par_l_AMO As Double, ByRef Total_Théorique_Remboursable_par_AMC As Double, ByRef Total_Remboursable_par_AMC As Double) ', ByRef Occurence1610 As Integer)

        Nombre_de_Prestations = Nombre_de_Prestations + 1

        SGD_AjouterGroupe_Tracé(NumeroSession, 1610, Visu_API, FichierTrace)

        If CurrentFactureVitale.TabLigneFacture.Length - 1 < Nombre_de_Prestations Then
            ReDim Preserve CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations)
        End If

        'Champ1

        Dim NuméroPrestation As String = Nombre_de_Prestations.ToString
        SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C1 = NuméroPrestation

        'Champ2 Date d’exécution
        SGD_AjouterChamp_Tracé(NumeroSession, Format(DateExecution.Value, "yyyyMMdd") + "0000", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C2 = Format(DateExecution.Value, "yyyyMMdd") + "0000"

        'Champ3 Lieu d’exécution 0 pharamcie | 1 domicile patient
        SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C3 = "0"

        'Champ 4 Code prestation
        Dim CodePrestation As String = Vente(VenteCodeActe.Index, numligne).Value.ToString
        SGD_AjouterChamp_Tracé(NumeroSession, CodePrestation, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C4 = CodePrestation

        'Champ 5 CCAM : champ non renseigné
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C5 = ""

        'Champ6 Montant des honoraires (p280/906) + calcul valeur champs suivant 11,12
        Dim MontantHonoraires As Double = 0
        Dim PrixUnitaire As Double = 0
        Dim BaseRemboursement As Double = 0


        Dim quantité_lpp As Integer = 1

        MontantHonoraires = Vente(VenteTotal.Index, numligne).Value * 100
        PrixUnitaire = Vente(VenteTotal.Index, numligne).Value * 100
        If Vente(VenteLPP.Index, numligne).Value.ToString <> "" Then
            quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité(Vente(VenteCIP.Index, numligne).Value.ToString, Vente(VenteEAN13.Index, numligne).Value.ToString, _
                                                                               Vente(Ventecab.Index, numligne).Value.ToString, Vente(Vente_produits.Index, numligne).Value.ToString)
            BaseRemboursement = (LPPTableAdapter.selectPrixLPPByCode(Vente(VenteLPP.Index, numligne).Value.ToString, Val(Format(Date_Droits_AMO(), "yyyyMMdd"))) * (Vente(VenteQuantité.Index, numligne).Value) * quantité_lpp)
        Else
            BaseRemboursement = MontantHonoraires 'pas de code lpp, le controel du top codage affiné est effectué dans une fction de controle

        End If
        'If Vente(VentePrix.Index, numligne).Value * 100 < BaseRemboursement Then
        'BaseRemboursement = Vente(VentePrix.Index, numligne).Value * 100
        If MontantHonoraires < BaseRemboursement Then
            BaseRemboursement = MontantHonoraires
        End If
        Total_des_montants_facturés = Total_des_montants_facturés + MontantHonoraires
        SGD_AjouterChamp_Tracé(NumeroSession, MontantHonoraires, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C6 = MontantHonoraires.ToString

        'Champ7 Qualificatif de la dépense
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CodePrestation = "PHN" Then 'Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            SGD_AjouterChamp_Tracé(NumeroSession, "N", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "N"
        ElseIf UCase(NatureAssurance_Button.Text) = "SMG" Then
            SGD_AjouterChamp_Tracé(NumeroSession, "L", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "L"
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = ""
        End If

        'Champ8 Coefficient
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C8 = "1"

        'Champ9 Quantité
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C9 = "1"

        'Champ10 Dénombrement
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C10 = "1"


        'Champ11
        SGD_AjouterChamp_Tracé(NumeroSession, PrixUnitaire, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C11 = PrixUnitaire

        'champ 12
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C12 = "0"
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, BaseRemboursement, Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C12 = BaseRemboursement
        End If

        'champ13
        Dim tauxamo As Integer
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            tauxamo = 0
        Else
            Select Case NatureAssurance_Button.Text
                Case "MATERNITE", "ACCIDENT DU TRAVAIL", "PREVENTION", "SMG"
                    tauxamo = 100
                Case Else
                    If Vente(VenteType.Index, numligne).Value.ToString = "ALD" Or Vente(VenteType.Index, numligne).Value.ToString = "PREV" Or Vente(VenteType.Index, numligne).Value.ToString = "SP" Then
                        tauxamo = 100
                    Else
                        tauxamo = CalculTauxAMO(Vente(VenteCodeActe.Index, numligne).Value.ToString, CurrentBenéficiaire.G101C10, CodeSituation(Date_Droits_AMO, True))
                    End If
            End Select
        End If

        SGD_AjouterChamp_Tracé(NumeroSession, tauxamo, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C13 = tauxamo
        Vente(VenteAMO.Index, numligne).Value = tauxamo

        'champ 14
        Dim MontantremboursableAMO As Double
        MontantremboursableAMO = Arrondis((BaseRemboursement) * Val(tauxamo) / 100)
        For i = 0 To CurrentFactureVitale.Forçage_Part_AMO.Length - 1
            If CurrentFactureVitale.Forçage_Part_AMO(i).Num_Acte = Nombre_de_Prestations Then
                MontantremboursableAMO = CurrentFactureVitale.Forçage_Part_AMO(i).Montant
                Exit For
            End If
        Next
        Total_remboursable_par_l_AMO = Total_remboursable_par_l_AMO + MontantremboursableAMO
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            MontantremboursableAMO = 0
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, MontantremboursableAMO, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C14 = MontantremboursableAMO

        'champ 15
        Dim champ15 As String = ""
        If MontantGlobalPriseEnchargeToolStripTextBox.Text <> "" Then
            champ15 = (MontantHonoraires - MontantremboursableAMO).ToString
            If Val(champ15) > CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global_STS Then
                champ15 = CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global_STS.ToString
                CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global_STS = 0
            Else
                CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global_STS = CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global_STS - Val(champ15)
            End If
        Else
            For i = 0 To CurrentFactureVitale.PEC.Montants_Actes.Length - 1
                If CurrentFactureVitale.PEC.Montants_Actes(i).Num_Acte = Nombre_de_Prestations Then
                    champ15 = CurrentFactureVitale.PEC.Montants_Actes(i).Montant.ToString
                End If
            Next
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, champ15, Visu_API, FichierTrace)

        'champ 16
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
    End Sub

    'groupe 1610 Médicaments
    Public Sub groupe1610Médicaments(ByVal NumeroSession As UInt16, ByVal numligne As Integer, ByRef Nombre_de_Prestations As Integer, ByRef Total_des_montants_facturés As Double, ByRef Total_remboursable_par_l_AMO As Double, ByRef Total_Théorique_Remboursable_par_AMC As Double, ByRef Total_Remboursable_par_AMC As Double)
        Nombre_de_Prestations = Nombre_de_Prestations + 1

        SGD_AjouterGroupe_Tracé(NumeroSession, 1610, Visu_API, FichierTrace)

        If CurrentFactureVitale.TabLigneFacture.Length - 1 < Nombre_de_Prestations Then
            ReDim Preserve CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations)
        End If


        'Champ1
        Dim NuméroPrestation As String = Nombre_de_Prestations.ToString
        SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C1 = NuméroPrestation

        'Champ2 Date d’exécution
        SGD_AjouterChamp_Tracé(NumeroSession, Format(DateExecution.Value, "yyyyMMdd") + "0000", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C2 = Format(DateExecution.Value, "yyyyMMdd") + "0000"

        'Champ3 Lieu d’exécution 0 pharmacie | 1 domicile patient
        SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C3 = "0"

        'Champ 4 Code prestation
        SGD_AjouterChamp_Tracé(NumeroSession, Vente(VenteCodeActe.Index, numligne).Value, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C4 = Vente(VenteCodeActe.Index, numligne).Value.ToString

        'Champ 5 CCAM : champ non renseigné
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C5 = ""

        'Champ6 Montant des honoraires
        Dim MontantHonoraires As Double = 0
        If tab_Lignes_Vente(numligne).deconditionement Then
            MontantHonoraires = tab_Lignes_Vente(numligne).deconditionement_prix_unitaire * tab_Lignes_Vente(numligne).deconditionement_quantité
        Else
            If UCase(NatureAssurance_Button.Text) <> "SMG" Then
                MontantHonoraires = Vente(VenteTotal.Index, numligne).Value * 100
            Else
                MontantHonoraires = SMG.montant_facturé_par_acte(numligne)
            End If
        End If
        Total_des_montants_facturés = Total_des_montants_facturés + MontantHonoraires
        SGD_AjouterChamp_Tracé(NumeroSession, MontantHonoraires, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C6 = MontantHonoraires.ToString


        'Champ7 Qualificatif de la dépense*
        If Me.CodePrestationsTableAdapter.GetDataBy_CodeActe(Vente(VenteCodeActe.Index, numligne).Value.ToString).Item(0).CompatibleTable1 = False Then
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "N"
        ElseIf CurrentFactureVitale.Mode_Gestion = "AME_Base" Or Vente(VenteCodeActe.Index, numligne).Value.ToString = "PHN" Then 'Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" _
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "N"
        ElseIf UCase(NatureAssurance_Button.Text) = "SMG" Then
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "L"
        Else
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = ""
        End If
        'médicaments_détournables
        If CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 <> "N" Then
            If Médicaments_Détournables = True Then
                Dim datatable As DataTable = Me.BDM_médicaments_detournablesTableAdapter.GetDataBy_CIP(Vente(VenteEAN13.Index, Nombre_de_Prestations - 1).Value.ToString, Vente(VenteCIP.Index, Nombre_de_Prestations - 1).Value.ToString)
                If datatable.Rows.Count > 0 Then
                    CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "N"
                End If
            End If
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7, Visu_API, FichierTrace, Nombre_de_Prestations)

        'Champ8 Coefficient
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C8 = "1"

        'Champ9 Quantité
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C9 = "1"

        'Champ10 Dénombrement
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C10 = "1"

        'Champ11 Prix unitaire
        Dim PrixUnitaire As String
        Dim quantité As Integer
        If tab_Lignes_Vente(numligne).deconditionement Then
            PrixUnitaire = tab_Lignes_Vente(numligne).deconditionement_prix_unitaire * tab_Lignes_Vente(numligne).deconditionement_quantité
        Else
            quantité = Vente(VenteQuantité.Index, numligne).Value
            If UCase(NatureAssurance_Button.Text) <> "SMG" Then
                Dim PUmed As Double = Vente(VentePrix.Index, numligne).Value * 100
                PrixUnitaire = (PUmed * quantité)
                PUmed = Nothing
            Else
                'If Me.CodePrestationsTableAdapter.SelectTypeNomenclatureByCodeActe(Vente(VenteCodeActe.Index, numligne).Value.ToString) = "Frais PH" Then
                '    PrixUnitaire = Val(Vente(VenteTFRprix.Index, numligne).Value) * 100 * Vente(VenteQuantité.Index, numligne).Value
                'Else
                PrixUnitaire = Vente(VenteTotal.Index, numligne).Value * 100
                'End If
            End If
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, PrixUnitaire, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C11 = PrixUnitaire

        'champ 12 Base de remboursement
        Dim BaseRemboursement As Integer
        If tab_Lignes_Vente(numligne).deconditionement = True Then
            BaseRemboursement = PrixUnitaire
        Else
            If UCase(NatureAssurance_Button.Text) <> "SMG" Then
                Dim PUmedTFR As Double = Val(Vente(VenteTFRprix.Index, numligne).Value) * 100
                BaseRemboursement = PUmedTFR * quantité
                PUmedTFR = Nothing
                quantité = Nothing
                If BaseRemboursement = 0 And Vente(VenteCodeActe.Index, numligne).Value <> "PHN" Then
                    BaseRemboursement = Vente(VenteTotal.Index, numligne).Value * 100
                End If
            Else
                If Me.CodePrestationsTableAdapter.SelectTypeNomenclatureByCodeActe(Vente(VenteCodeActe.Index, numligne).Value.ToString) = "Frais PH" Then
                    Dim PUmedTFR As Double = Val(Vente(VenteTFRprix.Index, numligne).Value) * 100
                    BaseRemboursement = PUmedTFR * quantité
                    PUmedTFR = Nothing
                    quantité = Nothing
                    If BaseRemboursement = 0 Then
                        BaseRemboursement = Vente(VenteTotal.Index, numligne).Value * 100
                    End If
                Else
                    BaseRemboursement = 0
                End If
            End If

        End If
        If BaseRemboursement > Vente(VenteTotal.Index, numligne).Value * 100 And tab_Lignes_Vente(numligne).deconditionement = False Then
            BaseRemboursement = Vente(VenteTotal.Index, numligne).Value * 100
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, BaseRemboursement, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C12 = BaseRemboursement

        'champ13 Taux applicable à la prestation
        Dim tauxamo As Integer
        If CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "N" Then
            tauxamo = 0
        Else
            Select Case NatureAssurance_Button.Text
                Case "MATERNITE", "ACCIDENT DU TRAVAIL", "PREVENTION", "SMG"
                    tauxamo = 100
                Case Else
                    If Vente(VenteType.Index, numligne).Value.ToString = "ALD" Or Vente(VenteType.Index, numligne).Value.ToString = "PREV" Or Vente(VenteType.Index, numligne).Value.ToString = "SP" Then
                        tauxamo = 100
                    Else
                        tauxamo = CalculTauxAMO(Vente(VenteCodeActe.Index, numligne).Value.ToString, CurrentBenéficiaire.G101C10, CodeSituation(Date_Droits_AMO, True))
                    End If
            End Select
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, tauxamo, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C13 = tauxamo
        Vente(VenteAMO.Index, numligne).Value = tauxamo

        'champ 14 Montant remboursable par l’AMO
        Dim MontantremboursableAMO As Integer
        If UCase(NatureAssurance_Button.Text) <> "SMG" Then
            MontantremboursableAMO = Arrondis(Val(BaseRemboursement) * Val(tauxamo) / 100)
            For i = 0 To CurrentFactureVitale.Forçage_Part_AMO.Length - 1
                If CurrentFactureVitale.Forçage_Part_AMO(i).Num_Acte = Nombre_de_Prestations Then
                    MontantremboursableAMO = CurrentFactureVitale.Forçage_Part_AMO(i).Montant
                    Exit For
                End If
            Next
            Total_remboursable_par_l_AMO = Total_remboursable_par_l_AMO + MontantremboursableAMO
            'If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            '    MontantremboursableAMO = 0
            'End If
        Else
            MontantremboursableAMO = SMG.part_amo_par_acte(numligne)
            Total_remboursable_par_l_AMO = Total_remboursable_par_l_AMO + MontantremboursableAMO
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, MontantremboursableAMO, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C14 = MontantremboursableAMO

        'champ 15
        Dim MontantremboursableAMC As Integer = 0
        If CheckBox_Facturation_AMC.Checked = True Or CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            Dim tauxAMC As Integer = CalculTauxAMC(Vente(VenteCodeActe.Index, numligne).Value.ToString, CurrentBenéficiaire.AMC_TypeContrat)
            MontantremboursableAMC = Arrondis((BaseRemboursement * tauxAMC / 100) - MontantremboursableAMO)
            If MontantremboursableAMC > 0 Then
                If MontantremboursableAMC > BaseRemboursement - MontantremboursableAMO Then
                    MontantremboursableAMC = BaseRemboursement - MontantremboursableAMO
                End If
            Else
                MontantremboursableAMC = 0
            End If
            '-------------------------
            'PEC
            If MontantGlobalPriseEnchargeToolStripTextBox.Text <> "" Then
                MontantremboursableAMC = MontantHonoraires - MontantremboursableAMO
                If MontantremboursableAMC > CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global Then
                    MontantremboursableAMC = CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global
                    CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global = 0
                Else
                    CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global = CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global - MontantremboursableAMC
                End If
                CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G2010C2 = "1"
            Else
                For i = 0 To CurrentFactureVitale.PEC.Montants_Actes.Length - 1
                    If CurrentFactureVitale.PEC.Montants_Actes(i).Num_Acte = Nombre_de_Prestations Then
                        MontantremboursableAMC = CurrentFactureVitale.PEC.Montants_Actes(i).Montant.ToString
                        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G2010C2 = "1"
                    End If
                Next
            End If
            '-------------------------
            SGD_AjouterChamp_Tracé(NumeroSession, MontantremboursableAMC, Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C15 = MontantremboursableAMC
            Total_Théorique_Remboursable_par_AMC = Total_Théorique_Remboursable_par_AMC + MontantremboursableAMC
            Total_Remboursable_par_AMC = Total_Remboursable_par_AMC + MontantremboursableAMC
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C15 = 0
        End If

        'champ 16
        Dim Reste As Integer
        If MontantremboursableAMC > 0 Then
            Reste = BaseRemboursement - MontantremboursableAMO - MontantremboursableAMC
        Else
            Reste = BaseRemboursement - MontantremboursableAMO
        End If
        If Reste < 0 Then
            Reste = 0
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, Reste, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C16 = Reste
        FI118_nombre_enregistrements_types_4 = FI118_nombre_enregistrements_types_4 + 3
    End Sub

    'groupe 1610 LPP
    Public Sub groupe1610LPP_regroup(ByVal NumeroSession As UInt16, ByVal numligne As Integer, ByRef Nombre_de_Prestations As Integer, ByRef Total_des_montants_facturés As Double, ByRef Total_remboursable_par_l_AMO As Double, ByRef Total_Théorique_Remboursable_par_AMC As Double, ByRef Total_Remboursable_par_AMC As Double)
        Nombre_de_Prestations = Nombre_de_Prestations + 1

        SGD_AjouterGroupe_Tracé(NumeroSession, 1610, Visu_API, FichierTrace)

        If CurrentFactureVitale.TabLigneFacture.Length - 1 < Nombre_de_Prestations Then
            ReDim Preserve CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations)
        End If

        'Champ1
        Dim NuméroPrestation As String = Nombre_de_Prestations.ToString
        SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C1 = NuméroPrestation

        'Champ2 Date d’exécution
        SGD_AjouterChamp_Tracé(NumeroSession, Format(DateExecution.Value, "yyyyMMdd") + "0000", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C2 = Format(DateExecution.Value, "yyyyMMdd") + "0000"

        'Champ3 Lieu d’exécution 0 pharamcie | 1 domicile patient
        SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C3 = "0"

        'Champ 4 Code prestation
        Dim CodePrestation As String = Vente(VenteCodeActe.Index, numligne).Value.ToString
        SGD_AjouterChamp_Tracé(NumeroSession, CodePrestation, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C4 = CodePrestation

        'Champ 5 CCAM : champ non renseigné
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C5 = ""

        'Champ6 Montant des honoraires (p280/906) + calcul valeur champs suivant 11,12
        Dim MontantHonoraires As Double = 0
        Dim Dénombrement As Integer = 0
        Dim PrixUnitaire As Double = 0
        Dim BaseRemboursement As Double = 0


        For i = 0 To Vente.RowCount - 2

            If Vente(VenteCodeActe.Index, i).Value.ToString = CodePrestation Then
                Dim quantité_lpp As Integer = 1

                MontantHonoraires = MontantHonoraires + Vente(VenteTotal.Index, i).Value * 100
                Dénombrement = Dénombrement + 1
                PrixUnitaire = PrixUnitaire + Vente(VenteTotal.Index, i).Value * 100
                quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité(Vente(VenteCIP.Index, i).Value.ToString, Vente(VenteEAN13.Index, i).Value.ToString, _
                                                                           Vente(Ventecab.Index, i).Value.ToString, Vente(Vente_produits.Index, i).Value.ToString)
                BaseRemboursement = BaseRemboursement + (LPPTableAdapter.selectPrixLPPByCode(Vente(VenteLPP.Index, i).Value.ToString, Val(Format(Date_Droits_AMO(), "yyyyMMdd"))) * (Vente(VenteQuantité.Index, i).Value) * quantité_lpp)
            End If

        Next

        Total_des_montants_facturés = Total_des_montants_facturés + MontantHonoraires
        SGD_AjouterChamp_Tracé(NumeroSession, MontantHonoraires.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C6 = MontantHonoraires.ToString

        'Champ7 Qualificatif de la dépense
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CodePrestation = "PHN" Then 'Or CurrentFactureVitale.Mode_Gestion = "AME_Compl"
            SGD_AjouterChamp_Tracé(NumeroSession, "N", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "N"
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = ""
        End If

        'Champ8 Coefficient
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C8 = "1"

        'Champ9 Quantité
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C9 = "1"

        'Champ10 Dénombrement
        SGD_AjouterChamp_Tracé(NumeroSession, Dénombrement, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C10 = Dénombrement


        'Champ11
        SGD_AjouterChamp_Tracé(NumeroSession, PrixUnitaire.ToString, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C11 = PrixUnitaire

        'champ 12
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C12 = "0"
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, BaseRemboursement.ToString, Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C12 = BaseRemboursement
        End If
        'champ13
        Dim tauxamo As Integer
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            tauxamo = 0
        Else
            Select Case NatureAssurance_Button.Text
                Case "MATERNITE", "ACCIDENT DU TRAVAIL", "PREVENTION", "SMG"
                    tauxamo = 100
                Case Else
                    If Vente(VenteType.Index, numligne).Value.ToString = "ALD" Or Vente(VenteType.Index, numligne).Value.ToString = "PREV" Or Vente(VenteType.Index, numligne).Value.ToString = "SP" Then
                        tauxamo = 100
                    Else
                        tauxamo = CalculTauxAMO(Vente(VenteCodeActe.Index, numligne).Value.ToString, CurrentBenéficiaire.G101C10, CodeSituation(Date_Droits_AMO, True))
                    End If
            End Select
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, tauxamo.ToString, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C13 = tauxamo
        Vente(VenteAMO.Index, numligne).Value = tauxamo

        'champ 14
        Dim MontantremboursableAMO As Double
        MontantremboursableAMO = Arrondis((BaseRemboursement) * Val(tauxamo) / 100)
        Total_remboursable_par_l_AMO = Total_remboursable_par_l_AMO + MontantremboursableAMO
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            MontantremboursableAMO = 0
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, MontantremboursableAMO.ToString, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C14 = MontantremboursableAMO

        'champ 15
        Dim MontantremboursableAMC As Integer = 0
        'If CurrentFactureVitale.TP_AMC = True Then
        If CheckBox_Facturation_AMC.Checked = True Or CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            Dim tauxAMC As Integer = CalculTauxAMC(Vente(VenteCodeActe.Index, numligne).Value.ToString, CurrentBenéficiaire.AMC_TypeContrat)
            MontantremboursableAMC = Arrondis((BaseRemboursement * tauxAMC / 100) - MontantremboursableAMO)
            If MontantremboursableAMC > 0 Then
                If MontantremboursableAMC > BaseRemboursement - MontantremboursableAMO Then
                    MontantremboursableAMC = BaseRemboursement - MontantremboursableAMO
                End If
                SGD_AjouterChamp_Tracé(NumeroSession, MontantremboursableAMC.ToString, Visu_API, FichierTrace, Nombre_de_Prestations)
                CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C15 = MontantremboursableAMC
                Total_Théorique_Remboursable_par_AMC = Total_Théorique_Remboursable_par_AMC + MontantremboursableAMC
                Total_Remboursable_par_AMC = Total_Remboursable_par_AMC + MontantremboursableAMC
            Else
                MontantremboursableAMC = 0
                SGD_AjouterChamp_Tracé(NumeroSession, MontantremboursableAMC, Visu_API, FichierTrace, Nombre_de_Prestations)
                CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C15 = 0
            End If
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C15 = 0
        End If
        'champ 16
        Dim Reste As Integer
        If MontantremboursableAMC > 0 Then
            Reste = BaseRemboursement - MontantremboursableAMO - MontantremboursableAMC
        Else
            Reste = BaseRemboursement - MontantremboursableAMO
        End If
        If Reste < 0 Then
            Reste = 0
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, Reste.ToString, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C16 = Reste
        FI118_nombre_enregistrements_types_4 = FI118_nombre_enregistrements_types_4 + 3
    End Sub
    Public Sub groupe1610LPP(ByVal NumeroSession As UInt16, ByVal numligne As Integer, ByRef Nombre_de_Prestations As Integer, ByRef Total_des_montants_facturés As Double, ByRef Total_remboursable_par_l_AMO As Double, ByRef Total_Théorique_Remboursable_par_AMC As Double, ByRef Total_Remboursable_par_AMC As Double)
        Nombre_de_Prestations = Nombre_de_Prestations + 1

        SGD_AjouterGroupe_Tracé(NumeroSession, 1610, Visu_API, FichierTrace)

        If CurrentFactureVitale.TabLigneFacture.Length - 1 < Nombre_de_Prestations Then
            ReDim Preserve CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations)
        End If

        'Champ1
        Dim NuméroPrestation As String = Nombre_de_Prestations.ToString
        SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C1 = NuméroPrestation

        'Champ2 Date d’exécution
        SGD_AjouterChamp_Tracé(NumeroSession, Format(DateExecution.Value, "yyyyMMdd") + "0000", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C2 = Format(DateExecution.Value, "yyyyMMdd") + "0000"

        'Champ3 Lieu d’exécution 0 pharamcie | 1 domicile patient
        SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C3 = "0"

        'Champ 4 Code prestation
        Dim CodePrestation As String = Vente(VenteCodeActe.Index, numligne).Value.ToString
        SGD_AjouterChamp_Tracé(NumeroSession, CodePrestation, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C4 = CodePrestation

        'Champ 5 CCAM : champ non renseigné
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C5 = ""

        'Champ6 Montant des honoraires (p280/906) + calcul valeur champs suivant 11,12
        Dim MontantHonoraires As Double = 0
        Dim PrixUnitaire As Double = 0
        Dim BaseRemboursement As Double = 0

        Dim quantité_lpp As Integer = 1
        MontantHonoraires = Vente(VenteTotal.Index, numligne).Value * 100
        PrixUnitaire = Vente(VenteTotal.Index, numligne).Value * 100
        If Vente(VenteLPP.Index, numligne).Value.ToString <> "" Then
            quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité(Vente(VenteCIP.Index, numligne).Value.ToString, Vente(VenteEAN13.Index, numligne).Value.ToString, _
                                                                               Vente(Ventecab.Index, numligne).Value.ToString, Vente(Vente_produits.Index, numligne).Value.ToString)
            BaseRemboursement = (LPPTableAdapter.selectPrixLPPByCode(Vente(VenteLPP.Index, numligne).Value.ToString, Val(Format(Date_Droits_AMO(), "yyyyMMdd"))) * (Vente(VenteQuantité.Index, numligne).Value) * quantité_lpp)
        Else
            BaseRemboursement = MontantHonoraires 'pas de code lpp, le controel du top codage affiné est effectué dans une fction de controle

        End If
        'If Vente(VentePrix.Index, numligne).Value * 100 < BaseRemboursement Then
        'BaseRemboursement = Vente(VentePrix.Index, numligne).Value * 100
        If MontantHonoraires < BaseRemboursement Then
            BaseRemboursement = MontantHonoraires
        End If
        If UCase(NatureAssurance_Button.Text) = "SMG" Then
            MontantHonoraires = SMG.montant_facturé_par_acte(numligne)
            PrixUnitaire = BaseRemboursement
        End If
        Total_des_montants_facturés = Total_des_montants_facturés + MontantHonoraires
        SGD_AjouterChamp_Tracé(NumeroSession, MontantHonoraires, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C6 = MontantHonoraires.ToString

        'Champ7 Qualificatif de la dépense
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CodePrestation = "PHN" Then 'Or CurrentFactureVitale.Mode_Gestion = "AME_Compl"
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "N"
        ElseIf UCase(NatureAssurance_Button.Text) = "SMG" Then
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = "L"
        Else
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7 = ""
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C7, Visu_API, FichierTrace, Nombre_de_Prestations)

        'Champ8 Coefficient
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C8 = "1"

        'Champ9 Quantité
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C9 = "1"

        'Champ10 Dénombrement
        SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C10 = "1"


        'Champ11 Prix unitaire
        SGD_AjouterChamp_Tracé(NumeroSession, PrixUnitaire, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C11 = PrixUnitaire

        'champ 12 Base de remboursement
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C12 = "0"
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, BaseRemboursement, Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C12 = BaseRemboursement
        End If
        'champ13 Taux applicable à la prestation
        Dim tauxamo As Integer
        Select Case NatureAssurance_Button.Text
            Case "MATERNITE", "ACCIDENT DU TRAVAIL", "PREVENTION", "SMG"
                tauxamo = 100
            Case Else
                If Vente(VenteType.Index, numligne).Value.ToString = "ALD" Or Vente(VenteType.Index, numligne).Value.ToString = "PREV" Or Vente(VenteType.Index, numligne).Value.ToString = "SP" Then
                    tauxamo = 100
                Else
                    tauxamo = CalculTauxAMO(Vente(VenteCodeActe.Index, numligne).Value.ToString, CurrentBenéficiaire.G101C10, CodeSituation(Date_Droits_AMO, True))
                End If
        End Select
        SGD_AjouterChamp_Tracé(NumeroSession, tauxamo, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C13 = tauxamo
        Vente(VenteAMO.Index, numligne).Value = tauxamo

        'champ 14 Montant remboursable par l’AMO
        Dim MontantremboursableAMO As Double
        If UCase(NatureAssurance_Button.Text) <> "SMG" Then
            MontantremboursableAMO = Arrondis((BaseRemboursement) * Val(tauxamo) / 100)
            For i = 0 To CurrentFactureVitale.Forçage_Part_AMO.Length - 1
                If CurrentFactureVitale.Forçage_Part_AMO(i).Num_Acte = Nombre_de_Prestations Then
                    MontantremboursableAMO = CurrentFactureVitale.Forçage_Part_AMO(i).Montant
                    Exit For
                End If
            Next
            Total_remboursable_par_l_AMO = Total_remboursable_par_l_AMO + MontantremboursableAMO
        Else
            MontantremboursableAMO = SMG.part_amo_par_acte(numligne)
            Total_remboursable_par_l_AMO = Total_remboursable_par_l_AMO + MontantremboursableAMO
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, MontantremboursableAMO, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C14 = MontantremboursableAMO


        'champ 15 Montant théorique remboursable de la part complémentaire
        Dim MontantremboursableAMC As Integer = 0
        If CheckBox_Facturation_AMC.Checked = True Or CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            Dim tauxAMC As Integer = CalculTauxAMC(Vente(VenteCodeActe.Index, numligne).Value.ToString, CurrentBenéficiaire.AMC_TypeContrat)
            MontantremboursableAMC = Arrondis((BaseRemboursement * tauxAMC / 100) - MontantremboursableAMO)
            If MontantremboursableAMC > 0 Then
                If MontantremboursableAMC > BaseRemboursement - MontantremboursableAMO Then
                    MontantremboursableAMC = BaseRemboursement - MontantremboursableAMO
                End If
            Else
                MontantremboursableAMC = 0
            End If
            '------------------------
            'PEC
            If MontantGlobalPriseEnchargeToolStripTextBox.Text <> "" Then
                MontantremboursableAMC = MontantHonoraires - MontantremboursableAMO
                If MontantremboursableAMC > CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global Then
                    MontantremboursableAMC = CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global
                    CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global = 0
                Else
                    CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global = CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global - MontantremboursableAMC
                End If
                CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G2010C2 = "1"
            Else
                For i = 0 To CurrentFactureVitale.PEC.Montants_Actes.Length - 1
                    If CurrentFactureVitale.PEC.Montants_Actes(i).Num_Acte = Nombre_de_Prestations Then
                        MontantremboursableAMC = CurrentFactureVitale.PEC.Montants_Actes(i).Montant.ToString
                        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G2010C2 = "1"
                    End If
                Next
            End If
            '------------------------
            SGD_AjouterChamp_Tracé(NumeroSession, MontantremboursableAMC, Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C15 = MontantremboursableAMC
            Total_Théorique_Remboursable_par_AMC = Total_Théorique_Remboursable_par_AMC + MontantremboursableAMC
            Total_Remboursable_par_AMC = Total_Remboursable_par_AMC + MontantremboursableAMC
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace, Nombre_de_Prestations)
            CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C15 = 0
        End If
        'champ 16 Montant de la majoration du Ticket Modérateur restant à la charge de l’assuré
        Dim Reste As Integer
        If MontantremboursableAMC > 0 Then
            Reste = BaseRemboursement - MontantremboursableAMO - MontantremboursableAMC
        Else
            Reste = BaseRemboursement - MontantremboursableAMO
        End If
        If Reste < 0 Then
            Reste = 0
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, Reste, Visu_API, FichierTrace, Nombre_de_Prestations)
        CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C16 = Reste
        FI118_nombre_enregistrements_types_4 = FI118_nombre_enregistrements_types_4 + 3
    End Sub

    'Groupe 1730 : Prestation détaillée LPP
    Public Sub groupe1730_regroup(ByVal NumeroSession As UInt16, ByVal NuméroPrestation As String, ByVal ligne As Integer, ByRef Occurence1730 As Integer)
        'groupe 1730
        SGD_AjouterGroupe_Tracé(NumeroSession, "1730", Visu_API, FichierTrace)
        Occurence1730 = Occurence1730 + 1
        ReDim Preserve CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730)

        'champ 1
        SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C1 = NuméroPrestation

        'champ 2
        SGD_AjouterChamp_Tracé(NumeroSession, Vente(VenteLPP.Index, ligne).Value.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C2 = Vente(VenteLPP.Index, ligne).Value.ToString

        'champ 3,4,5,6 type de prestation
        Dim LPP_Type_Service As String = ""
        LPP_Type_Service = Me.ProduitsTableAdapter.Select_LPP_Type_Service(Vente(VenteCIP.Index, ligne).Value.ToString, Vente(VenteEAN13.Index, ligne).Value.ToString, _
                                                                           Vente(Ventecab.Index, ligne).Value.ToString, Vente(Vente_produits.Index, ligne).Value.ToString)

        Select Case LPP_Type_Service
            Case "L", "S" 'Location Service
                SGD_AjouterChamp_Tracé(NumeroSession, LPP_Type_Service, Visu_API, FichierTrace) 'champ 3
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C3 = LPP_Type_Service
                SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace) 'champ 4
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C4 = ""
                Lpp_Location_Date.ShowDialog() 'ce formulaire donne les valeurs à location_lpp_date_debut et location_lpp_date_fin
                SGD_AjouterChamp_Tracé(NumeroSession, location_lpp_date_debut, Visu_API, FichierTrace) 'champ 5
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C5 = location_lpp_date_debut
                SGD_AjouterChamp_Tracé(NumeroSession, location_lpp_date_fin, Visu_API, FichierTrace)  'champ 6
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C6 = location_lpp_date_fin

            Case ""
                MsgBox("Type service LPP non renseigné, corrigez base produits", MsgBoxStyle.Critical)

                'CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C3 = InputBox("TypeService LPP", vbQuestion)
                'SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C3, Visu_API, FichierTrace) 'champ 3
                'SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace) 'champ 4
                'CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C4 = ""
                'SGD_AjouterChamp_Tracé(NumeroSession, Format(Now, "yyyyMMdd") + "0000", Visu_API, FichierTrace) 'champ 5
                'CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C5 = Format(Now, "yyyyMMdd") + "0000"
                'SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)  'champ 6
                'CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C6 = ""


            Case Else
                SGD_AjouterChamp_Tracé(NumeroSession, LPP_Type_Service, Visu_API, FichierTrace) 'champ 3
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C3 = LPP_Type_Service
                SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace) 'champ 4
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C4 = ""
                SGD_AjouterChamp_Tracé(NumeroSession, Format(DateExecution.Value, "yyyyMMdd") + "0000", Visu_API, FichierTrace) 'champ 5
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C5 = Format(DateExecution.Value, "yyyyMMdd") + "0000"
                SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace) 'champ 6
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C6 = ""
        End Select

        'champ 7
        Dim tariflpp As String
        tariflpp = LPPTableAdapter.selectPrixLPPByCode(Vente(VenteLPP.Index, ligne).Value.ToString, Val(Format(Date_Droits_AMO(), "yyyyMMdd")))
        SGD_AjouterChamp_Tracé(NumeroSession, tariflpp, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C7 = tariflpp

        'champ 8
        Dim quantité_lpp As Integer = 1
        'If Vente(VenteCIP.Index, ligne).Value IsNot DBNull.Value And Vente(VenteCIP.Index, ligne).Value IsNot Nothing Then
        '    If Vente(VenteCIP.Index, ligne).Value.ToString <> "" Then
        '        quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité(Vente(VenteCIP.Index, ligne).Value.ToString, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
        '    End If
        'ElseIf Vente(VenteEAN13.Index, ligne).Value IsNot DBNull.Value And Vente(VenteEAN13.Index, ligne).Value IsNot Nothing Then
        '    If Vente(VenteEAN13.Index, ligne).Value.ToString <> "" Then
        '        quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", Vente(VenteEAN13.Index, ligne).Value.ToString, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
        '    End If
        'ElseIf Vente(Ventecab.Index, ligne).Value IsNot DBNull.Value And Vente(Ventecab.Index, ligne).Value IsNot Nothing Then
        '    If Vente(Ventecab.Index, ligne).Value.ToString <> "" Then
        '        quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", Vente(Ventecab.Index, ligne).Value.ToString, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
        '    End If
        'Else
        '    quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", Vente(VenteDésignation.Index, ligne).Value.ToString)
        'End If

        quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité(Vente(VenteCIP.Index, ligne).Value.ToString, Vente(VenteEAN13.Index, ligne).Value.ToString, _
                                                                   Vente(Ventecab.Index, ligne).Value.ToString, Vente(Vente_produits.Index, ligne).Value.ToString)

        Dim NombreDunités As String = (Vente(VenteQuantité.Index, ligne).Value * quantité_lpp).ToString
        SGD_AjouterChamp_Tracé(NumeroSession, NombreDunités, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C8 = NombreDunités

        'champ 9
        Dim PrixUnitairePublic As String
        PrixUnitairePublic = (Vente(VentePrix.Index, ligne).Value * 100).ToString
        SGD_AjouterChamp_Tracé(NumeroSession, PrixUnitairePublic, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C9 = PrixUnitairePublic
        PrixUnitairePublic = Nothing

        'champ 10
        Dim MontantTotalLPP As String
        MontantTotalLPP = (Val(tariflpp) * Val(NombreDunités)).ToString
        SGD_AjouterChamp_Tracé(NumeroSession, MontantTotalLPP, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C10 = MontantTotalLPP
        MontantTotalLPP = Nothing
        tariflpp = Nothing
        NombreDunités = Nothing

        'champ11
        Dim MontantTotalFacturéTTC As String
        MontantTotalFacturéTTC = (Vente(VenteTotal.Index, ligne).Value * 100).ToString
        SGD_AjouterChamp_Tracé(NumeroSession, MontantTotalFacturéTTC, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C11 = MontantTotalFacturéTTC
        MontantTotalFacturéTTC = Nothing
        FI118_nombre_enregistrements_types_4 = FI118_nombre_enregistrements_types_4 + 1
    End Sub
    Public Sub groupe1730(ByVal NumeroSession As UInt16, ByVal NuméroPrestation As String, ByVal ligne As Integer)
        'groupe 1730
        SGD_AjouterGroupe_Tracé(NumeroSession, "1730", Visu_API, FichierTrace)
        ReDim Preserve CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(1)

        'champ 1
        SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C1 = NuméroPrestation

        'champ 2
        SGD_AjouterChamp_Tracé(NumeroSession, Vente(VenteLPP.Index, ligne).Value.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C2 = Vente(VenteLPP.Index, ligne).Value.ToString

        'champ 3,4,5,6 type de prestation
        Dim LPP_Type_Service As String = ""
        LPP_Type_Service = Me.ProduitsTableAdapter.Select_LPP_Type_Service(Vente(VenteCIP.Index, ligne).Value.ToString, Vente(VenteEAN13.Index, ligne).Value.ToString, _
                                                                           Vente(Ventecab.Index, ligne).Value.ToString, Vente(Vente_produits.Index, ligne).Value.ToString)

        Select Case LPP_Type_Service
            Case "L", "S" 'Location
                SGD_AjouterChamp_Tracé(NumeroSession, LPP_Type_Service, Visu_API, FichierTrace) 'champ 3
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C3 = LPP_Type_Service
                SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace) 'champ 4
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C4 = ""
                Dim Lpp_Location_Date As New Lpp_Location_Date
                Lpp_Location_Date.Désignation = Vente(VenteDésignation.Index, ligne).Value.ToString
                Lpp_Location_Date.ShowDialog() 'ce formulaire donne les valeurs à location_lpp_date_debut et location_lpp_date_fin
                SGD_AjouterChamp_Tracé(NumeroSession, location_lpp_date_debut, Visu_API, FichierTrace) 'champ 5
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C5 = location_lpp_date_debut
                SGD_AjouterChamp_Tracé(NumeroSession, location_lpp_date_fin, Visu_API, FichierTrace)  'champ 6
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C6 = location_lpp_date_fin

            Case ""
                MsgBox("Type service LPP non renseigné, corrigez base produits", MsgBoxStyle.Critical)

                'CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C3 = InputBox("TypeService LPP", vbQuestion)
                'SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C3, Visu_API, FichierTrace) 'champ 3
                'SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace) 'champ 4
                'CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C4 = ""
                'SGD_AjouterChamp_Tracé(NumeroSession, Format(Now, "yyyyMMdd") + "0000", Visu_API, FichierTrace) 'champ 5
                'CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C5 = Format(Now, "yyyyMMdd") + "0000"
                'SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)  'champ 6
                'CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(Occurence1730 - 1).G1730C6 = ""


            Case Else
                SGD_AjouterChamp_Tracé(NumeroSession, LPP_Type_Service, Visu_API, FichierTrace) 'champ 3
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C3 = LPP_Type_Service
                SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace) 'champ 4
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C4 = ""
                SGD_AjouterChamp_Tracé(NumeroSession, Format(DateExecution.Value, "yyyyMMdd") + "0000", Visu_API, FichierTrace) 'champ 5
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C5 = Format(DateExecution.Value, "yyyyMMdd") + "0000"
                SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace) 'champ 6
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C6 = ""
        End Select

        'champ 7
        Dim tariflpp As String
        tariflpp = LPPTableAdapter.selectPrixLPPByCode(Vente(VenteLPP.Index, ligne).Value.ToString, Val(Format(Date_Droits_AMO(), "yyyyMMdd")))
        SGD_AjouterChamp_Tracé(NumeroSession, tariflpp, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C7 = tariflpp

        'champ 8
        Dim quantité_lpp As Integer = 1
        'If Vente(VenteCIP.Index, ligne).Value IsNot DBNull.Value And Vente(VenteCIP.Index, ligne).Value IsNot Nothing Then
        '    If Vente(VenteCIP.Index, ligne).Value.ToString <> "" Then
        '        quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité(Vente(VenteCIP.Index, ligne).Value.ToString, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
        '    End If
        'ElseIf Vente(VenteEAN13.Index, ligne).Value IsNot DBNull.Value And Vente(VenteEAN13.Index, ligne).Value IsNot Nothing Then
        '    If Vente(VenteEAN13.Index, ligne).Value.ToString <> "" Then
        '        quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", Vente(VenteEAN13.Index, ligne).Value.ToString, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
        '    End If
        'ElseIf Vente(Ventecab.Index, ligne).Value IsNot DBNull.Value And Vente(Ventecab.Index, ligne).Value IsNot Nothing Then
        '    If Vente(Ventecab.Index, ligne).Value.ToString <> "" Then
        '        quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", Vente(Ventecab.Index, ligne).Value.ToString, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
        '    End If
        'Else
        '    quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", Vente(VenteDésignation.Index, ligne).Value.ToString)
        'End If

        quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité(Vente(VenteCIP.Index, ligne).Value.ToString, Vente(VenteEAN13.Index, ligne).Value.ToString, _
                                                                   Vente(Ventecab.Index, ligne).Value.ToString, Vente(Vente_produits.Index, ligne).Value.ToString)

        Dim NombreDunités As String = (Vente(VenteQuantité.Index, ligne).Value * quantité_lpp).ToString
        SGD_AjouterChamp_Tracé(NumeroSession, NombreDunités, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C8 = NombreDunités

        'champ 9
        Dim PrixUnitairePublic As String
        PrixUnitairePublic = (Vente(VentePrix.Index, ligne).Value * 100).ToString
        SGD_AjouterChamp_Tracé(NumeroSession, PrixUnitairePublic, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C9 = PrixUnitairePublic
        PrixUnitairePublic = Nothing

        'champ 10
        Dim MontantTotalLPP As String
        MontantTotalLPP = (Val(tariflpp) * Val(NombreDunités)).ToString
        SGD_AjouterChamp_Tracé(NumeroSession, MontantTotalLPP, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C10 = MontantTotalLPP
        MontantTotalLPP = Nothing
        tariflpp = Nothing
        NombreDunités = Nothing

        'champ11
        Dim MontantTotalFacturéTTC As String
        MontantTotalFacturéTTC = (Vente(VenteTotal.Index, ligne).Value * 100).ToString
        SGD_AjouterChamp_Tracé(NumeroSession, MontantTotalFacturéTTC, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(0).G1730C11 = MontantTotalFacturéTTC
        MontantTotalFacturéTTC = Nothing
        FI118_nombre_enregistrements_types_4 = FI118_nombre_enregistrements_types_4 + 1
    End Sub
    'Groupe 1740 : Prestation détaillée code CIP
    Public Sub groupe1740(ByVal NumeroSession As UInt16, ByVal NuméroPrestation As String, ByVal lignevente As Integer) ', ByVal Occurence1610 As Integer)
        If Vente.Item(VenteEAN13.Index, lignevente).Value Is DBNull.Value Or Vente.Item(VenteEAN13.Index, lignevente).Value Is Nothing Then
            Vente(VenteEAN13.Index, lignevente).Value = ""
        End If
        If Vente.Item(VenteCIP.Index, lignevente).Value Is DBNull.Value Or Vente.Item(VenteCIP.Index, lignevente).Value Is Nothing Then
            Vente(VenteCIP.Index, lignevente).Value = ""
        End If
        If Vente(VenteEAN13.Index, lignevente).Value.ToString = "" And Vente(VenteCIP.Index, lignevente).Value.ToString = "" Then
            Exit Sub
        End If

        SGD_AjouterGroupe_Tracé(NumeroSession, "1740", Visu_API, FichierTrace)

        'champ 1
        SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C1 = NuméroPrestation

        'champs 2,3
        If Vente(VenteEAN13.Index, lignevente).Value.ToString = "" Then 'type de code CIP
            'Code CIP du médicament allopathique sur 7 caractères
            If Val(Vente(VenteCIP.Index, lignevente).Value) < 2000000 Or (Val(Vente(VenteCIP.Index, lignevente).Value) >= 8000000 And Val(Vente(VenteCIP.Index, lignevente).Value) < 8500000) Then 'homéopathie
                SGD_AjouterChamp_Tracé(NumeroSession, "6", Visu_API, FichierTrace)
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C2 = "6"
                SGD_AjouterChamp_Tracé(NumeroSession, Vente(VenteCIP.Index, lignevente).Value.ToString, Visu_API, FichierTrace)
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C3 = Vente(VenteCIP.Index, lignevente).Value.ToString
            Else
                SGD_AjouterChamp_Tracé(NumeroSession, "A", Visu_API, FichierTrace)
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C2 = "A"
                SGD_AjouterChamp_Tracé(NumeroSession, Vente(VenteCIP.Index, lignevente).Value.ToString, Visu_API, FichierTrace)
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C3 = Vente(VenteCIP.Index, lignevente).Value.ToString
            End If
        Else 'type de code CIP
            'Code CIP du médicament sur 13 caractères
            SGD_AjouterChamp_Tracé(NumeroSession, "B", Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C2 = "B"
            SGD_AjouterChamp_Tracé(NumeroSession, Vente(VenteEAN13.Index, lignevente).Value.ToString, Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C3 = Vente(VenteEAN13.Index, lignevente).Value.ToString
        End If 'type de code CIP

            'champ4
            If tab_Lignes_Vente(lignevente).deconditionement Then
                SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace)
                CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C4 = "0"
            Else
                'Dim PUmed As String = (Vente(VentePrix.Index, lignevente).Value * 100).ToString
                Dim PUmed As String = (Vente(VenteTFRprix.Index, lignevente).Value * 100).ToString
            If InStr(PUmed, ",") <> 0 Then
                PUmed = Mid(PUmed, 1, InStr(PUmed, ",") - 1)
            End If
            SGD_AjouterChamp_Tracé(NumeroSession, PUmed, Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C4 = PUmed
                PUmed = Nothing
        End If

        'champ 5
        If tab_Lignes_Vente(lignevente).deconditionement = True Then
            SGD_AjouterChamp_Tracé(NumeroSession, tab_Lignes_Vente(lignevente).deconditionement_NmbreBoites, Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C5 = tab_Lignes_Vente(lignevente).deconditionement_NmbreBoites
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, (Vente(VenteQuantité.Index, lignevente).Value).ToString, Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C5 = (Vente(VenteQuantité.Index, lignevente).Value).ToString
        End If

        'champ 6
        SGD_AjouterChamp_Tracé(NumeroSession, Vente(VenteTFRtype.Index, lignevente).Value.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C6 = Vente(VenteTFRtype.Index, lignevente).Value.ToString

        'champ 7 Indicateur de substitution
        If CurrentFactureVitale.G1740C7.Length > NuméroPrestation Then
            SGD_AjouterChamp_Tracé(NumeroSession, Mid(CurrentFactureVitale.G1740C7(NuméroPrestation), 1, 1), Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C7 = Mid(CurrentFactureVitale.G1740C7(NuméroPrestation), 1, 1)
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C7 = ""
        End If

        'champ 8 Top déconditionnement
        If tab_Lignes_Vente(lignevente).deconditionement = True Then
            SGD_AjouterChamp_Tracé(NumeroSession, "D", Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C8 = "D"
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, " ", Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C8 = ""
        End If

        'champ 9 Quantité d’unités délivrées dans le cadre du déconditionnement
        If tab_Lignes_Vente(lignevente).deconditionement = True Then
            SGD_AjouterChamp_Tracé(NumeroSession, tab_Lignes_Vente(lignevente).deconditionement_quantité, Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C9 = tab_Lignes_Vente(lignevente).deconditionement_quantité
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C9 = ""
        End If

        'champ 10 Prix unitaire de l’unité délivrée dans le cadre du déconditionnement
        If tab_Lignes_Vente(lignevente).deconditionement = True Then
            SGD_AjouterChamp_Tracé(NumeroSession, tab_Lignes_Vente(lignevente).deconditionement_prix_unitaire, Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C10 = tab_Lignes_Vente(lignevente).deconditionement_prix_unitaire
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C10 = ""
        End If

        'champ 11 Nombre de conditionnements utilisés dans le cadre du déconditionnement
        If tab_Lignes_Vente(lignevente).deconditionement = True Then
            SGD_AjouterChamp_Tracé(NumeroSession, tab_Lignes_Vente(lignevente).deconditionement_NmbreBoites, Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C11 = tab_Lignes_Vente(lignevente).deconditionement_NmbreBoites.ToString
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C11 = ""
        End If

        'champ 12
        SGD_AjouterChamp_Tracé(NumeroSession, " ", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C12 = ""

        'champ 13
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C13 = ""

        'champ 14
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C14 = ""

        'champ15
        SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailCodeCIP.G1740C15 = ""
        FI118_nombre_enregistrements_types_4 = FI118_nombre_enregistrements_types_4 + 1
    End Sub

    'Groupe 1741 : Prestation détaillée lot d’un code CIP
    Public Sub groupe1741(ByVal NumeroSession As UInt16, ByVal NuméroPrestation As String)
        For i = 0 To CurrentFactureVitale.G1741.Length - 1
            If CurrentFactureVitale.G1741(i).G1741C1 = NuméroPrestation Then
                'groupe 1741
                SGD_AjouterGroupe_Tracé(NumeroSession, "1741", Visu_API, FichierTrace)
                ReDim Preserve CurrentFactureVitale.TabLigneFacture(NuméroPrestation).DétailLpp(1)

                'champs
                SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1741(i).G1741C1, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1741(i).G1741C2, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1741(i).G1741C3, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1741(i).G1741C4, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1741(i).G1741C5, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1741(i).G1741C6, Visu_API, FichierTrace)

            End If
        Next
    End Sub

    'Groupe 1820 : Complément de prestation Exonération du Ticket Modérateur 'p291/906
    Public Sub groupe1820(ByVal NumeroSession As UInt16, ByVal NuméroPrestation As String, ByVal VenteType As String)
        If NatureAssurance_Button.Text = "MALADIE" Then

            SGD_AjouterGroupe_Tracé(NumeroSession, 1820, Visu_API, FichierTrace)

            'champ 1
            SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace)

            'champ 2
            Dim CodeJustifExo As String = "0"
            If CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C4 = "PHN" Then
                CodeJustifExo = "0"

            ElseIf VenteType = "PREV" Then
                CodeJustifExo = "7"

            ElseIf VenteType = "ALD" Then
                CodeJustifExo = "4"


            ElseIf TauxSNCF = True Then ' And MédecinSNCF = True Then
                CodeJustifExo = "6"

            Else
                Select Case CodeSituation(Date_Droits_AMO(), True)
                    'pas d’exonération
                    Case "0100", "0105", "0108", "0200", "0205", "0225", "0300", "0301", "0400", "0401", "0402", "0403", "0408", "0411", "0414", "0500", "1000", "1600", "9000", "9020", "9021", "9022", "9023", "9024"
                        CodeJustifExo = "0"
                        'assuré ou bénéficiaire exonéré
                    Case "0101", "0102", "0103", "0106", "0107", "0109", "0110", "0201", "0202", "0203", "0206", "0207", "0302", "0303", "0404", "0405", "0406", "0407", "0412", "0413", "0415", "0501", "0502", "0503", "1001", "1002", "1003", "1601", "1602", "1603", "9001", "9002", "9003"
                        CodeJustifExo = "5"
                        'exonération régimes spéciaux
                    Case "0700"
                        CodeJustifExo = "6"
                        'FSV
                    Case "0104", "0204", "0304", "0409", "0410", "0504", "1004", "9004"
                        CodeJustifExo = "9"
                    Case "0226", "0227"
                        If MsgBox("En rapport avec un accident?", 36) = MsgBoxResult.Yes Then
                            CodeJustifExo = "0"
                        Else
                            CodeJustifExo = "5"
                        End If
                End Select
            End If
            If VenteType = "SP" Then
                CodeJustifExo = "3"
            End If

            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).G1820C2 = CodeJustifExo
            SGD_AjouterChamp_Tracé(NumeroSession, CodeJustifExo, Visu_API, FichierTrace)

        ElseIf NatureAssurance_Button.Text = "MATERNITE" Or NatureAssurance_Button.Text = "ACCIDENT DU TRAVAIL" Then
            SGD_AjouterGroupe_Tracé(NumeroSession, 1820, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).G1820C2 = "0"

        ElseIf NatureAssurance_Button.Text = "SMG" Then
            SGD_AjouterGroupe_Tracé(NumeroSession, 1820, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).G1820C2 = "0"
        End If 'If NatureAssuranceComboBox.Text = "MALADIE" Then

    End Sub

    'Groupe 1840 : Complément de prestation Entente préalable
    Public Sub groupe1840(ByVal NumeroSession As UInt16, ByVal NuméroPrestation As String)
        If GrouperLPPToolStripMenuItem.Checked = False Then
            For i = 0 To CurrentFactureVitale.G1840.Length - 1
                If Val(CurrentFactureVitale.G1840(i).G1840C1) = Val(NuméroPrestation) And CurrentFactureVitale.G1840(i).G1840C2 <> "" Then
                    SGD_AjouterGroupe_Tracé(NumeroSession, 1840, Visu_API, FichierTrace)
                    SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1840(i).G1840C1, Visu_API, FichierTrace)
                    SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1840(i).G1840C2, Visu_API, FichierTrace)
                    SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.G1840(i).G1840C3, Visu_API, FichierTrace)
                    SGD_AjouterChamp_Tracé(NumeroSession, "", Visu_API, FichierTrace)
                    Exit For
                End If
            Next
        Else

        End If
    End Sub

    'Groupe 1850 : Complément de prestation Renouvellement
    Public Sub groupe1850(ByVal NumeroSession As UInt16, ByVal NuméroPrestation As String, ByVal Renouvellement As String)
        SGD_AjouterGroupe_Tracé(NumeroSession, 1850, Visu_API, FichierTrace)

        'champ 1
        SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace)

        'champ 2
        While Renouvellement.Length < 2
            Renouvellement = "0" & Renouvellement
        End While
        SGD_AjouterChamp_Tracé(NumeroSession, Renouvellement, Visu_API, FichierTrace)
        CurrentFactureVitale.TabLigneFacture(NuméroPrestation).G1850C2 = Renouvellement

    End Sub

    'Groupe 1910 : Total Facture
    Public Sub groupe1910_STS(ByVal NumeroSession As UInt16, ByVal Nombre_de_prestations As Integer, ByVal Total_des_montants_facturés As Double, ByVal Total_remboursable_par_l_AMO As Double, ByRef Total_Théorique_Remboursable_par_AMC As Double, ByRef Total_Remboursable_par_AMC As Double)
        SGD_AjouterGroupe_Tracé(NumeroSession, 1910, Visu_API, FichierTrace)

        'champ 1
        SGD_AjouterChamp_Tracé(NumeroSession, Nombre_de_prestations.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.G1910C1 = Nombre_de_prestations

        'champ 2
        SGD_AjouterChamp_Tracé(NumeroSession, Total_des_montants_facturés.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.G1910C2 = Total_des_montants_facturés

        'champ 3
        SGD_AjouterChamp_Tracé(NumeroSession, Total_remboursable_par_l_AMO.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.G1910C3 = Total_remboursable_par_l_AMO

        'champ 4
        Dim Total_participation_assuré As Integer
        Total_participation_assuré = Total_des_montants_facturés - Total_remboursable_par_l_AMO
        If Total_participation_assuré < 0 Then
            MsgBox("les montants remboursés sont supérieurs aux montants facturés." + Chr(10) + "le prix de vente d'un produit lpp doit être inférieur à son remboursement.", MsgBoxStyle.Critical)
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, Total_participation_assuré.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.G1910C4 = Total_participation_assuré

        'champ 5
        If CurrentFactureVitale.PEC.MontantGlobal > 0 Then
            SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.PEC.MontantGlobal.ToString, Visu_API, FichierTrace)
            CurrentFactureVitale.G1910C5 = CurrentFactureVitale.PEC.MontantGlobal.ToString
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, Total_Théorique_Remboursable_par_AMC, Visu_API, FichierTrace)
            CurrentFactureVitale.G1910C5 = Total_Théorique_Remboursable_par_AMC
        End If

        'champ 6
        If CurrentFactureVitale.PEC.MontantGlobal > 0 Then
            SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.PEC.MontantGlobal.ToString, Visu_API, FichierTrace)
            CurrentFactureVitale.G1910C5 = CurrentFactureVitale.PEC.MontantGlobal.ToString
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, Total_Remboursable_par_AMC, Visu_API, FichierTrace)
            CurrentFactureVitale.G1910C6 = Total_Remboursable_par_AMC
        End If

    End Sub

    Public Function groupe1910(ByVal NumeroSession As UInt16, ByVal Nombre_de_prestations As Integer, ByVal Total_des_montants_facturés As Double, ByVal Total_remboursable_par_l_AMO As Double, ByRef Total_Théorique_Remboursable_par_AMC As Double, ByRef Total_Remboursable_par_AMC As Double) As Boolean
        SGD_AjouterGroupe_Tracé(NumeroSession, 1910, Visu_API, FichierTrace)

        'champ 1 Nombre de prestations
        SGD_AjouterChamp_Tracé(NumeroSession, Nombre_de_prestations.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.G1910C1 = Nombre_de_prestations

        'champ 2 Total des montants facturés
        If NatureAssurance_Button.Text <> "SMG" Then
            SGD_AjouterChamp_Tracé(NumeroSession, Total_des_montants_facturés.ToString, Visu_API, FichierTrace)
            CurrentFactureVitale.G1910C2 = Total_des_montants_facturés
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, SMG.total_facture, Visu_API, FichierTrace)
            CurrentFactureVitale.G1910C2 = SMG.total_facture
        End If


        'champ 3 Total remboursable par l’AMO
        SGD_AjouterChamp_Tracé(NumeroSession, Total_remboursable_par_l_AMO.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.G1910C3 = Total_remboursable_par_l_AMO

        'champ 4 Total participation assuré
        Dim Total_participation_assuré As Integer
        If NatureAssurance_Button.Text <> "SMG" Then
            Total_participation_assuré = Total_des_montants_facturés - Total_remboursable_par_l_AMO
        Else
            Total_participation_assuré = SMG.total_facture - Total_remboursable_par_l_AMO
        End If
        If Total_participation_assuré < 0 Then
            MsgBox("les montants remboursés sont supérieurs aux montants facturés.", MsgBoxStyle.Critical)
        End If
        SGD_AjouterChamp_Tracé(NumeroSession, Total_participation_assuré.ToString, Visu_API, FichierTrace)
        CurrentFactureVitale.G1910C4 = Total_participation_assuré

        'champ 5 Total théorique remboursable de la part complémentaire
        SGD_AjouterChamp_Tracé(NumeroSession, Total_Théorique_Remboursable_par_AMC, Visu_API, FichierTrace)
        CurrentFactureVitale.G1910C5 = Total_Théorique_Remboursable_par_AMC

        'champ 6 Total remboursable de la part complémentaire
        SGD_AjouterChamp_Tracé(NumeroSession, Total_Remboursable_par_AMC, Visu_API, FichierTrace)
        CurrentFactureVitale.G1910C6 = Total_Remboursable_par_AMC

        'verif total complémentaire
        Dim total_compl As Integer = 0
        For i = 0 To CurrentFactureVitale.TabLigneFacture.Length - 1
            total_compl = total_compl + CurrentFactureVitale.TabLigneFacture(i).G1610C15
        Next
        If total_compl <> CurrentFactureVitale.G1910C5 Then
            If MsgBox("La valeur pour le Total théorique remboursable de la part complémentaire est différent de la somme des montants pour chaque actes." + Chr(10) + _
                              "Continuer la facturation?", 36) = MsgBoxResult.No Then
                Return False
            End If
        End If
        If total_compl <> CurrentFactureVitale.G1910C6 Then
            If MsgBox("La valeur pour le Total remboursable de la part complémentaire est différent de la somme des montants pour chaque actes." + Chr(10) + _
                              "Continuer la facturation?", 36) = MsgBoxResult.No Then
                Return False
            End If
        End If
        Return True
    End Function

    'Groupe 2000 : Forçage AMO niveau acte
    Public Sub groupe2000(ByVal NumeroSession As UInt16, ByVal NuméroPrestation As Integer, ByVal CodeActe As String)
        '3.3 Principes de forçage au regard de la tarification AMO (forçages niveau acte)
        Dim indicateur As String = ""
        Dim mydatatable As DataTable = Me.CodePrestationsTableAdapter.GetDataBy_CodeActe(CodeActe)
        Dim CompatiblePharmaindex, CompatibleTable1index As Integer
        For c = 0 To mydatatable.Columns.Count - 1
            Select Case mydatatable.Columns.Item(c).ColumnName
                Case "CompatiblePharma"
                    CompatiblePharmaindex = c
                Case "CompatibleTable1"
                    CompatibleTable1index = c

            End Select
        Next

        If mydatatable(0).Item(CompatiblePharmaindex) = False Then
            indicateur = "C"
        End If

        If mydatatable(0).Item(CompatibleTable1index) = False Then
            indicateur = "A"
        End If

        For i = 0 To CurrentFactureVitale.Forçage_Part_AMO.Length - 1
            If CurrentFactureVitale.Forçage_Part_AMO(i).Num_Acte = Nombre_de_Prestations Then
                indicateur = "5"
                Exit For
            End If
        Next

        If indicateur <> "" Then
            SGD_AjouterGroupe_Tracé(NumeroSession, 2000, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation.ToString, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NumeroSession, indicateur, Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).G2000C2 = indicateur
        End If
    End Sub

    'Groupe 2010 : Forçage AMC niveau acte
    Public Sub groupe2010(ByVal NumeroSession As UInt16, ByVal num_prestation As Integer)
        'Dim ecrit_groupe As Boolean = False
        If CheckBox_Facturation_AMC.Checked = False And CurrentFactureVitale.Mode_Gestion <> "AME_Base" And CurrentFactureVitale.Mode_Gestion <> "AME_Compl" Then
            Exit Sub
        End If

        If Config.STS_Activer = False Or (CurrentConvention.selected = True And CurrentConvention.indic_desactivation_STS = "1") Then
            CurrentFactureVitale.TabLigneFacture(num_prestation).G2010C2 = "1"
            'MsgBox("A")
            'ecrit_groupe = True
        End If


        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            CurrentFactureVitale.TabLigneFacture(num_prestation).G2010C2 = "1"
        End If
        'For i = 0 To Tab_Valeur_STS.Length - 1
        '    If Tab_Valeur_STS(i).groupe = "2010" And Tab_Valeur_STS(i).occurence = num_prestation And Tab_Valeur_STS(i).valeur <> "" Then
        '        MsgBox("B")
        '        'ecrit_groupe = True
        '    End If
        'Next

        'If ecrit_groupe = True Then
        SGD_AjouterGroupe_Tracé(NumeroSession, 2010, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NumeroSession, num_prestation.ToString, Visu_API, FichierTrace, num_prestation)
        SGD_AjouterChamp_Tracé(NumeroSession, CurrentFactureVitale.TabLigneFacture(num_prestation).G2010C2, Visu_API, FichierTrace, num_prestation)
        ' End If
    End Sub

    'Groupe 2030 : Prévention commune AMO/AMC
    Public Sub groupe2030(ByVal NumeroSession As UInt16, ByVal NuméroPrestation As String)
        If PreventioncommuneAMOAMCToolStripMenuItem.Checked = True Then
            SGD_AjouterGroupe_Tracé(NumeroSession, 2030, Visu_API, FichierTrace)
            'champ 1 N° de la prestation (de rattachement)
            SGD_AjouterChamp_Tracé(NumeroSession, NuméroPrestation, Visu_API, FichierTrace)
            'champ 2 Top prévention commune AMO/AMC
            SGD_AjouterChamp_Tracé(NumeroSession, ToppréventioncommuneAMOAMCToolStripTextBox.Text, Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).G2030C2 = ToppréventioncommuneAMOAMCToolStripTextBox.Text
            'champ 3 Qualifiant du dispositif de prévention
            SGD_AjouterChamp_Tracé(NumeroSession, QualifiantdispositifpreventionToolStripTextBox.Text, Visu_API, FichierTrace)
            CurrentFactureVitale.TabLigneFacture(NuméroPrestation).G2030C3 = QualifiantdispositifpreventionToolStripTextBox.Text
        End If
    End Sub

    'Groupe 3700 : Contexte de tarification
    Public Sub groupe3700(ByVal NumeroSession As Integer, ByVal TopMédecinRéférent As Boolean)
        SGD_AjouterGroupe_Tracé(NumeroSession, 3700, Visu_API, FichierTrace)

        ' SGD_AjouterChamp_Tracé(NumeroSession, Me.AMC_Contrat_TypeTableAdapter.GetDataById(CurrentBenéficiaire.AMC_TypeContrat).Item(0).Top_CMU.ToString(), Visu_API, FichierTrace)
        If CurrentFactureVitale.TOP_CMU = True Then
            SGD_AjouterChamp_Tracé(NumeroSession, "1", Visu_API, FichierTrace)
            CurrentFactureVitale.G3700C1 = "1"
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, "0", Visu_API, FichierTrace)
            CurrentFactureVitale.G3700C1 = "0"
        End If

        If TopMédecinRéférent = True Then
            SGD_AjouterChamp_Tracé(NumeroSession, "O", Visu_API, FichierTrace)
            CurrentFactureVitale.G3700C1 = "O"
        Else
            SGD_AjouterChamp_Tracé(NumeroSession, "N", Visu_API, FichierTrace)
            CurrentFactureVitale.G3700C1 = "N"
        End If
    End Sub

    'Groupe 3730 : Paramètres de calcul STS
    Public Sub groupe3730(ByVal NumeroSession As Integer, ByVal PMSS As String)
        SGD_AjouterGroupe_Tracé(NumeroSession, 3730, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NumeroSession, PMSS, Visu_API, FichierTrace)
        CurrentFactureVitale.G3730C1 = PMSS
    End Sub
    ''Groupe 1120 : Identification Professionnel de Santé 
    'Public Sub groupe1120(ByVal NumeroSession As UInt16)

    '    If ModeSecur = "4" Then
    '        SGD_AjouterGroupe(NumeroSession, 1120)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1120")

    '        Dim ConfigXml As New XmlDocument
    '        ConfigXml.Load("InfoPro.xml")
    '        Dim XMLelementliste As XmlNodeList
    '        XMLelementliste = ConfigXml.GetElementsByTagName("Desync")

    '        'champ 1
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("G2C9").InnerText)
    '        CurrentFactureVitale.G1120C1 = XMLelementliste.Item(0).Item("G2C9").InnerText
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + XMLelementliste.Item(0).Item("G2C9").InnerText, "")
    '        'champ 2
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("G2C10").InnerText)
    '        CurrentFactureVitale.G1120C2 = XMLelementliste.Item(0).Item("G2C10").InnerText
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + XMLelementliste.Item(0).Item("G2C10").InnerText, "")
    '        'champ 3
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("G1C6").InnerText)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + XMLelementliste.Item(0).Item("G1C6").InnerText, "")
    '        'champ 4
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("G1C7").InnerText)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + XMLelementliste.Item(0).Item("G1C7").InnerText, "")
    '        'champ 5
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("G2C13").InnerText)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + XMLelementliste.Item(0).Item("G2C13").InnerText, "")
    '        'champ 6
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("G2C14").InnerText)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 6:" + XMLelementliste.Item(0).Item("G2C14").InnerText, "")
    '        'champ 7
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("G2C15").InnerText)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 7:" + XMLelementliste.Item(0).Item("G2C15").InnerText, "")
    '        'champ 8
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("G2C16").InnerText)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 8:" + XMLelementliste.Item(0).Item("G2C16").InnerText, "")
    '        'champ 9
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("G2C17").InnerText)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 9:" + XMLelementliste.Item(0).Item("G2C17").InnerText, "")
    '        'champ 10(champ prévu pour une utilisation future)
    '        SGD_AjouterChamp(NumeroSession, "")
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 10:" + "", "")
    '        'champ 11(champ prévu pour une utilisation future)
    '        SGD_AjouterChamp(NumeroSession, "")
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 11:" + "", "")
    '        'champ 12
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("ConditionDexercice").InnerText)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 12:" + XMLelementliste.Item(0).Item("ConditionDexercice").InnerText, "")
    '        'champ 13
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("G1C3").InnerText)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 13:" + XMLelementliste.Item(0).Item("G1C3").InnerText, "")
    '        'champ 14
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("G1C4").InnerText)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 14:" + XMLelementliste.Item(0).Item("G1C4").InnerText, "")

    '    Else

    '        SGD_AjouterGroupe(NumeroSession, 1120)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1120")
    '        'champ 1
    '        ValeurChamp = "@@@@@@@@"
    '        TailleMax = 8
    '        SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 9, ValeurChamp, TailleMax)
    '        SGD_AjouterChamp(NumeroSession, ValeurChamp)
    '        CurrentFactureVitale.G1120C1 = ValeurChamp
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + ValeurChamp, "")
    '        'champ 2
    '        ValeurChamp = "@"
    '        TailleMax = 1
    '        SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 10, ValeurChamp, TailleMax)
    '        SGD_AjouterChamp(NumeroSession, ValeurChamp)
    '        CurrentFactureVitale.G1120C2 = ValeurChamp
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + ValeurChamp, "")
    '        'champ 3
    '        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@"
    '        TailleMax = 27
    '        SGD_LireChamp(NumeroSessionCPS, 1, 1, 6, ValeurChamp, TailleMax)
    '        SGD_AjouterChamp(NumeroSession, Mid(ValeurChamp, 1, TailleMax))
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + Mid(ValeurChamp, 1, TailleMax), "")
    '        'champ 4
    '        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@"
    '        TailleMax = 27
    '        SGD_LireChamp(NumeroSessionCPS, 1, 1, 7, ValeurChamp, TailleMax)
    '        SGD_AjouterChamp(NumeroSession, Mid(ValeurChamp, 1, TailleMax))
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + Mid(ValeurChamp, 1, TailleMax), "")
    '        'champ 5
    '        ValeurChamp = "@"
    '        TailleMax = 1
    '        SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 13, ValeurChamp, TailleMax)
    '        SGD_AjouterChamp(NumeroSession, ValeurChamp)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + ValeurChamp, "")

    '        'champ 6
    '        ValeurChamp = "@@"
    '        TailleMax = 2
    '        SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 14, ValeurChamp, TailleMax)
    '        SGD_AjouterChamp(NumeroSession, ValeurChamp)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 6:" + ValeurChamp, "")

    '        'champ 7
    '        ValeurChamp = "@@"
    '        TailleMax = 2
    '        SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 15, ValeurChamp, TailleMax)
    '        SGD_AjouterChamp(NumeroSession, ValeurChamp)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 7:" + ValeurChamp, "")

    '        'champ 8
    '        ValeurChamp = "@@"
    '        TailleMax = 2
    '        SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 16, ValeurChamp, TailleMax)
    '        SGD_AjouterChamp(NumeroSession, ValeurChamp)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 8:" + ValeurChamp, "")

    '        'champ 9
    '        ValeurChamp = "@"
    '        TailleMax = 1
    '        SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 17, ValeurChamp, TailleMax)
    '        SGD_AjouterChamp(NumeroSession, ValeurChamp)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 9:" + ValeurChamp, "")

    '        'champ 10(champ prévu pour une utilisation future)
    '        SGD_AjouterChamp(NumeroSession, "")

    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 10:" + "", "")
    '        'champ 11(champ prévu pour une utilisation future)
    '        SGD_AjouterChamp(NumeroSession, "")
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 11:" + "", "")

    '        'champ 12
    '        Dim ModeExercice As String = "@@"
    '        SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 2, ModeExercice, TailleMax)
    '        ModeExercice = Mid(ModeExercice, 1, TailleMax)
    '        Select Case ModeExercice
    '            Case "00", "0" 'Libéral, exploitant, commerçant
    '                SGD_AjouterChamp(NumeroSession, "L")
    '                If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 12:" + "L", "")
    '            Case "01", "1" 'Salarié
    '                SGD_AjouterChamp(NumeroSession, "S")
    '                If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 12:" + "S", "")
    '            Case "04", "4" 'Remplaçant
    '                SGD_AjouterChamp(NumeroSession, "L")
    '                If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 12:" + "L", "")
    '            Case "07", "7" 'Bénévole
    '                SGD_AjouterChamp(NumeroSession, "B")
    '                If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 12:" + "B", "")
    '        End Select

    '        'champ 13, 14
    '        ValeurChamp = "@@"
    '        SGD_LireChamp(NumeroSessionCPS, 1, 1, 1, ValeurChamp, 2)
    '        If ValeurChamp = "0" Or ValeurChamp = "00" Then 'Carte du Professionnel de Santé (CPS)
    '            ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
    '            TailleMax = 30
    '            SGD_LireChamp(NumeroSessionCPS, 1, 1, 3, ValeurChamp, TailleMax)
    '            If TailleMax > 10 Then
    '                ValeurChamp = Mid(ValeurChamp, 1, 10)
    '            Else
    '                ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
    '                While ValeurChamp.Length < 10
    '                    ValeurChamp = "0" & ValeurChamp
    '                End While
    '            End If
    '            If InStr(ValeurChamp, "@") = 0 Then
    '                SGD_AjouterChamp(NumeroSession, ValeurChamp)
    '                If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 13:" + ValeurChamp, "")
    '            Else
    '                SGD_AjouterChamp(NumeroSession, "")
    '                If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 13:" + "", "")
    '            End If


    '            'champ 14
    '            ValeurChamp = "@"
    '            TailleMax = 1
    '            SGD_LireChamp(NumeroSessionCPS, 1, 1, 4, ValeurChamp, TailleMax)
    '            If ValeurChamp <> "@" Then
    '                SGD_AjouterChamp(NumeroSession, ValeurChamp)
    '                If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 14:" + ValeurChamp, "")
    '            Else
    '                SGD_AjouterChamp(NumeroSession, "")
    '                If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 14:" + "", "")
    '            End If

    '        Else 'CPF ou CPE
    '            SGD_AjouterChamp(NumeroSession, "")
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 13:" + "", "")
    '            SGD_AjouterChamp(NumeroSession, "")
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 14:" + "", "")
    '        End If
    '    End If
    'End Sub

    ''Groupe 1130 : Identification du bénéficiaire 
    'Public Sub groupe1130(ByVal NumeroSession As UInt16)
    '    SGD_AjouterGroupe(NumeroSession, 1130)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1130")
    '    'champ 1
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G101C7)
    '    CurrentFactureVitale.G1130C1 = CurrentBenéficiaire.G101C7
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + CurrentFactureVitale.G1130C1, "")
    '    'champ 2
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G101C8)
    '    CurrentFactureVitale.G1130C2 = CurrentBenéficiaire.G101C8
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + CurrentFactureVitale.G1130C2, "")
    '    'champ 3
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G101C9)
    '    CurrentFactureVitale.G1130C3 = CurrentBenéficiaire.G101C9
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + CurrentFactureVitale.G1130C3, "")
    '    'champ 4
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G104C12)
    '    CurrentFactureVitale.G1130C4 = CurrentBenéficiaire.G104C12
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + CurrentFactureVitale.G1130C4, "")
    '    'champ 5
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G104C13)
    '    CurrentFactureVitale.G1130C5 = CurrentBenéficiaire.G104C13
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + CurrentFactureVitale.G1130C5, "")
    '    'champ 6
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G104C14)
    '    CurrentFactureVitale.G1130C6 = CurrentBenéficiaire.G104C14
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 6:" + CurrentFactureVitale.G1130C6, "")
    '    'champ 7, 8
    '    If CheckBoxModeDegradé.Checked = False Then 'mode sécurisé
    '        SGD_AjouterChamp(NumeroSession, CodeALD(Indicateur_forçage_AMO, Date_Droits))
    '        CurrentFactureVitale.G1130C7 = CodeALD(Indicateur_forçage_AMO, Date_Droits)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 7:" + CodeALD(Indicateur_forçage_AMO, Date_Droits).ToString, "")
    '        SGD_AjouterChamp(NumeroSession, CodeSituation(Date_Droits))
    '        CurrentFactureVitale.G1130C8 = CodeSituation(Date_Droits)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 8:" + CodeSituation(Date_Droits).ToString, "")
    '    Else 'mode dégradé
    '        SGD_AjouterChamp(NumeroSession, "")
    '        CurrentFactureVitale.G1130C7 = ""
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 7:" + "", "")
    '        SGD_AjouterChamp(NumeroSession, "")
    '        CurrentFactureVitale.G1130C8 = ""
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 8:" + "", "")
    '    End If
    '    'champ 9
    '    'SGD_AjouterChamp(NumeroSession, "N") 'Code de présentation du carnet médical Inutilisé depuis la version 3.18
    '    'If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 9:" + "N", "")
    '    SGD_AjouterChamp(NumeroSession, "") 'Code de présentation du carnet médical Inutilisé depuis la version 3.18
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 9:" + "", "")
    'End Sub

    ''Groupe 1140 : Identification Structure
    'Public Sub groupe1140(ByVal NumeroSession As UInt16)

    '    If ModeSecur = "4" Then
    '        SGD_AjouterGroupe(NumeroSession, 1140)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1140")

    '        Dim ConfigXml As New XmlDocument
    '        ConfigXml.Load("InfoPro.xml")
    '        Dim XMLelementliste As XmlNodeList
    '        XMLelementliste = ConfigXml.GetElementsByTagName("Desync")

    '        'champ 1
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("G2C5").InnerText)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + XMLelementliste.Item(0).Item("G2C5").InnerText, "")
    '        'champ 2
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("G2C6").InnerText)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + XMLelementliste.Item(0).Item("G2C6").InnerText, "")
    '        'champ 3
    '        SGD_AjouterChamp(NumeroSession, XMLelementliste.Item(0).Item("G2C8").InnerText)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + XMLelementliste.Item(0).Item("G2C8").InnerText, "")

    '    Else

    '        SGD_AjouterGroupe(NumeroSession, 1140)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1140")
    '        'champ 1
    '        ValeurChamp = "@"
    '        TailleMax = 1
    '        SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 5, ValeurChamp, TailleMax)
    '        SGD_AjouterChamp(NumeroSession, Mid(ValeurChamp, 1, TailleMax))
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + Mid(ValeurChamp, 1, TailleMax), "")
    '        'champ 2
    '        ValeurChamp = "@@@@@@@@@@@@@@"
    '        TailleMax = 14
    '        SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 6, ValeurChamp, TailleMax)
    '        SGD_AjouterChamp(NumeroSession, Mid(ValeurChamp, 1, TailleMax))
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + Mid(ValeurChamp, 1, TailleMax), "")
    '        'champ 3
    '        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
    '        TailleMax = 40
    '        SGD_LireChamp(NumeroSessionCPS, 2, occurence_grp2, 8, ValeurChamp, TailleMax)
    '        SGD_AjouterChamp(NumeroSession, Mid(ValeurChamp, 1, TailleMax))
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + Mid(ValeurChamp, 1, TailleMax), "")
    '    End If
    'End Sub

    ''Groupe 1160 : Identification de l’individu
    'Public Sub groupe1160(ByVal NumeroSession As UInt16)
    '    If CurrentBenéficiaire.G104C9 <> "" Then
    '        SGD_AjouterGroupe(NumeroSession, 1160)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1160")
    '        SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G104C9)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + CurrentBenéficiaire.G104C9, "")
    '        SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G104C10)
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + CurrentBenéficiaire.G104C10, "")
    '    End If
    'End Sub

    ''Groupe1211-1213-1214: Prescription PS
    'Public Sub groupe1211_1213_1214(ByVal NumeroSession As UInt16, ByVal IDinternePrescripteur As String, ByVal DatePrecription As Date)
    '    CurrentFactureVitale.IDPrescripteur = IDinternePrescripteur
    '    Dim mydatatable As DataTable = Me.PrescripteursTableAdapter.GetPrescripteurDataByIDinterne(IDinternePrescripteur)
    '    Dim statut As String = ""
    '    For i = 0 To mydatatable.Columns.Count - 1
    '        If mydatatable.Columns.Item(i).ColumnName = "Statut" Then
    '            statut = mydatatable(0).Item(i).ToString
    '            Exit For
    '        End If
    '    Next

    '    Select Case statut
    '        Case "LIBERAL"
    '            SGD_AjouterGroupe(NumeroSession, 1211)
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1211")
    '            'N° d’identification du PS libéral
    '            Dim data As String = ""
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "Numidentification" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1211C1 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + data, "")
    '            'Clé du n° d’identification du PS libéral
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "Clé" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + data, "")
    '            CurrentFactureVitale.G1211C2 = data
    '            'Date de prescription du PS libéral
    '            SGD_AjouterChamp(NumeroSession, Format(DatePrecription, "yyyyMMdd") + "0000")
    '            CurrentFactureVitale.G1211C3 = Format(DatePrecription, "yyyyMMdd") + "0000"
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + CurrentFactureVitale.G1211C3, "")
    '            'Identification de la prescription du PS libéral
    '            SGD_AjouterChamp(NumeroSession, "")
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + "", "")
    '            CurrentFactureVitale.G1211C4 = ""
    '            'N° RPPS du PS libéral
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "NumRPPS" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1211C5 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + data, "")
    '            'Clé du N° RPPS du PS libéral
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "CléRPPS" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1211C6 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 6:" + data, "")
    '            'N° de la structure du PS libéral
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "numStructure" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1211C7 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 7:" + data, "")

    '        Case "SALARIE"
    '            SGD_AjouterGroupe(NumeroSession, 1213)
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1213")
    '            'N° d’identification du PS salarié
    '            Dim data As String = ""
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "Numidentification" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1213C1 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + data, "")
    '            'Clé du n° d’identification du PS salarié
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "Clé" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1213C2 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + data, "")
    '            'Code spécialité du PS salarié
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "CodeSpécialité" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1213C3 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + data, "")
    '            'Date de prescription du PS salarié
    '            SGD_AjouterChamp(NumeroSession, Format(DatePrecription, "yyyyMMdd") + "0000")
    '            CurrentFactureVitale.G1213C4 = Format(DatePrecription, "yyyyMMdd") + "0000"
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + Format(DatePrecription, "yyyyMMdd") + "0000", "")
    '            'Identification de la prescription du PS salarié
    '            SGD_AjouterChamp(NumeroSession, "")
    '            CurrentFactureVitale.G1213C5 = ""
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + CurrentFactureVitale.G1213C5, "")
    '            'N° RPPS du PS salarié
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "NumRPPS" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1213C6 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 6:" + data, "")
    '            'Clé du N° RPPS du PS salarié
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "CléRPPS" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1213C7 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 7:" + data, "")
    '            'N° de la structure du PS salarié
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "numStructure" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1213C8 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 8:" + data, "")


    '        Case "BENEVOLE"
    '            SGD_AjouterGroupe(NumeroSession, 1214)
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1214")
    '            'N° d’identification du PS bénévole
    '            Dim data As String = ""
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "Numidentification" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1214C1 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + data, "")
    '            'Clé du n° d’identification du PS bénévole
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "Clé" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1214C2 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + data, "")
    '            'Code spécialité du PS bénévole
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "CodeSpécialité" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1214C3 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + data, "")
    '            'Date de prescription du PS bénévole
    '            SGD_AjouterChamp(NumeroSession, Format(DatePrecription, "yyyyMMdd") + "0000")
    '            CurrentFactureVitale.G1214C4 = Format(DatePrecription, "yyyyMMdd") + "0000"
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + CurrentFactureVitale.G1214C4, "")
    '            'Identification de la prescription du PS bénévole
    '            SGD_AjouterChamp(NumeroSession, "")
    '            CurrentFactureVitale.G1214C5 = ""
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + "", "")
    '            'N° RPPS du PS bénévole
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "NumRPPS" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1214C6 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 6:" + data, "")
    '            'Clé du N° RPPS du PS bénévole
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "CléRPPS" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1214C7 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 7:" + data, "")
    '            'N° de la structure du PS bénévole
    '            For i = 0 To mydatatable.Columns.Count - 1
    '                If mydatatable.Columns.Item(i).ColumnName = "numStructure" Then
    '                    data = mydatatable(0).Item(i).ToString
    '                    Exit For
    '                End If
    '            Next
    '            SGD_AjouterChamp(NumeroSession, data)
    '            CurrentFactureVitale.G1214C8 = data
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 8:" + data, "")
    '        Case Else
    '            MsgBox("PRESCRIPTEUR NON RENSEIGNE" + Chr(10) + "ou" + Chr(10) + " STATUT DU PRESCRIPTEUR NON RENSEIGNE")
    '            SGD_LibererSession(NumeroSession)
    '            Exit Sub
    '    End Select


    'End Sub

    ''Groupe 1230 : Origine de la prescription
    'Public Sub groupe1230(ByVal NumeroSession As UInt16)
    '    SGD_AjouterGroupe(NumeroSession, 1230)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1230")
    '    'champ 1
    '    SGD_AjouterChamp(NumeroSession, "T")
    '    CurrentFactureVitale.G1230C1 = "T"
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + "T", "")
    '    'T Médecin traitant
    '    'O Médecin correspondant
    '    'P Autre situation du parcours de soins
    '    'S Hors parcours de soins
    '    'A Renouvellement Adapté (cas de l’optique)
    '    'I Renouvellement à l’Identique de la prescription Initiale (cas de l’optique)
    'End Sub

    ''Groupe 1310 : Organisme AMO 
    'Public Function groupe1310(ByVal NumeroSession As UInt16)
    '    SGD_AjouterGroupe(NumeroSession, 1310)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1310")
    '    'champ 1
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G101C10)
    '    CurrentFactureVitale.G1310C1 = CurrentBenéficiaire.G101C10
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + CurrentFactureVitale.G1310C1, "")
    '    'champ 2
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G101C11)
    '    CurrentFactureVitale.G1310C2 = CurrentBenéficiaire.G101C11
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + CurrentFactureVitale.G1310C2, "")
    '    'champ 3
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G101C12)
    '    CurrentFactureVitale.G1310C3 = CurrentBenéficiaire.G101C12
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + CurrentFactureVitale.G1310C3, "")
    '    'champ 4
    '    Select Case CurrentBenéficiaire.G101C1 'Type de carte Vitale
    '        Case "R"

    '            Select Case CurrentBenéficiaire.G101C10 'Code Régime

    '                Case "03", "99"
    '                    Select Case Me.AmoTableAdapter1.SelectCount(CurrentBenéficiaire.G101C10, CurrentBenéficiaire.G101C11, CurrentBenéficiaire.G101C12)
    '                        Case 0
    '                            MsgBox("AUCUN ENREGISTREMENT POUR:" + Chr(10) + "Code Régime:" + CurrentBenéficiaire.G101C10 + Chr(10) + "Caisse Gestionnaire:" + CurrentBenéficiaire.G101C11 + Chr(10) + "Centre Gestionnaire:" + CurrentBenéficiaire.G101C12, MsgBoxStyle.Critical)
    '                            Return False
    '                        Case 1
    '                            Dim Codeorganismedestinataire As String
    '                            Codeorganismedestinataire = Me.AmoTableAdapter1.SelectOrganismeDestinataire(CurrentBenéficiaire.G101C10, CurrentBenéficiaire.G101C11, CurrentBenéficiaire.G101C12)
    '                            SGD_AjouterChamp(NumeroSession, Codeorganismedestinataire)
    '                            CurrentFactureVitale.G1310C4 = Codeorganismedestinataire
    '                            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + Codeorganismedestinataire, "")
    '                            SGD_AjouterChamp(NumeroSession, "000")
    '                            CurrentFactureVitale.G1310C5 = "000"
    '                            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + CurrentFactureVitale.G1310C5, "")
    '                        Case Else
    '                            MsgBox("PLUSIEURS ENREGISTREMENTS POUR:" + Chr(10) + "Code Régime:" + CurrentBenéficiaire.G101C10 + Chr(10) + "Caisse Gestionnaire:" + CurrentBenéficiaire.G101C11 + Chr(10) + "Centre Gestionnaire:" + CurrentBenéficiaire.G101C12, MsgBoxStyle.Critical)
    '                            Return False
    '                    End Select


    '                Case "01", "05", "06", "07", "08", "10", "14", "15", "16", "90", "92", "95"
    '                    SGD_AjouterChamp(NumeroSession, CurrentFactureVitale.G1310C2)
    '                    CurrentFactureVitale.G1310C4 = CurrentFactureVitale.G1310C2
    '                    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + CurrentFactureVitale.G1310C2, "")

    '                Case "02"
    '                    If Mid(CurrentFactureVitale.G1310C2, 3, 1) = "5" Then
    '                        SGD_AjouterChamp(NumeroSession, Mid(CurrentFactureVitale.G1310C2, 1, 2) & "1")
    '                        CurrentFactureVitale.G1310C4 = Mid(CurrentFactureVitale.G1310C2, 1, 2) & "1"
    '                        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + Mid(CurrentFactureVitale.G1310C2, 1, 2) & "1", "")
    '                    Else
    '                        SGD_AjouterChamp(NumeroSession, CurrentFactureVitale.G1310C2)
    '                        CurrentFactureVitale.G1310C4 = CurrentFactureVitale.G1310C2
    '                        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + CurrentFactureVitale.G1310C2, "")
    '                    End If

    '                Case "04"
    '                    SGD_AjouterChamp(NumeroSession, "110")
    '                    CurrentFactureVitale.G1310C4 = "110"
    '                    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + "110", "")

    '                Case "12"
    '                    SGD_AjouterChamp(NumeroSession, "001")
    '                    CurrentFactureVitale.G1310C4 = "001"
    '                    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + "001", "")

    '                Case "91"
    '                    If CurrentFactureVitale.G1310C2 = "751" And CurrentFactureVitale.G1310C3 = "0501" Then
    '                        SGD_AjouterChamp(NumeroSession, "999")
    '                        CurrentFactureVitale.G1310C4 = "999"
    '                        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + "999", "")
    '                    Else
    '                        SGD_AjouterChamp(NumeroSession, CurrentFactureVitale.G1310C2)
    '                        CurrentFactureVitale.G1310C4 = CurrentFactureVitale.G1310C2
    '                        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + CurrentFactureVitale.G1310C2, "")
    '                    End If

    '                Case "93"
    '                    If CurrentFactureVitale.G1310C2 = "751" Or CurrentFactureVitale.G1310C2 = "781" Or CurrentFactureVitale.G1310C2 = "911" Or CurrentFactureVitale.G1310C2 = "921" Or CurrentFactureVitale.G1310C2 = "931" Or CurrentFactureVitale.G1310C2 = "941" Or CurrentFactureVitale.G1310C2 = "951" Then
    '                        SGD_AjouterChamp(NumeroSession, Mid(CurrentFactureVitale.G1310C3, 2, 3))
    '                        CurrentFactureVitale.G1310C4 = Mid(CurrentFactureVitale.G1310C3, 2, 3)
    '                        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + Mid(CurrentFactureVitale.G1310C3, 2, 3), "")
    '                    Else
    '                        SGD_AjouterChamp(NumeroSession, CurrentFactureVitale.G1310C2)
    '                        CurrentFactureVitale.G1310C4 = CurrentFactureVitale.G1310C2
    '                        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + CurrentFactureVitale.G1310C2, "")
    '                    End If

    '                Case "94"
    '                    If CurrentFactureVitale.G1310C2 = "751" Or CurrentFactureVitale.G1310C2 = "781" Or CurrentFactureVitale.G1310C2 = "911" Or CurrentFactureVitale.G1310C2 = "921" Or CurrentFactureVitale.G1310C2 = "931" Or CurrentFactureVitale.G1310C2 = "941" Or CurrentFactureVitale.G1310C2 = "951" Then
    '                        If CurrentFactureVitale.G1310C3 = "0511" Then
    '                            SGD_AjouterChamp(NumeroSession, "514")
    '                            CurrentFactureVitale.G1310C4 = "514"
    '                            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + "514", "")
    '                        Else
    '                            SGD_AjouterChamp(NumeroSession, Mid(CurrentFactureVitale.G1310C3, 2, 3))
    '                            CurrentFactureVitale.G1310C4 = Mid(CurrentFactureVitale.G1310C3, 2, 3)
    '                            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + Mid(CurrentFactureVitale.G1310C3, 2, 3), "")
    '                        End If
    '                    Else
    '                        SGD_AjouterChamp(NumeroSession, CurrentFactureVitale.G1310C2)
    '                        CurrentFactureVitale.G1310C4 = CurrentFactureVitale.G1310C2
    '                        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + CurrentFactureVitale.G1310C2, "")
    '                    End If

    '                Case "96"
    '                    If CurrentFactureVitale.G1310C2 = "751" Or CurrentFactureVitale.G1310C2 = "781" Or CurrentFactureVitale.G1310C2 = "911" Or CurrentFactureVitale.G1310C2 = "921" Or CurrentFactureVitale.G1310C2 = "931" Or CurrentFactureVitale.G1310C2 = "941" Or CurrentFactureVitale.G1310C2 = "951" Then
    '                        SGD_AjouterChamp(NumeroSession, "751")
    '                        CurrentFactureVitale.G1310C4 = "751"
    '                        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + "751", "")
    '                    Else
    '                        SGD_AjouterChamp(NumeroSession, CurrentFactureVitale.G1310C2)
    '                        CurrentFactureVitale.G1310C4 = CurrentFactureVitale.G1310C2
    '                        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + CurrentFactureVitale.G1310C2, "")
    '                    End If
    '            End Select

    '            'champ 5
    '            SGD_AjouterChamp(NumeroSession, "000")
    '            CurrentFactureVitale.G1310C5 = "000"
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + CurrentFactureVitale.G1310C5, "")

    '        Case "T"
    '            'champ 4
    '            SGD_AjouterChamp(NumeroSession, "349")
    '            CurrentFactureVitale.G1310C4 = "349"
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + "349", "")
    '            'champ 5
    '            SGD_AjouterChamp(NumeroSession, "000")
    '            CurrentFactureVitale.G1310C5 = "000"
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + "000", "")

    '        Case "D"
    '            'champ 4
    '            SGD_AjouterChamp(NumeroSession, "999")
    '            CurrentFactureVitale.G1310C4 = "999"
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + "999", "")
    '            'champ 5
    '            SGD_AjouterChamp(NumeroSession, "999")
    '            CurrentFactureVitale.G1310C5 = "999"
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + "999", "")
    '    End Select
    '    Return True
    'End Function

    ''Groupe 1321 : Organisme AMC 'PAS FINI 
    'Public Sub groupe1321(ByVal NumeroSession As UInt16)
    '    SGD_AjouterGroupe(NumeroSession, 1321)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1321")
    '    'champ 1
    '    If OCT = True Then
    '        SGD_AjouterChamp(NumeroSession, "99")
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + "99", "")
    '        CurrentFactureVitale.G1321C1 = "99"
    '    Else
    '        SGD_AjouterChamp(NumeroSession, "")
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + "", "")
    '        CurrentFactureVitale.G1321C1 = ""
    '    End If
    '    'champ 2
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.AMC_NumOrganisme)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + CurrentBenéficiaire.AMC_NumOrganisme, "")
    '    CurrentFactureVitale.G1321C2 = CurrentBenéficiaire.AMC_NumOrganisme
    '    'champ 3
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.AMC_NumAdherent)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + CurrentBenéficiaire.AMC_NumAdherent, "")
    '    CurrentFactureVitale.G1321C3 = CurrentBenéficiaire.AMC_NumAdherent
    '    'champ 4
    '    SGD_AjouterChamp(NumeroSession, "")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + "", "")
    '    CurrentFactureVitale.G1321C4 = ""
    '    'champ 5
    '    Dim Champ5 As String = ""
    '    SGD_AjouterChamp(NumeroSession, Champ5)
    '    CurrentFactureVitale.G1321C5 = Champ5
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + Champ5, "")

    '    'champ 6
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 6:" + CurrentBenéficiaire.G109C2, "")
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G109C2)
    '    CurrentFactureVitale.G1321C6 = CurrentBenéficiaire.G109C2
    '    'champ 7
    '    'If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 7:" + "", "")
    '    'SGD_AjouterChamp(NumeroSession, "")
    '    'CurrentFactureVitale.G1321C7 = ""
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 7:" + "99", "")
    '    SGD_AjouterChamp(NumeroSession, "99")
    '    CurrentFactureVitale.G1321C7 = "99"
    '    'champ 8
    '    'SGD_AjouterChamp(NumeroSession, "")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 8:" + CurrentBenéficiaire.G109C7, "")
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G109C7)
    '    CurrentFactureVitale.G1321C8 = CurrentBenéficiaire.G109C7
    '    'champ 9
    '    'SGD_AjouterChamp(NumeroSession, "")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 9:" + CurrentBenéficiaire.G109C9, "")
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G109C9)
    '    CurrentFactureVitale.G1321C9 = CurrentBenéficiaire.G109C9
    '    'champ 10
    '    'SGD_AjouterChamp(NumeroSession, "")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 10:" + CurrentBenéficiaire.G109C4, "")
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G109C4)
    '    CurrentFactureVitale.G1321C10 = CurrentBenéficiaire.G109C4
    '    'champ 11
    '    'SGD_AjouterChamp(NumeroSession, "")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 11:" + CurrentBenéficiaire.G109C8, "")
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G109C8)
    '    CurrentFactureVitale.G1321C11 = CurrentBenéficiaire.G109C8
    '    'champ 12
    '    SGD_AjouterChamp(NumeroSession, "")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 12:" + "", "")
    '    CurrentFactureVitale.G1321C8 = ""
    '    'champ 13
    '    SGD_AjouterChamp(NumeroSession, "")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 13:" + "", "")
    'End Sub

    ''Groupe 1410 : Cadre de remboursement
    'Public Sub groupe1410(ByVal NumeroSession)
    '    SGD_AjouterGroupe(NumeroSession, 1410)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1410")
    '    'Cadrederemboursement
    '    '1 Pas de tiers-payant
    '    '2 Tiers-payant sur la part obligatoire seulement
    '    '3 Tiers-payant sur la part obligatoire et la part complémentaire dans le cadre d'une convention de gestion
    '    '4 Tiers-payant sur la part complémentaire dans le cadre d'une convention de gestion, la part obligatoire n'étant pas à rembourser
    '    '5 Tiers payant intégral pour le compte des régimes SNCF, RATP ou Mines.
    '    Dim CadreDeRemboursement As String = Mid(ComboBoxG1410C1.Text, 1, 1)
    '    SGD_AjouterChamp(NumeroSession, CadreDeRemboursement)
    '    CurrentFactureVitale.G1410C1 = CadreDeRemboursement
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + CadreDeRemboursement, "")
    '    SGD_AjouterChamp(NumeroSession, "")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "", "")
    'End Sub

    ''Groupe 1420 : Identification de pièce justificative pour l’AMO, obligatoire uniquement dans Factures non signées par carte Vitale
    'Public Sub groupe1420(ByVal NumeroSession As UInt16)
    '    SGD_AjouterGroupe(NumeroSession, 1420)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1420")

    '    ''Champ1 Nature de la pièce justificative pour l’AMO
    '    'SGD_AjouterChamp(NumeroSession, Mid(ComboBoxG1420C1.Text, 1, 1))
    '    'CurrentFactureVitale.G1420C1 = Mid(ComboBoxG1420C1.Text, 1, 1)
    '    'If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + Mid(ComboBoxG1420C1.Text, 1, 1), "")
    '    ''Champ2 Date de validité de la pièce justificative pour l’AMO
    '    'Dim G1420C2 As String = ""
    '    'If DateTimePickerG1420C2.Checked = True Then
    '    '    G1420C2 = Format(DateTimePickerG1420C2.Value, "yyyyMMdd") + "0000"
    '    'End If
    '    'SGD_AjouterChamp(NumeroSession, G1420C2)
    '    'CurrentFactureVitale.G1420C2 = G1420C2
    '    'If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + G1420C2, "")
    '    ''champ3 Origine de la pièce justificative pour l’AMO
    '    'SGD_AjouterChamp(NumeroSession, TextBoxG1420C3.Text)
    '    'CurrentFactureVitale.G1420C3 = TextBoxG1420C3.Text
    '    'If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + TextBoxG1420C3.Text, "")
    '    'Champ1 Nature de la pièce justificative pour l’AMO
    '    If CurrentBenéficiaire.G1420C1 = "" Then
    '        SGD_AjouterChamp(NumeroSession, "0")
    '        CurrentFactureVitale.G1420C1 = "0"
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + "0", "")
    '    Else
    '        SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G1420C1)
    '        CurrentFactureVitale.G1420C1 = CurrentBenéficiaire.G1420C1
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + CurrentBenéficiaire.G1420C1, "")
    '    End If
    '    'Champ2 Date de validité de la pièce justificative pour l’AMO
    '    SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G1420C2)
    '    CurrentFactureVitale.G1420C1 = CurrentBenéficiaire.G1420C2
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + CurrentBenéficiaire.G1420C2, "")
    '    'champ3 Origine de la pièce justificative pour l’AMO
    '    If CurrentBenéficiaire.G1420C1 = "2" Then
    '        SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G1420C3)
    '        CurrentFactureVitale.G1420C2 = CurrentBenéficiaire.G1420C3
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + CurrentBenéficiaire.G1420C3, "")
    '    Else
    '        SGD_AjouterChamp(NumeroSession, "")
    '        CurrentFactureVitale.G1420C3 = ""
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + "", "")
    '    End If
    'End Sub

    ''Groupe 1440 : Forçage niveau facture
    'Public Sub groupe1440(ByVal NumeroSession As UInt16, ByVal Champ1 As String, ByVal Champ2 As String, ByVal Champ3 As String)
    '    SGD_AjouterGroupe(NumeroSession, 1440)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1440")
    '    SGD_AjouterChamp(NumeroSession, Champ1)
    '    CurrentFactureVitale.G1440C1 = Champ1
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + Champ1, "")
    '    SGD_AjouterChamp(NumeroSession, Champ2)
    '    CurrentFactureVitale.G1440C2 = Champ2
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + Champ2, "")
    '    SGD_AjouterChamp(NumeroSession, Champ3)
    '    CurrentFactureVitale.G1440C3 = Champ3
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + Champ3, "")
    'End Sub

    ''Groupe 1511 : Nature d’assurance Maladie
    'Public Sub groupe1511(ByVal NumeroSession As UInt16, ByVal accidentdroitcommun As Boolean, ByVal dateaccidentdroitcommun As Date)
    '    SGD_AjouterGroupe(NumeroSession, 1511)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1511")
    '    'champ1 Date d’accident de droit commun
    '    If accidentdroitcommun = True Then
    '        SGD_AjouterChamp(NumeroSession, Format(dateaccidentdroitcommun, "yyyyMMdd") + "0000")
    '        CurrentFactureVitale.G1511C1 = Format(dateaccidentdroitcommun, "yyyyMMdd") + "0000"
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + CurrentFactureVitale.G1511C1, Format(dateaccidentdroitcommun, "yyyyMMdd") + "0000")
    '    Else
    '        SGD_AjouterChamp(NumeroSession, "")
    '        CurrentFactureVitale.G1511C1 = ""
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + CurrentFactureVitale.G1511C1, "")
    '    End If
    '    'champ2 Indicateur Régime Alsace - Moselle à indiquer pour le mode dégradé
    '    If CheckBoxModeDegradé.Checked = True Then
    '        'SGD_AjouterChamp(NumeroSession, CurrentBenéficiaire.G1511C2)
    '        'CurrentFactureVitale.G1511C2 = CurrentBenéficiaire.G1511C2
    '        'If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + CurrentFactureVitale.G1511C2, "")
    '        If G1511C2_CheckBox1.Checked = True Then
    '            SGD_AjouterChamp(NumeroSession, "O")
    '            CurrentFactureVitale.G1511C2 = "O"
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "O", "")
    '        Else
    '            SGD_AjouterChamp(NumeroSession, "N")
    '            CurrentFactureVitale.G1511C2 = "N"
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "N", "")
    '        End If
    '    Else
    '        SGD_AjouterChamp(NumeroSession, "")
    '        CurrentFactureVitale.G1511C2 = ""
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "", "")
    '    End If

    'End Sub

    ''Groupe 1512 : Nature d’assurance Maternité
    'Public Sub groupe1512(ByVal NumeroSession As UInt16, ByVal datematernite As Date)
    '    SGD_AjouterGroupe(NumeroSession, 1512)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1512")
    '    SGD_AjouterChamp(NumeroSession, Format(datematernite, "yyyyMMdd") + "0000")
    '    CurrentFactureVitale.G1512C1 = Format(datematernite, "yyyyMMdd") + "0000"
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + CurrentFactureVitale.G1512C1, "")
    'End Sub

    ''Groupe 1513 : Nature d’assurance Accident du Travail
    'Public Sub groupe1513(ByVal NumeroSession As UInt16, ByVal dateaccidenttravail As Date, ByVal numeroaccidenttravail As String, ByVal clenumeroaccidenttravail As String)
    '    SGD_AjouterGroupe(NumeroSession, 1513)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1513")
    '    SGD_AjouterChamp(NumeroSession, Format(dateaccidenttravail, "yyyyMMdd") + "0000")
    '    CurrentFactureVitale.G1513C1 = Format(dateaccidenttravail, "yyyyMMdd") + "0000"
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + CurrentFactureVitale.G1513C1, "")
    '    SGD_AjouterChamp(NumeroSession, numeroaccidenttravail)
    '    CurrentFactureVitale.G1513C2 = numeroaccidenttravail
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + CurrentFactureVitale.G1513C2, "")
    '    SGD_AjouterChamp(NumeroSession, clenumeroaccidenttravail)
    '    CurrentFactureVitale.G1513C3 = clenumeroaccidenttravail
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + CurrentFactureVitale.G1513C3, "")
    'End Sub

    ''groupe 1610 Médicaments
    'Public Sub groupe1610Médicaments(ByVal NumeroSession As UInt16, ByVal numligne As Integer, ByRef Nombre_de_Prestations As Integer, ByRef Total_des_montants_facturés As Double, ByRef Total_remboursable_par_l_AMO As Double, ByRef Total_Théorique_Remboursable_par_AMC As Double, ByRef Total_Remboursable_par_AMC As Double, ByRef Occurence1610 As Integer)
    '    SGD_AjouterGroupe(NumeroSession, 1610)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1610")
    '    Occurence1610 = Occurence1610 + 1
    '    ReDim Preserve CurrentFactureVitale.TabLigneFacture(Occurence1610)

    '    'Champ1
    '    Nombre_de_Prestations = Nombre_de_Prestations + 1
    '    Dim NuméroPrestation As String = Nombre_de_Prestations.ToString
    '    SGD_AjouterChamp(NumeroSession, NuméroPrestation)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C1 = NuméroPrestation
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C1, "")

    '    'Champ2 Date d’exécution
    '    SGD_AjouterChamp(NumeroSession, Format(DateExecution.Value, "yyyyMMdd") + "0000")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C2 = Format(DateExecution.Value, "yyyyMMdd") + "0000"
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C2, "")

    '    'Champ3 Lieu d’exécution 0 pharmacie | 1 domicile patient
    '    SGD_AjouterChamp(NumeroSession, "0")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C3 = "0"
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C3, "")

    '    'Champ 4 Code prestation
    '    SGD_AjouterChamp(NumeroSession, Vente(VenteCodeActe.Index, numligne).Value.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C4 = Vente(VenteCodeActe.Index, numligne).Value.ToString
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C4, "")

    '    'Champ 5 CCAM : champ non renseigné
    '    SGD_AjouterChamp(NumeroSession, "")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C5 = ""
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C5, "")

    '    'Champ6 Montant des honoraires (??? p271/906 ???)
    '    Dim MontantHonoraires As Double = 0
    '    MontantHonoraires = Vente(VenteTotal.Index, numligne).Value * 100
    '    Total_des_montants_facturés = Total_des_montants_facturés + MontantHonoraires
    '    SGD_AjouterChamp(NumeroSession, MontantHonoraires.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C6 = MontantHonoraires.ToString
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 6:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C6.ToString, "")

    '    'Champ7 Qualificatif de la dépense
    '    SGD_AjouterChamp(NumeroSession, "")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C7 = ""
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 7:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C7.ToString, "")

    '    'Champ8 Coefficient
    '    SGD_AjouterChamp(NumeroSession, "1")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C8 = "1"
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 8:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C8.ToString, "1")

    '    'Champ9 Quantité
    '    SGD_AjouterChamp(NumeroSession, "1")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C9 = "1"
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 9:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C9.ToString, "1")

    '    'Champ10 Dénombrement
    '    SGD_AjouterChamp(NumeroSession, "1")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C10 = "1"
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 10:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C10.ToString, "")

    '    'Champ11
    '    Dim PUmed As Double = Vente(VentePrix.Index, numligne).Value * 100
    '    Dim quantité As Integer = Vente(VenteQuantité.Index, numligne).Value
    '    Dim PrixUnitaire As String
    '    PrixUnitaire = (PUmed * quantité)
    '    SGD_AjouterChamp(NumeroSession, PrixUnitaire.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C11 = PrixUnitaire
    '    PrixUnitaire = Nothing
    '    PUmed = Nothing
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 11:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C11.ToString, "")

    '    'champ 12
    '    Dim PUmedTFR As Double = Vente(VenteTFRprix.Index, numligne).Value * 100
    '    Dim BaseRemboursement As Integer
    '    BaseRemboursement = PUmedTFR * quantité
    '    SGD_AjouterChamp(NumeroSession, BaseRemboursement.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C12 = BaseRemboursement
    '    PUmedTFR = Nothing
    '    quantité = Nothing
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 12:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C12.ToString, "")

    '    'champ13
    '    Dim tauxamo As Integer
    '    Select Case NatureAssuranceComboBox.Text
    '        Case "MATERNITE", "ACCIDENT DU TRAVAIL", "PREVENTION"
    '            tauxamo = 100
    '        Case Else
    '            If Vente(VenteType.Index, numligne).Value.ToString = "ALD" Then
    '                tauxamo = 100
    '            Else

    '                tauxamo = CalculTauxAMO(Vente(VenteCodeActe.Index, numligne).Value.ToString, CurrentBenéficiaire.G101C10, CodeSituation(Date_Droits))
    '            End If
    '    End Select
    '    SGD_AjouterChamp(NumeroSession, tauxamo.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C13 = tauxamo
    '    Vente(VenteAMO.Index, numligne).Value = tauxamo
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 13:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C13.ToString, "")

    '    'champ 14
    '    Dim MontantremboursableAMO As Integer
    '    MontantremboursableAMO = Arrondis(Val(BaseRemboursement) * Val(tauxamo) / 100)
    '    Total_remboursable_par_l_AMO = Total_remboursable_par_l_AMO + MontantremboursableAMO
    '    SGD_AjouterChamp(NumeroSession, MontantremboursableAMO.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C14 = MontantremboursableAMO
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 14:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C14.ToString, "")

    '    'champ 15
    '    Dim tauxAMC As Integer = CalculTauxAMC(Vente(VenteCodeActe.Index, numligne).Value.ToString, CurrentBenéficiaire.AMC_TypeContrat)
    '    Dim MontantremboursableAMC As Integer = Arrondis((BaseRemboursement * tauxAMC / 100) - MontantremboursableAMO)
    '    If MontantremboursableAMC > 0 Then
    '        SGD_AjouterChamp(NumeroSession, MontantremboursableAMC.ToString)
    '        CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C15 = MontantremboursableAMC
    '        Total_Théorique_Remboursable_par_AMC = Total_Théorique_Remboursable_par_AMC + MontantremboursableAMC
    '        Total_Remboursable_par_AMC = Total_Remboursable_par_AMC + MontantremboursableAMC
    '    Else
    '        SGD_AjouterChamp(NumeroSession, "0")
    '        CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C15 = 0
    '    End If
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 15:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C15.ToString, "")

    '    'champ 16
    '    Dim Reste As Integer
    '    If MontantremboursableAMC > 0 Then
    '        Reste = BaseRemboursement - MontantremboursableAMO - MontantremboursableAMC
    '    Else
    '        Reste = BaseRemboursement - MontantremboursableAMO
    '    End If
    '    SGD_AjouterChamp(NumeroSession, Reste.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C16 = Reste
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 16:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C16.ToString, "")
    'End Sub

    ''groupe 1610 LPP
    'Public Sub groupe1610LPP(ByVal NumeroSession As UInt16, ByVal numligne As Integer, ByRef Nombre_de_Prestations As Integer, ByRef Total_des_montants_facturés As Double, ByRef Total_remboursable_par_l_AMO As Double, ByRef Total_Théorique_Remboursable_par_AMC As Double, ByRef Total_Remboursable_par_AMC As Double, ByRef Occurence1610 As Integer)
    '    SGD_AjouterGroupe(NumeroSession, 1610)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1610")
    '    Occurence1610 = Occurence1610 + 1
    '    ReDim Preserve CurrentFactureVitale.TabLigneFacture(Occurence1610)

    '    'Champ1
    '    Nombre_de_Prestations = Nombre_de_Prestations + 1
    '    Dim NuméroPrestation As String = Nombre_de_Prestations.ToString
    '    SGD_AjouterChamp(NumeroSession, NuméroPrestation)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C1 = NuméroPrestation
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C1, "")

    '    'Champ2 Date d’exécution
    '    SGD_AjouterChamp(NumeroSession, Format(DateExecution.Value, "yyyyMMdd") + "0000")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C2 = Format(DateExecution.Value, "yyyyMMdd") + "0000"
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C2, "")

    '    'Champ3 Lieu d’exécution 0 pharamcie | 1 domicile patient
    '    SGD_AjouterChamp(NumeroSession, "0")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C3 = "0"
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C3, "")

    '    'Champ 4 Code prestation
    '    Dim CodePrestation As String = Vente(VenteCodeActe.Index, numligne).Value.ToString
    '    SGD_AjouterChamp(NumeroSession, CodePrestation)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C4 = CodePrestation
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C4, "")

    '    'Champ 5 CCAM : champ non renseigné
    '    SGD_AjouterChamp(NumeroSession, "")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C5 = ""
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C5, "")

    '    'Champ6 Montant des honoraires (p280/906) + calcul valeur champs suivant 11,12
    '    Dim MontantHonoraires As Double = 0
    '    Dim Dénombrement As Integer = 0
    '    Dim PrixUnitaire As Double = 0
    '    Dim BaseRemboursement As Double = 0


    '    For i = 0 To Vente.RowCount - 2

    '        If Vente(VenteCodeActe.Index, i).Value.ToString = CodePrestation Then
    '            MontantHonoraires = MontantHonoraires + Vente(VenteTotal.Index, i).Value * 100
    '            Dénombrement = Dénombrement + 1
    '            PrixUnitaire = PrixUnitaire + Vente(VenteTotal.Index, i).Value * 100

    '            Dim quantité_lpp As Integer = 1
    '            If Vente(VenteCIP.Index, i).Value.ToString = "" Then
    '                quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", Vente(VenteEAN13.Index, i).Value.ToString)
    '            Else
    '                quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité(Vente(VenteCIP.Index, i).Value.ToString, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
    '            End If
    '            BaseRemboursement = BaseRemboursement + (LPPTableAdapter.selectPrixLPPByCode(Vente(VenteLPP.Index, i).Value.ToString) * (Vente(VenteQuantité.Index, i).Value) * quantité_lpp)

    '        End If
    '    Next
    '    Total_des_montants_facturés = Total_des_montants_facturés + MontantHonoraires
    '    SGD_AjouterChamp(NumeroSession, MontantHonoraires.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C6 = MontantHonoraires.ToString
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 6:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C6.ToString, "")

    '    'Champ7 Qualificatif de la dépense
    '    SGD_AjouterChamp(NumeroSession, "")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C7 = ""
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 7:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C7.ToString, "")

    '    'Champ8 Coefficient
    '    SGD_AjouterChamp(NumeroSession, "1")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C8 = "1"
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 8:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C8.ToString, "1")

    '    'Champ9 Quantité
    '    SGD_AjouterChamp(NumeroSession, "1")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C9 = "1"
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 9:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C9.ToString, "1")

    '    'Champ10 Dénombrement
    '    SGD_AjouterChamp(NumeroSession, Dénombrement)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C10 = Dénombrement
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 10:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C10.ToString, "")


    '    'Champ11
    '    SGD_AjouterChamp(NumeroSession, PrixUnitaire.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C11 = PrixUnitaire
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 11:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C11.ToString, "")

    '    'champ 12
    '    SGD_AjouterChamp(NumeroSession, BaseRemboursement.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C12 = BaseRemboursement
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 12:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C12.ToString, "")

    '    'champ13
    '    Dim tauxamo As Integer
    '    Select Case NatureAssuranceComboBox.Text
    '        Case "MATERNITE", "ACCIDENT DU TRAVAIL", "PREVENTION"
    '            tauxamo = 100
    '        Case Else
    '            If Vente(VenteType.Index, numligne).Value.ToString = "ALD" Then
    '                tauxamo = 100
    '            Else
    '                tauxamo = CalculTauxAMO(Vente(VenteCodeActe.Index, numligne).Value.ToString, CurrentBenéficiaire.G101C10, CodeSituation(Date_Droits))
    '            End If
    '    End Select
    '    SGD_AjouterChamp(NumeroSession, tauxamo.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C13 = tauxamo
    '    Vente(VenteAMO.Index, numligne).Value = tauxamo
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 13:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C13.ToString, "")

    '    'champ 14
    '    Dim MontantremboursableAMO As Double
    '    MontantremboursableAMO = (Arrondis(BaseRemboursement) * Val(tauxamo) / 100)
    '    Total_remboursable_par_l_AMO = Total_remboursable_par_l_AMO + MontantremboursableAMO
    '    SGD_AjouterChamp(NumeroSession, MontantremboursableAMO.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C14 = MontantremboursableAMO
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 14:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C14.ToString, "")

    '    'champ 15
    '    Dim tauxAMC As Integer = CalculTauxAMC(Vente(VenteCodeActe.Index, numligne).Value.ToString, CurrentBenéficiaire.AMC_TypeContrat)
    '    Dim MontantremboursableAMC As Integer = Arrondis((BaseRemboursement * tauxAMC / 100) - MontantremboursableAMO)
    '    If MontantremboursableAMC > 0 Then
    '        SGD_AjouterChamp(NumeroSession, MontantremboursableAMC.ToString)
    '        CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C15 = MontantremboursableAMC
    '        Total_Théorique_Remboursable_par_AMC = Total_Théorique_Remboursable_par_AMC + MontantremboursableAMC
    '        Total_Remboursable_par_AMC = Total_Remboursable_par_AMC + MontantremboursableAMC
    '    Else
    '        SGD_AjouterChamp(NumeroSession, "0")
    '        CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C15 = 0
    '    End If
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 15:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C15.ToString, "")

    '    'champ 16
    '    Dim Reste As Integer
    '    If MontantremboursableAMC > 0 Then
    '        Reste = BaseRemboursement - MontantremboursableAMO - MontantremboursableAMC
    '    Else
    '        Reste = BaseRemboursement - MontantremboursableAMO
    '    End If
    '    SGD_AjouterChamp(NumeroSession, Reste.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C16 = Reste
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 16:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).G1610C16.ToString, "")
    'End Sub

    ''Groupe 1730 : Prestation détaillée LPP
    'Public Sub groupe1730(ByVal NumeroSession As UInt16, ByVal NuméroPrestation As String, ByVal ligne As Integer, ByVal Occurence1610 As Integer, ByRef Occurence1730 As Integer)
    '    'groupe 1730
    '    SGD_AjouterGroupe(NumeroSession, "1730")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1730")

    '    Occurence1730 = Occurence1730 + 1
    '    ReDim Preserve CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730)

    '    'champ 1
    '    SGD_AjouterChamp(NumeroSession, NuméroPrestation)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C1 = NuméroPrestation
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C1, "")

    '    'champ 2
    '    SGD_AjouterChamp(NumeroSession, Vente(VenteLPP.Index, ligne).Value.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C2 = Vente(VenteLPP.Index, ligne).Value.ToString
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C2, "")

    '    'champ 3,4,5,6 type de prestation
    '    Dim LPP_Type_Service As String = ""
    '    If Vente(VenteCIP.Index, ligne).Value.ToString = "" Then
    '        LPP_Type_Service = Me.ProduitsTableAdapter.Select_LPP_Type_Service("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", Vente(VenteEAN13.Index, ligne).Value.ToString)
    '    Else
    '        LPP_Type_Service = Me.ProduitsTableAdapter.Select_LPP_Type_Service(Vente(VenteCIP.Index, ligne).Value.ToString, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
    '    End If



    '    Select Case LPP_Type_Service
    '        Case "L" 'Location
    '            SGD_AjouterChamp(NumeroSession, "L") 'champ 3
    '            CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C3 = "L"
    '            SGD_AjouterChamp(NumeroSession, "") 'champ 4
    '            CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C4 = ""
    '            Lpp_Location_Date.ShowDialog() 'ce formulaire donne les valeurs à location_lpp_date_debut et location_lpp_date_fin
    '            SGD_AjouterChamp(NumeroSession, location_lpp_date_debut) 'champ 5
    '            CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C5 = location_lpp_date_debut
    '            SGD_AjouterChamp(NumeroSession, location_lpp_date_fin)  'champ 6
    '            CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C6 = location_lpp_date_fin

    '        Case ""
    '            MsgBox("AUCUN TYPE SERVICE LPP (G1730C3) pour CODE CIP OU EAN13", MsgBoxStyle.Critical)
    '            Exit Sub
    '        Case Else
    '            SGD_AjouterChamp(NumeroSession, LPP_Type_Service) 'champ 3
    '            CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C3 = LPP_Type_Service
    '            SGD_AjouterChamp(NumeroSession, "") 'champ 4
    '            CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C4 = ""
    '            SGD_AjouterChamp(NumeroSession, Format(DateExecution.Value, "yyyyMMdd") + "0000") 'champ 5
    '            CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C5 = Format(DateExecution.Value, "yyyyMMdd") + "0000"
    '            SGD_AjouterChamp(NumeroSession, "") 'champ 6
    '            CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C6 = ""
    '    End Select

    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C3, "")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C4, "")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C5, "")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 6:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C6, "")

    '    'champ 7
    '    Dim tariflpp As String
    '    tariflpp = LPPTableAdapter.selectPrixLPPByCode(Vente(VenteLPP.Index, ligne).Value.ToString)
    '    SGD_AjouterChamp(NumeroSession, tariflpp)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C7 = tariflpp
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 7:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C7, "")

    '    'champ 8
    '    Dim quantité_lpp As Integer = 1
    '    If Vente(VenteCIP.Index, ligne).Value.ToString = "" Then
    '        quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", Vente(VenteEAN13.Index, ligne).Value.ToString)
    '    Else
    '        quantité_lpp = Me.ProduitsTableAdapter.Select_LPP_Quantité(Vente(VenteCIP.Index, ligne).Value.ToString, "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
    '    End If
    '    Dim NombreDunités As String = (Vente(VenteQuantité.Index, ligne).Value * quantité_lpp).ToString
    '    SGD_AjouterChamp(NumeroSession, NombreDunités)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C8 = NombreDunités
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 8:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C8, "")

    '    'champ 9
    '    Dim PrixUnitairePublic As String
    '    PrixUnitairePublic = (Vente(VentePrix.Index, ligne).Value * 100).ToString
    '    SGD_AjouterChamp(NumeroSession, PrixUnitairePublic)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C9 = PrixUnitairePublic
    '    PrixUnitairePublic = Nothing
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 9:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C9, "")

    '    'champ 10
    '    Dim MontantTotalLPP As String
    '    MontantTotalLPP = (Val(tariflpp) * Val(NombreDunités)).ToString
    '    SGD_AjouterChamp(NumeroSession, MontantTotalLPP)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C10 = MontantTotalLPP
    '    MontantTotalLPP = Nothing
    '    tariflpp = Nothing
    '    NombreDunités = Nothing
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 10:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C10, "")

    '    'champ11
    '    Dim MontantTotalFacturéTTC As String
    '    MontantTotalFacturéTTC = (Vente(VenteTotal.Index, ligne).Value * 100).ToString
    '    SGD_AjouterChamp(NumeroSession, MontantTotalFacturéTTC)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C11 = MontantTotalFacturéTTC
    '    MontantTotalFacturéTTC = Nothing
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 11:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailLpp(Occurence1730 - 1).G1730C11, "")

    'End Sub

    ''Groupe 1740 : Prestation détaillée code CIP
    'Public Sub groupe1740(ByVal NumeroSession As UInt16, ByVal NuméroPrestation As String, ByVal lignevente As Integer, ByVal Occurence1610 As Integer)
    '    SGD_AjouterGroupe(NumeroSession, "1740")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1740")

    '    'champ 1
    '    SGD_AjouterChamp(NumeroSession, NuméroPrestation)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C1 = NuméroPrestation
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C1, "")

    '    'champs 2,3
    '    If Vente(VenteEAN13.Index, lignevente).Value.ToString = "" Then 'type de code CIP
    '        'Code CIP du médicament allopathique sur 7 caractères
    '        SGD_AjouterChamp(NumeroSession, "A")
    '        CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C2 = "A"
    '        SGD_AjouterChamp(NumeroSession, Vente(VenteCIP.Index, lignevente).Value.ToString)
    '        CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C3 = Vente(VenteCIP.Index, lignevente).Value.ToString
    '    Else 'type de code CIP
    '        'Code CIP du médicament sur 13 caractères
    '        SGD_AjouterChamp(NumeroSession, "B")
    '        CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C2 = "B"
    '        SGD_AjouterChamp(NumeroSession, Vente(VenteEAN13.Index, lignevente).Value.ToString)
    '        CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C3 = Vente(VenteEAN13.Index, lignevente).Value.ToString
    '    End If 'type de code CIP
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C2, "")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C3, "")

    '    'champ4
    '    Dim PUmed As String = (Vente(VentePrix.Index, lignevente).Value * 100).ToString
    '    SGD_AjouterChamp(NumeroSession, PUmed)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C4 = PUmed
    '    PUmed = Nothing
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C4.ToString, "")

    '    'champ 5
    '    Dim quantité As String = (Vente(VenteQuantité.Index, lignevente).Value).ToString
    '    SGD_AjouterChamp(NumeroSession, quantité)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C5 = quantité
    '    quantité = Nothing
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C5, "")

    '    'champ 6
    '    SGD_AjouterChamp(NumeroSession, Vente(VenteTFRtype.Index, lignevente).Value.ToString)
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C6 = Vente(VenteTFRtype.Index, lignevente).Value.ToString
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 6:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C6, "")

    '    'champ 7
    '    SGD_AjouterChamp(NumeroSession, " ")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C7 = ""
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 7:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C7, "")

    '    'champ 8
    '    SGD_AjouterChamp(NumeroSession, " ")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C8 = ""
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 8:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C8, "")

    '    'champ 9
    '    SGD_AjouterChamp(NumeroSession, "")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C9 = ""
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 9:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C9, "")

    '    'champ 10
    '    SGD_AjouterChamp(NumeroSession, "")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C10 = ""
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 10:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C10, "")

    '    'champ 11
    '    SGD_AjouterChamp(NumeroSession, "")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C11 = ""
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 11:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C11, "")

    '    'champ 12
    '    SGD_AjouterChamp(NumeroSession, " ")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C12 = ""
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 12:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C12, "")

    '    'champ 13
    '    SGD_AjouterChamp(NumeroSession, "")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C13 = ""
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 13:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C13, "")

    '    'champ 14
    '    SGD_AjouterChamp(NumeroSession, "")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C14 = ""
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 14:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C14, "")

    '    'champ15
    '    SGD_AjouterChamp(NumeroSession, "")
    '    CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C15 = ""
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 15:" + CurrentFactureVitale.TabLigneFacture(Occurence1610 - 1).DétailCodeCIP.G1740C15, "")
    'End Sub

    ''Groupe 1820 : Complément de prestation Exonération du Ticket Modérateur 'p291/906
    'Public Sub groupe1820(ByVal NumeroSession As UInt16, ByVal NuméroPrestation As String, ByVal VenteType As String)

    '    Select Case NatureAssuranceComboBox.Text


    '        Case "MALADIE", "ACCIDENT DE DROIT COMMUN" 'NatureAssuranceComboBox.Text
    '            SGD_AjouterGroupe(NumeroSession, 1820)
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1820")
    '            'champ 1
    '            SGD_AjouterChamp(NumeroSession, NuméroPrestation)
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + NuméroPrestation, "")
    '            'champ 2
    '            If VenteType = "ALD" Then
    '                SGD_AjouterChamp(NumeroSession, "4")
    '                If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "4", "")
    '                Exit Sub
    '            End If
    '            If declarations.TauxSNCF = True Then
    '                SGD_AjouterChamp(NumeroSession, "6")
    '                If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "6", "")
    '                Exit Sub
    '            End If
    '            Select Case CodeSituation(Date_Droits)
    '                'pas d’exonération
    '                Case "0100", "0105", "0108", "0200", "0205", "0225", "0300", "0301", "0400", "0401", "0402", "0403", "0408", "0411", "0414", "0500", "1000", "1600", "9000", "9020", "9021", "9022", "9023", "9024"
    '                    SGD_AjouterChamp(NumeroSession, "0")
    '                    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "0", "")
    '                    'assuré ou bénéficiaire exonéré
    '                Case "0101", "0102", "0103", "0106", "0107", "0109", "0110", "0201", "0202", "0203", "0206", "0207", "0302", "0303", "0404", "0405", "0406", "0407", "0412", "0413", "0415", "0501", "0502", "0503", "1001", "1002", "1003", "1601", "1602", "1603", "9001", "9002", "9003"
    '                    SGD_AjouterChamp(NumeroSession, "5")
    '                    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "5", "")
    '                    'exonération régimes spéciaux
    '                Case "0700"
    '                    SGD_AjouterChamp(NumeroSession, "6")
    '                    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "6", "")
    '                    'FSV
    '                Case "0104", "0204", "0304", "0409", "0410", "0504", "1004", "9004"
    '                    SGD_AjouterChamp(NumeroSession, "9")
    '                    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "9", "")
    '                Case "0226", "0227"
    '                    If MsgBox("En rapport avec un accident?", 36) = MsgBoxResult.Yes Then
    '                        SGD_AjouterChamp(NumeroSession, "0")
    '                        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "0", "")
    '                    Else
    '                        SGD_AjouterChamp(NumeroSession, "5")
    '                        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "5", "")
    '                    End If
    '            End Select


    '        Case "PREVENTION"
    '            SGD_AjouterGroupe(NumeroSession, 1820)
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1820")
    '            'champ 1
    '            SGD_AjouterChamp(NumeroSession, NuméroPrestation)
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + NuméroPrestation, "")
    '            'champ 2
    '            SGD_AjouterChamp(NumeroSession, "7")
    '            If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "7", "")
    '            Exit Sub


    '        Case Else 'NatureAssuranceComboBox.Text
    '            Exit Sub

    '    End Select
    'End Sub

    ''Groupe 1840 : Complément de prestation Entente préalable
    'Public Sub groupe1840(ByVal NumeroSession As UInt16, ByVal NuméroPrestation As String)
    '    SGD_AjouterGroupe(NumeroSession, 1840)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1840")

    '    'champ 1
    '    SGD_AjouterChamp(NumeroSession, NuméroPrestation)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + NuméroPrestation, "")

    '    'champ 2
    '    SGD_AjouterChamp(NumeroSession, EntentePréalableCode)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + EntentePréalableCode, "")
    '    'champ 3
    '    SGD_AjouterChamp(NumeroSession, EntentePréalabledate)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + EntentePréalabledate, "")
    '    'champ 4
    '    SGD_AjouterChamp(NumeroSession, "")
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + "", "")
    'End Sub

    ''Groupe 1850 : Complément de prestation Renouvellement
    'Public Sub groupe1850(ByVal NumeroSession As UInt16, ByVal NuméroPrestation As String, ByVal Renouvellement As String)
    '    SGD_AjouterGroupe(NumeroSession, 1850)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1850")

    '    'champ 1
    '    SGD_AjouterChamp(NumeroSession, NuméroPrestation)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + NuméroPrestation, "")

    '    'champ 2
    '    While Renouvellement.Length < 2
    '        Renouvellement = "0" & Renouvellement
    '    End While
    '    SGD_AjouterChamp(NumeroSession, Renouvellement)
    '    CurrentFactureVitale.G1850C2 = Renouvellement
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + Renouvellement, "")

    'End Sub

    ''Groupe 1910 : Total Facture
    'Public Sub groupe1910(ByVal NumeroSession As UInt16, ByVal Nombre_de_prestations As Integer, ByVal Total_des_montants_facturés As Double, ByVal Total_remboursable_par_l_AMO As Double, ByRef Total_Théorique_Remboursable_par_AMC As Double, ByRef Total_Remboursable_par_AMC As Double)
    '    SGD_AjouterGroupe(NumeroSession, 1910)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "1910")

    '    'champ 1
    '    SGD_AjouterChamp(NumeroSession, Nombre_de_prestations.ToString)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + Nombre_de_prestations.ToString, "")
    '    CurrentFactureVitale.G1910C1 = Nombre_de_prestations

    '    'champ 2
    '    SGD_AjouterChamp(NumeroSession, Total_des_montants_facturés.ToString)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + Total_des_montants_facturés.ToString, "")
    '    CurrentFactureVitale.G1910C2 = Total_des_montants_facturés

    '    'champ 3
    '    SGD_AjouterChamp(NumeroSession, Total_remboursable_par_l_AMO.ToString)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 3:" + Total_remboursable_par_l_AMO.ToString, "")
    '    CurrentFactureVitale.G1910C3 = Total_remboursable_par_l_AMO

    '    'champ 4
    '    Dim Total_participation_assuré As Integer
    '    Total_participation_assuré = Total_des_montants_facturés - Total_remboursable_par_l_AMO
    '    If Total_participation_assuré < 0 Then
    '        MsgBox("les montants remboursés sont supérieurs aux montants facturés." + Chr(10) + "le prix de vente d'un produit lpp doit être inférieur à son remboursement.", MsgBoxStyle.Critical)
    '    End If
    '    SGD_AjouterChamp(NumeroSession, Total_participation_assuré.ToString)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 4:" + Total_participation_assuré.ToString, "")
    '    CurrentFactureVitale.G1910C4 = Total_participation_assuré

    '    'champ 5
    '    SGD_AjouterChamp(NumeroSession, Total_Théorique_Remboursable_par_AMC)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 5:" + Total_Théorique_Remboursable_par_AMC.ToString, "")
    '    CurrentFactureVitale.G1910C5 = Total_Théorique_Remboursable_par_AMC

    '    'champ 6
    '    SGD_AjouterChamp(NumeroSession, Total_Remboursable_par_AMC)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 6:" + Total_Remboursable_par_AMC.ToString, "")
    '    CurrentFactureVitale.G1910C6 = Total_Remboursable_par_AMC

    'End Sub


    ''Groupe 3700 : Contexte de tarification
    'Public Sub groupe3700(ByVal NumeroSession As Integer, ByVal TopCMU As Boolean, ByVal TopMédecinRéférent As Boolean)
    '    SGD_AjouterGroupe(NumeroSession, 3700)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "3700")
    '    If TopCMU = False Then
    '        SGD_AjouterChamp(NumeroSession, "0")
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + "0", "")
    '    Else
    '        SGD_AjouterChamp(NumeroSession, "1")
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + "1", "")
    '    End If
    '    If TopMédecinRéférent = True Then
    '        SGD_AjouterChamp(NumeroSession, "O")
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "O", "")
    '    Else
    '        SGD_AjouterChamp(NumeroSession, "N")
    '        If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 2:" + "N", "")
    '    End If
    'End Sub

    ''Groupe 3730 : Paramètres de calcul STS
    'Public Sub groupe3730(ByVal NumeroSession As Integer, ByVal PMSS As String)
    '    SGD_AjouterGroupe(NumeroSession, 3730)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "", "3730")
    '    SGD_AjouterChamp(NumeroSession, PMSS)
    '    If Visu_API = True Then Technique_MAIN.LireSession_In_VersFichier(NumeroSession, "Formater_Facture_in.txt", "champ 1:" + PMSS, "")
    'End Sub

#End Region
#Region "module STS"
    Private Function Code_STS()

        If CurrentConvention.selected = False Then
            Return AMC_Code_Aiguillage_STS_TextBox.Text
        End If

        'CurrentConvention.selected = true

        If AMC_Code_Aiguillage_STS_TextBox.Text = "" And CurrentConvention.Code_aiguillage_STS = "" Then
            Return ""
        End If

        If AMC_Code_Aiguillage_STS_TextBox.Text <> "" And CurrentConvention.Code_aiguillage_STS = "" Then
            Return AMC_Code_Aiguillage_STS_TextBox.Text
        End If

        If AMC_Code_Aiguillage_STS_TextBox.Text = "" And CurrentConvention.Code_aiguillage_STS <> "" Then
            Return CurrentConvention.Code_aiguillage_STS
        End If

        'AMC_Code_Aiguillage_STS_TextBox.Text <> "" And CurrentConvention.Code_aiguillage_STS <> "" 

        If AMC_Code_Aiguillage_STS_TextBox.Text = CurrentConvention.Code_aiguillage_STS Then
            Return AMC_Code_Aiguillage_STS_TextBox.Text
        End If

        'AMC_Code_Aiguillage_STS_TextBox.Text <> CurrentConvention.Code_aiguillage_STS
        If AMC_Piècejustificative_ComboBox.SelectedIndex = 4 Then
            MsgBox("Le code aiguillage du support est différent du code aiguillage de la table," + Chr(10) + "soit le Professionnel de Santé met à jour la table des conventions," + Chr(10) + _
                   "soit il abandonne l’envoi d’un flux de données complémentaires.", MsgBoxStyle.Information)
            Return "False"
        End If

        'AMC_Piècejustificative_ComboBox.SelectedIndex <> 4

        If CurrentConvention.usage_attestation_papier = "0" Then
            MsgBox("Le code aiguillage STS du support est différent du code aiguillage STS de la table," + Chr(10) + "soit le Professionnel de Santé met à jour la table des conventions," + Chr(10) + _
          "soit il abandonne l’envoi d’un flux de données complémentaires.", MsgBoxStyle.Information)
            Return "False"
        End If

        If CurrentConvention.usage_attestation_papier = "1" Then
            If MsgBox("Le code aiguillage STS du support est différent du code aiguillage STS de la table," + Chr(10) + "envoi d'une DRE avec code aiguillage " + CurrentConvention.Code_aiguillage_STS + _
                   " (issu de la table des conventions)", 36) = MsgBoxResult.No Then
                Return "False"
            End If
        End If

        'CurrentConvention.usage_attestation_papier = "1" 

        Return CurrentConvention.Code_aiguillage_STS

    End Function


    Private Function STS() As Boolean

        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            Return True
        End If

        Dim code_aiguillage_STS As String = Code_STS()
        If code_aiguillage_STS = "False" Then
            Return False
        End If
        'If CurrentFactureVitale.TP_AMC = True Then
        If CheckBox_Facturation_AMC.Checked = True Then
            If Groupes_STS("Tarification", code_aiguillage_STS) = False Then
                Return False
            End If
            'current_formule_STS.selected = False

            ' STS_InitTrace("C:\TraceSTS.txt", "a", 6, 2)
            AfficheErreur(STS_Tarification_S("P", NuméroSessionSTS))
            '------------------------------------------------------------------------------------------------------------------------
            'reinitialise le tableau modifié par STS
            For j = 0 To tab_Lignes_Vente.Length - 1
                If UCase(Vente(VenteType.Index, j).Value.ToString) = "VENTE DIRECTE" Then
                    tab_Lignes_Vente(j).Ligne_traitée = True
                Else
                    tab_Lignes_Vente(j).Ligne_traitée = False
                End If
            Next
            '------------------------------------------------------------------------------------------------------------------------
            'Visu_API agrement CNDA
            If Visu_API = True Then
                Technique_MAIN.LireSession_Out_VersFichier2(NuméroSessionSTS, Application.StartupPath + "\traces\STS_Tarification_out.txt")
            End If
            Dim IdGroupeSuivant As UInt16
            Dim OccurrenceGroupeSuivant As UInt16
            Dim IdGroupeCourant As UInt16 = 0
            Dim OccurrenceGroupeCourant As UInt16 = 0

            '---------------------------------------------
            'cas de présence de code diagnostic STS (groupe 3750)
            ValeurChamp = "XXXXXX"
            TailleMax = 6
            If SGD_LireChamp(NuméroSessionSTS, 3750, 1, 1, ValeurChamp, TailleMax) = 0 Then 'présence d'au moins un groupe 3750 après la premère tarification
                Dim tab3750(3, 100) As String 'tableau pour les diagnostiques STS (valeur dans les groupes 3750)

                Dim appel_assistance_nécessaire(Nombre_de_Prestations) As Boolean
                For n = 0 To appel_assistance_nécessaire.Length - 1
                    appel_assistance_nécessaire(n) = False
                Next

                Dim Occurence_Grp3750 As Integer = 0
                ValeurChamp = "XXXXXX"
                TailleMax = 6
                While SGD_LireChamp(NuméroSessionSTS, 3750, Occurence_Grp3750 + 1, 1, ValeurChamp, TailleMax) = 0
                    tab3750(1, Occurence_Grp3750 + 1) = Mid(ValeurChamp, 1, TailleMax)
                    ValeurChamp = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
                    TailleMax = 1000
                    SGD_LireChamp(NuméroSessionSTS, 3750, Occurence_Grp3750 + 1, 2, ValeurChamp, TailleMax)
                    tab3750(2, Occurence_Grp3750 + 1) = Mid(ValeurChamp, 1, TailleMax)
                    ValeurChamp = "XXXX"
                    TailleMax = 4
                    SGD_LireChamp(NuméroSessionSTS, 3750, Occurence_Grp3750 + 1, 3, ValeurChamp, TailleMax)
                    tab3750(3, Occurence_Grp3750 + 1) = Mid(ValeurChamp, 1, TailleMax)
                    Occurence_Grp3750 = Occurence_Grp3750 + 1
                    ValeurChamp = "XXXXXX"
                    TailleMax = 6
                End While

                ReDim Preserve tab3750(3, Occurence_Grp3750)
                Dim retour_sortie As Boolean = True

                For i = 1 To Occurence_Grp3750
                    Select Case Mid(tab3750(1, i), 3, 4) 'analyse des codes diagnostics

                        Case "0001", "0002", "0003", "0004", "0005", "0101", "0102", "0104", "0105", "0106", "0108", "0110", "0112", "0113", "0203", "0204", "0301", "0207", "0208", "0212", "0213", _
                             "0214", "0217", "0218", "0300", "0301", "0306", "0308", "0310", "0313", "0314", "0316", "0317", "0318", "0403", "0406", "0407", "0408", "0409", "0411", "0412", "0413", _
                             "0415", "0418", "0421", "0422", "0423", "0502", "0505", "0507", "0511", "0513", "0514", "0515", "0516", "0517", "0519", "0521", "0522", "0523"
                            If Mid(tab3750(1, i), 1, 1) <> "1" Or (Config.STS_AfficheDiagNiv1 = True And Mid(tab3750(1, i), 1, 1) = "1") Then
                                If Val(tab3750(3, i)) <> 0 Then
                                    MsgBox("STS: " + Chr(10) + tab3750(1, i) + Chr(10) + "Prestation " + tab3750(3, i) + Chr(10) + tab3750(2, i))
                                Else
                                    MsgBox("STS: " + Chr(10) + tab3750(1, i) + Chr(10) + tab3750(2, i))
                                End If
                            End If
                            retour_sortie = False

                        Case "0100"
                            If Mid(tab3750(1, i), 1, 1) <> "1" Or (Config.STS_AfficheDiagNiv1 = True And Mid(tab3750(1, i), 1, 1) = "1") Then
                                If Val(tab3750(3, i)) <> 0 Then
                                    MsgBox("STS: " + Chr(10) + "Prestation " + tab3750(3, i) + Chr(10) + tab3750(1, i) + Chr(10) + tab3750(2, i))
                                Else
                                    MsgBox("STS: " + Chr(10) + tab3750(1, i) + Chr(10) + tab3750(2, i))
                                End If
                            End If
                            Return True

                        Case "0107", "0304", "0305", "0307", "0309", "0311", "0312", "0315", "0401", "4004", "0405", "0410", "0414", "0416", "0417", "0419", "0500", "0503", "0504", "0506", "0524"
                            If Mid(tab3750(1, i), 1, 1) <> "1" Or (Config.STS_AfficheDiagNiv1 = True And Mid(tab3750(1, i), 1, 1) = "1") Then
                                If Val(tab3750(3, i)) <> 0 Then
                                    MsgBox("STS: " + Chr(10) + "Prestation " + tab3750(3, i) + Chr(10) + tab3750(1, i) + Chr(10) + tab3750(2, i))
                                Else
                                    MsgBox("STS: " + Chr(10) + tab3750(1, i) + Chr(10) + tab3750(2, i))
                                End If
                            End If

                        Case "0103", "0200", "0201", "0202", "0205", "0206", "0303"
                            If MsgBox(tab3750(2, i) + Chr(10) + "acte " + tab3750(3, i) + Chr(10) + "Choisir une formule?", 36) = MsgBoxResult.Yes Then
                                If Val(tab3750(3, i)) = 0 Then
                                    For j = 0 To appel_assistance_nécessaire.Length - 1
                                        appel_assistance_nécessaire(j) = True
                                    Next
                                    Exit For ' For i = 1 To Occurence_Grp3750
                                Else
                                    appel_assistance_nécessaire(Val(tab3750(3, i))) = True
                                End If
                            Else
                                retour_sortie = False
                            End If

                        Case "0209", "0210", "0211", "0216", "0402", "0420"
                            If Mid(tab3750(1, i), 1, 1) <> "1" Or (Config.STS_AfficheDiagNiv1 = True And Mid(tab3750(1, i), 1, 1) = "1") Then
                                If Val(tab3750(3, i)) <> 0 Then
                                    MsgBox("STS: " + Chr(10) + "Prestation " + tab3750(3, i) + Chr(10) + tab3750(1, i) + Chr(10) + tab3750(2, i))
                                Else
                                    MsgBox("STS: " + Chr(10) + tab3750(1, i) + Chr(10) + tab3750(2, i))
                                End If
                            End If
                            If Val(tab3750(3, i)) = 0 Then
                                For j = 0 To appel_assistance_nécessaire.Length - 1
                                    appel_assistance_nécessaire(j) = True
                                Next
                                Exit For ' For i = 1 To Occurence_Grp3750
                            Else
                                appel_assistance_nécessaire(Val(tab3750(3, i))) = True
                            End If

                        Case Else
                            If Mid(tab3750(1, i), 1, 1) <> "1" Or (Config.STS_AfficheDiagNiv1 = True And Mid(tab3750(1, i), 1, 1) = "1") Then
                                If Val(tab3750(3, i)) <> 0 Then
                                    MsgBox("STS: " + Chr(10) + "Prestation " + tab3750(3, i) + Chr(10) + tab3750(1, i) + Chr(10) + tab3750(2, i) + Chr(10) + tab3750(1, i))
                                Else
                                    MsgBox("STS: " + Chr(10) + tab3750(1, i) + Chr(10) + tab3750(2, i))
                                End If
                            End If

                    End Select

                Next

                If retour_sortie = False Then
                    Return False
                End If

                '_____________________________________________________________________________________________________________________________
                'APPEL A L'ASSISTANCE
                For n = 0 To appel_assistance_nécessaire.Length - 1

                    If appel_assistance_nécessaire(n) = True Then
                        ReDim Tab_Valeur_STS(0)
                        ReDim tab_current_formule_STS(0)
                        Groupes_STS("Assistance", code_aiguillage_STS)
                        'STS_InitTrace("C:\TraceSTS.txt", "a", 6, 2)
                        AfficheErreur(STS_Assistance_S("E", 0, NuméroSessionSTS))
                        '------------------------------------------------------------------------------------------------------------------------
                        'reinitialise le tableau modifié par STS
                        For j = 0 To tab_Lignes_Vente.Length - 1
                            If UCase(Vente(VenteType.Index, j).Value.ToString) = "VENTE DIRECTE" Then
                                tab_Lignes_Vente(j).Ligne_traitée = True
                            Else
                                tab_Lignes_Vente(j).Ligne_traitée = False
                            End If
                        Next
                        '------------------------------------------------------------------------------------------------------------------------
                        'Visu_API agrement CNDA
                        If Visu_API = True Then
                            Technique_MAIN.LireSession_Out_VersFichier2(NuméroSessionSTS, Application.StartupPath + "\traces\STS_Assistance_out.txt")
                        End If
                        '-----------------------------------------------------------
                        If SGD_LireChamp(NuméroSessionSTS, 3750, 1, 1, ValeurChamp, TailleMax) = 0 Then 'présence d'au moins un groupe 3750 en retour de l'assistance
                            ReDim tab3750(3, 100)  'tableau pour les diagnostiques STS (valeur dans les groupes 3750)

                            Occurence_Grp3750 = 0
                            ValeurChamp = "XXXXXX"
                            TailleMax = 6
                            While SGD_LireChamp(NuméroSessionSTS, 3750, Occurence_Grp3750 + 1, 1, ValeurChamp, TailleMax) = 0
                                tab3750(1, Occurence_Grp3750 + 1) = Mid(ValeurChamp, 1, TailleMax)
                                ValeurChamp = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
                                TailleMax = 1000
                                SGD_LireChamp(NuméroSessionSTS, 3750, Occurence_Grp3750 + 1, 2, ValeurChamp, TailleMax)
                                tab3750(2, Occurence_Grp3750 + 1) = Mid(ValeurChamp, 1, TailleMax)
                                ValeurChamp = "XXXX"
                                TailleMax = 4
                                SGD_LireChamp(NuméroSessionSTS, 3750, Occurence_Grp3750 + 1, 3, ValeurChamp, TailleMax)
                                tab3750(3, Occurence_Grp3750 + 1) = Mid(ValeurChamp, 1, TailleMax)
                                Occurence_Grp3750 = Occurence_Grp3750 + 1
                                ValeurChamp = "XXXXXX"
                                TailleMax = 6
                            End While

                            ReDim Preserve tab3750(3, Occurence_Grp3750)
                            '-----------------------------------------------------------


                            For i = 1 To Occurence_Grp3750
                                If Mid(tab3750(1, i), 1, 1) <> "1" Or (Config.STS_AfficheDiagNiv1 = True And Mid(tab3750(1, i), 1, 1) = "1") Then 'pour ne pas afficher diag de niveau 1 en fonction de config.xml
                                    Select Case Mid(tab3750(1, i), 3, 4) 'analyse des codes diagnostics

                                        Case "0109"
                                            If Config.STS_AfficheDiagNiv1 = True Then
                                                MsgBox("STS Assistance: " + Chr(10) + "Prestation " + tab3750(3, i) + Chr(10) + tab3750(2, i))
                                            End If
                                            Return True

                                        Case "0103", "0200", "0201", "0202", "0205", "0206", "0303", "0209", "0210", "0211", "0216", "0402", "0420"
                                            current_formule_STS.num_prestation_de_rattachement = tab3750(3, i)
                                            STS_Choix_Formule_STS.ShowDialog()
                                            If current_formule_STS.selected = False Then
                                                Return False
                                            End If
                                            If current_formule_STS.pour_toutes_prestations = True Then
                                                ReDim tab_current_formule_STS(Nombre_de_Prestations)
                                                For j = 1 To Nombre_de_Prestations
                                                    tab_current_formule_STS(j) = current_formule_STS
                                                    tab_current_formule_STS(j).num_prestation_de_rattachement = j
                                                Next
                                                Exit For
                                            Else
                                                ReDim Preserve tab_current_formule_STS(i)
                                                tab_current_formule_STS(i) = current_formule_STS
                                            End If

                                        Case "0401"

                                        Case Else
                                            If Val(tab3750(3, i)) <> 0 Then
                                                MsgBox("STS Assistance: " + Chr(10) + "Prestation " + tab3750(3, i) + Chr(10) + tab3750(2, i))
                                            Else
                                                MsgBox("STS Assistance: " + tab3750(2, i))
                                            End If

                                    End Select
                                End If
                            Next
                        Else

                            ReDim tab_current_formule_STS(Nombre_de_Prestations)
                            Dim i = 1
                            While i <= Nombre_de_Prestations
                                If appel_assistance_nécessaire(i) = True Then
                                    current_formule_STS.num_prestation_de_rattachement = i
                                    STS_Choix_Formule_STS.ShowDialog()
                                    If current_formule_STS.selected = False Then
                                        ReDim tab_current_formule_STS(0)
                                        Exit Function
                                    Else
                                        tab_current_formule_STS(i) = current_formule_STS
                                    End If
                                End If
                                If current_formule_STS.pour_toutes_prestations = True Then
                                    For j = 1 To Nombre_de_Prestations
                                        If appel_assistance_nécessaire(j) = True Then
                                            tab_current_formule_STS(j) = current_formule_STS
                                            tab_current_formule_STS(j).num_prestation_de_rattachement = j
                                        End If
                                    Next
                                    i = Nombre_de_Prestations + 1
                                End If
                                i = i + 1
                            End While
                        End If
                        Groupes_STS("Tarification", code_aiguillage_STS)
                        AfficheErreur(STS_Tarification_S("P", NuméroSessionSTS))
                        '------------------------------------------------------------------------------------------------------------------------
                        'Visu_API agrement CNDA
                        If Visu_API = True Then
                            Technique_MAIN.LireSession_Out_VersFichier2(NuméroSessionSTS, Application.StartupPath + "\traces\STS_Tarification_après_Assistance_out.txt")
                        End If
                        '------------------------------------------------------------------------------------------------------------------------
                        'reinitialise le tableau modifié par STS
                        For j = 0 To tab_Lignes_Vente.Length - 1
                            If UCase(Vente(VenteType.Index, j).Value.ToString) = "VENTE DIRECTE" Then
                                tab_Lignes_Vente(j).Ligne_traitée = True
                            Else
                                tab_Lignes_Vente(j).Ligne_traitée = False
                            End If
                        Next
                        '------------------------------------------------------------------------------------------------------------------------
                        ValeurChamp = "@@@@@@"
                        TailleMax = 6
                        If SGD_LireChamp(NuméroSessionSTS, 3750, 1, 1, ValeurChamp, TailleMax) = 0 Then 'présence d'au moins un groupe 3750 en retour de la tarification(apres assistance)
                            Occurence_Grp3750 = 0
                            While SGD_LireChamp(NuméroSessionSTS, 3750, Occurence_Grp3750 + 1, 1, ValeurChamp, TailleMax) = 0
                                If Mid(ValeurChamp, 1, 1) <> "1" Or Config.STS_AfficheDiagNiv1 = True Then 'pour ne pas afficher diag de niveau 1 en fonction de config.xml
                                    Dim libellé, num_prestation As String
                                    libellé = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
                                    TailleMax = 200
                                    SGD_LireChamp(NuméroSessionSTS, 3750, Occurence_Grp3750 + 1, 2, libellé, TailleMax)
                                    libellé = Mid(libellé, 1, TailleMax)
                                    num_prestation = "1234"
                                    TailleMax = 4
                                    SGD_LireChamp(NuméroSessionSTS, 3750, Occurence_Grp3750 + 1, 3, num_prestation, TailleMax)
                                    num_prestation = Mid(num_prestation, 1, TailleMax)
                                    If Val(num_prestation) <> 0 Then
                                        MsgBox("STS: " + Chr(10) + "Prestation " + num_prestation + Chr(10) + libellé)
                                    Else
                                        MsgBox("STS: " + libellé)
                                    End If
                                End If
                                If Mid(ValeurChamp, 1, 1) = "3" Then
                                    retour_sortie = False
                                End If

                                Occurence_Grp3750 = Occurence_Grp3750 + 1
                                ValeurChamp = "@@@@@@"
                                TailleMax = 6
                            End While

                            If retour_sortie = False Then
                                Return False
                            End If

                        End If

                        Exit For

                    End If '  If appel_assistance_nécessaire = True Then
                Next



            End If 'If SGD_LireChamp(NuméroSessionSTS, 3750, 1, 1, ValeurChamp, TailleMax) = 0 Then 'présence d'au moins un groupe 3750 après la premère tarification
            'FIN 'APPEL A L'ASSISTANCE
            '_____________________________________________________________________________________________________________________________




            IdGroupeCourant = 0
            OccurrenceGroupeCourant = 0
            Dim last_occurence As Integer = 0
            Dim last_groupe As Integer = 0

            While SGD_LireGroupeSuivant(NuméroSessionSTS, IdGroupeCourant, OccurrenceGroupeCourant, IdGroupeSuivant, OccurrenceGroupeSuivant) = 0
                IdGroupeCourant = IdGroupeSuivant

                OccurrenceGroupeCourant = OccurrenceGroupeSuivant

                Dim NumChamp As UInt16 = 1
                Dim ValeurChamp As String = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
                Dim TailleMax As Integer = 80
                Dim NumPrestation As Integer = 0
                Dim retour_Groupe_3750_Diagnostic_STS As String = ""

                While SGD_LireChamp(NuméroSessionSTS, IdGroupeCourant, OccurrenceGroupeCourant, NumChamp, ValeurChamp, TailleMax) = 0


                    ValeurChamp = Mid(ValeurChamp, 1, TailleMax).ToString

                    If NumChamp = "1" Then
                        NumPrestation = Val(ValeurChamp)
                    End If
                    If IdGroupeCourant <= 2200 And ValeurChamp <> "" Then
                        ReDim Preserve Tab_Valeur_STS(Tab_Valeur_STS.Length)
                        Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).groupe = IdGroupeCourant
                        last_groupe = IdGroupeCourant
                        Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).occurence = OccurrenceGroupeCourant
                        last_occurence = OccurrenceGroupeCourant
                        Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).champ = NumChamp
                        Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).valeur = ValeurChamp
                        Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).NumPrestation = NumPrestation.ToString

                    ElseIf IdGroupeCourant = 3710 Then
                        If NumChamp = "1" Then
                            ReDim Preserve Tab_Valeur_STS(Tab_Valeur_STS.Length)
                            Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).groupe = IdGroupeCourant
                            Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).NumPrestation = NumPrestation.ToString
                        ElseIf NumChamp = "2" Then
                            Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).valeur = "Formule " + ValeurChamp
                        ElseIf Val(NumChamp) > 3 And Val(NumChamp) Mod 2 = 0 Then
                            Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).valeur = Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).valeur + ", P" + ValeurChamp
                        ElseIf Val(NumChamp) > 3 And Val(NumChamp) Mod 2 = 1 Then
                            Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).valeur = Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).valeur + "=" + ValeurChamp
                        End If

                    ElseIf IdGroupeCourant = 3715 And NumChamp = 2 Then
                        ReDim Preserve Tab_Valeur_STS(Tab_Valeur_STS.Length)
                        Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).groupe = IdGroupeCourant
                        Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).champ = NumChamp
                        Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).valeur = ValeurChamp
                        Tab_Valeur_STS(Tab_Valeur_STS.Length - 1).NumPrestation = NumPrestation.ToString


                    ElseIf IdGroupeCourant = 3790 Then
                        If NumChamp > 1 Then
                            For i = 0 To Tab_Valeur_STS.Length - 1
                                If Tab_Valeur_STS(i).occurence = last_occurence And Tab_Valeur_STS(i).groupe = last_groupe And Tab_Valeur_STS(i).champ = NumChamp - 1 Then
                                    Tab_Valeur_STS(i).affichage = Mid(ValeurChamp, 1, 1)
                                    Tab_Valeur_STS(i).modification = Mid(ValeurChamp, 2, 1)
                                    Exit For
                                End If

                            Next

                        End If

                    ElseIf IdGroupeCourant = 3750 Then

                        Select Case NumChamp
                            Case 1
                                retour_Groupe_3750_Diagnostic_STS = "STS: Code Diagnostic:" + ValeurChamp + Chr(10)
                            Case 2
                                retour_Groupe_3750_Diagnostic_STS = retour_Groupe_3750_Diagnostic_STS + "Libellé:" + ValeurChamp + Chr(10)
                            Case 3
                                retour_Groupe_3750_Diagnostic_STS = retour_Groupe_3750_Diagnostic_STS + "N° de la prestation de rattachement: " + ValeurChamp + Chr(10)
                                MsgBox(retour_Groupe_3750_Diagnostic_STS, MsgBoxStyle.Information)
                        End Select

                    End If
                    ValeurChamp = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
                    TailleMax = 80
                    NumChamp = NumChamp + 1
                End While
            End While
            '_____________________________________________________________________________________________________________________________
            'reinitialise le tableau modifié par STS
            For j = 0 To tab_Lignes_Vente.Length - 1
                If UCase(Vente(VenteType.Index, j).Value.ToString) = "VENTE DIRECTE" Then
                    tab_Lignes_Vente(j).Ligne_traitée = True
                Else
                    tab_Lignes_Vente(j).Ligne_traitée = False
                End If
            Next
            STS_Affiche_sortie.ShowDialog()
            Return STS_Affiche_sortie_result

        End If



        Return True
    End Function

    Private Function Groupes_STS(ByVal mode As String, ByVal code_aiguillage_STS As String) As Boolean
        '____________________________________________________________________________________________________
        'Trace
        Trace_Reset_compteur()

        FichierTrace = Application.StartupPath + "\traces\STS_" + mode + "_in.txt"
        '____________________________________________________________________________________________________
        STS_InitLIB()
        SGD_ReserverSession(20000, NuméroSessionSTS)

        'copie session CPS
        Dim IdGroupeSuivant As UInt16
        Dim OccurrenceGroupeSuivant As UInt16
        Dim IdGroupeCourant As UInt16 = 0
        Dim OccurrenceGroupeCourant As UInt16 = 0
        Dim CompteurChampsTotal As Integer = 0
        While SGD_LireGroupeSuivant(NumeroSessionCPS, IdGroupeCourant, OccurrenceGroupeCourant, IdGroupeSuivant, OccurrenceGroupeSuivant) = 0
            SGD_AjouterGroupe_Tracé(NuméroSessionSTS, IdGroupeSuivant, Visu_API, FichierTrace)
            IdGroupeCourant = IdGroupeSuivant
            OccurrenceGroupeCourant = OccurrenceGroupeSuivant
            Dim i As UInt16 = 1
            Dim ValeurChamp As String = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
            Dim TailleMax As Integer = 80
            While SGD_LireChamp(NumeroSessionCPS, IdGroupeCourant, OccurrenceGroupeCourant, i, ValeurChamp, TailleMax) = 0
                CompteurChampsTotal = CompteurChampsTotal + 1
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, Mid(ValeurChamp, 1, TailleMax), Visu_API, FichierTrace)
                ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
                TailleMax = 80
                i = i + 1
            End While
        End While

        'copie session Vitale
        'groupe 101
        SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 101, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G101C1, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G101C2, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G101C3, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G101C4, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G101C5, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G101C6, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G101C7, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G101C8, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G101C9, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G101C10, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G101C11, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G101C12, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G101C13, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G101C14, Visu_API, FichierTrace)

        'groupe 102
        'If SGD_LireChamp(NumeroSessionVitale, 102, 1, 1, ValeurChamp, TailleMax) = 0 Then
        If CurrentBenéficiaire.G102C1 <> "" Then
            SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 102, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G102C1, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G102C2, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G102C3, Visu_API, FichierTrace)
        End If

        'groupe 103
        If CurrentBenéficiaire.G103C1 <> "" Then
            SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 103, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G103C1, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G103C2, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G103C3, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G103C4, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G103C5, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G103C6, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G103C7, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G103C8, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G103C9, Visu_API, FichierTrace)
        End If

        'groupe 104
        SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 104, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C1, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C2, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C3, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C4, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C5, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C6, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C7, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C8, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C9, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C10, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C11, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C12, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C13, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C14, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C15, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C16, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C17, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G104C18, Visu_API, FichierTrace)

        'groupes 106
        For i = 0 To 6
            If CurrentBenéficiaire.G106C3(i) <> "" Then
                SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 106, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G106C1(i), Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G106C2(i), Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G106C3(i), Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G106C4(i), Visu_API, FichierTrace)
            End If
        Next



        '-----------------------------------------------------------------------------------------------------------------------
        'données assurance complémentaire
        If AMC_Piècejustificative_ComboBox.SelectedIndex = 4 And CurrentConvention.selected = False Then
            'groupes 107
            If CurrentBenéficiaire.G107C1 <> "" Then
                SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 107, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G107C1, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G107C2, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G107C3, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G107C4, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G107C5, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, code_aiguillage_STS, Visu_API, FichierTrace)
            End If

            'groupes 108
            For i = 0 To 2
                If CurrentBenéficiaire.G108C1(i) <> "" Or CurrentBenéficiaire.G108C2(i) <> "" Then
                    SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 108, Visu_API, FichierTrace)
                    SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G108C1(i), Visu_API, FichierTrace)
                    SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G108C2(i), Visu_API, FichierTrace)
                End If
            Next

            'groupes 109
            If CurrentBenéficiaire.G109C1 <> "" Then
                SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 109, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G109C1, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G109C2, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G109C3, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G109C4, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G109C5, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G109C6, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G109C7, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G109C8, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G109C9, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, code_aiguillage_STS, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G109C11, Visu_API, FichierTrace)
                SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G109C12, Visu_API, FichierTrace)
            End If

        ElseIf CurrentConvention.selected = True And CurrentFactureVitale.Mode_Gestion = "RO" Then
            'groupes 107
            SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 107, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.AMC_NumMutuelle, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, "", Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.AMC_Indicateurdetrairement, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, "", Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentConvention.Num_AMC, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, code_aiguillage_STS, Visu_API, FichierTrace)

        ElseIf CurrentConvention.selected = True And CurrentFactureVitale.Mode_Gestion = "" Then
            'groupes 109
            SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 109, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.AMC_NumOrganisme, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, "", Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.AMC_NumAdherent, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.AMC_Indicateurdetrairement, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, "", Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, "", Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentConvention.Code_routage, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentConvention.identifiant_hôte, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentConvention.nom_domaine, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, code_aiguillage_STS, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, "", Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, "", Visu_API, FichierTrace)

        Else

            'groupes 109
            SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 109, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.AMC_NumOrganisme, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, "", Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.AMC_NumAdherent, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.AMC_Indicateurdetrairement, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, "", Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, "", Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, AMC_CodeRoutage_TextBox.Text, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, AMC_IdHote_TextBox.Text, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, AMC_NomDomaine_TextBox.Text, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, code_aiguillage_STS, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, "", Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, "", Visu_API, FichierTrace)
        End If

        If CurrentBenéficiaire.G111C1 <> "" And CurrentFactureVitale.TP_AMC = True Then
            SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 111, Visu_API, FichierTrace)
            SGD_AjouterChamp_Tracé(NuméroSessionSTS, CurrentBenéficiaire.G111C1, Visu_API, FichierTrace)
        End If
        'FIN  données assurance complémentaire
        '-----------------------------------------------------------------------------------------------------------------------


        Dim NumFacture As Integer = 999




        'groupe 1110 à 1410
        groupe1110(NuméroSessionSTS, NumFacture.ToString)
        groupe1120(NuméroSessionSTS)
        groupe1130(NuméroSessionSTS)
        groupe1140(NuméroSessionSTS)
        groupe1160(NuméroSessionSTS)
        groupe1211_1213_1214(NuméroSessionSTS, CurrentBenéficiaire.IDPrescripteur, DatePrecription.Value)
        groupe1230(NuméroSessionSTS)
        If groupe1310(NuméroSessionSTS) = False Then
            Me.Enabled = True
            Exit Function
        End If
        CurrentBenéficiaire.AMC_NumOrganisme = AMC_NumAMC_TextBox.Text
        CurrentBenéficiaire.AMC_NumAdherent = AMC_Numadhérent_TextBox.Text
        'If CurrentFactureVitale.TP_AMC = True Then
        If CheckBox_Facturation_AMC.Checked = True Then
            If groupe1321_STS(NuméroSessionSTS) = False Then
                Return False
            End If
            groupe1330(NuméroSessionSTS)
        End If
        groupe1410(NuméroSessionSTS)
        If ModeSecur = "5" Then
            groupe1420(NuméroSessionSTS)
        End If
        groupe1440(NuméroSessionSTS)
        'groupe 1511-1512-1513
        Select Case NatureAssurance_Button.Text
            Case "MALADIE"
                groupe1511(NuméroSessionSTS)
            Case "MATERNITE"
                groupe1512(NuméroSessionSTS, NatureAssuranceDateTimePicker.Value)
            Case "ACCIDENT DU TRAVAIL"
                If current_AT.selected = False Or groupe1513(NuméroSessionSTS, current_AT.DateAT, current_AT.NumAT, current_AT.CléAT) = False Then
                    Exit Function
                End If
            Case "PREVENTION"
                groupe1514(NumeroSessionFacture)
            Case "SMG"
                groupe1515(NumeroSessionFacture)
            Case Else
                MsgBox("ERREUR NATURE ASSURANCE", MsgBoxStyle.Critical)
                SGD_LibererSession(NuméroSessionSTS)
                Exit Function
        End Select

        'groupe 1610 et (1730 ou 1740)
        'Dim Occurence1610 As Integer = 0
        Nombre_de_Prestations = 0
        Dim Total_des_Montants_Facturés As Double = 0
        Dim Total_Remboursable_par_AMO As Double = 0
        Dim Total_Théorique_Remboursable_par_AMC As Double = 0
        Dim Total_Remboursable_par_AMC As Double = 0
        For i = 0 To Vente.RowCount - 2 'parcours les lignes du tableau(graphique)vente
            If tab_Lignes_Vente(i).Ligne_traitée = False Then 'si la ligne du tableau(graphique)vente n'a pas encore étée traitée
                Select Case Vente(VenteType.Index, i).Value.ToString 'determine les lignes pour lesquelles il faut etablire une FSE
                    'Case "Vente Directe"
                    '    VenteDirecte(i)
                    '    lignestraitées(i) = True
                    '    SauvegardeActes(i, "") 'enregistrements actes bdd
                    Case "assurance", "ALD", "PREV", "SP"
                        'groupe 1610,1730,1740,1820,1840,1850,
                        Dim TypeNomenclature As String
                        TypeNomenclature = Me.CodePrestationsTableAdapter.SelectTypeNomenclatureByCodeActe(Vente(VenteCodeActe.Index, i).Value.ToString)
                        Select Case TypeNomenclature
                            Case "LPP"
                                If GrouperLPPToolStripMenuItem.Checked = True Then
                                    groupe1610LPP_STS_regroup(NuméroSessionSTS, i, Nombre_de_Prestations, Total_des_Montants_Facturés, Total_Remboursable_par_AMO, Total_Théorique_Remboursable_par_AMC, Total_Remboursable_par_AMC)
                                Else
                                    groupe1610LPP_STS(NuméroSessionSTS, i, Nombre_de_Prestations, Total_des_Montants_Facturés, Total_Remboursable_par_AMO, Total_Théorique_Remboursable_par_AMC, Total_Remboursable_par_AMC)
                                End If
                                ReDim CurrentFactureVitale.TabLigneFacture(i).DétailLpp(0)
                                groupe1820(NuméroSessionSTS, Nombre_de_Prestations, Vente(VenteType.Index, i).Value.ToString)
                                groupe1840(NuméroSessionSTS, Nombre_de_Prestations)
                                'If EntentePréalableBoolean = True Then
                                If tab_Lignes_Vente(i).Entente_Préalable_code_accord <> "" Then
                                    groupe1840(NuméroSessionSTS, Nombre_de_Prestations) ', i)
                                End If
                                If RenouvellementToolStripTextBox.Text <> "0" Then
                                    groupe1850(NuméroSessionSTS, Nombre_de_Prestations, RenouvellementToolStripTextBox.Text)
                                End If
                                groupe2000(NuméroSessionSTS, Nombre_de_Prestations, Vente(VenteCodeActe.Index, i).Value.ToString)
                                groupe2030(NuméroSessionSTS, Nombre_de_Prestations)
                                If GrouperLPPToolStripMenuItem.Checked = True Then
                                    'regroupement Même actes LPP
                                    Dim Occurence1730 = 0
                                    For j = 0 To Vente.RowCount - 2 'parcours les lignes du tableau(graphique)vente pour trouver même code acte
                                        If Vente(VenteCodeActe.Index, i).Value = Vente(VenteCodeActe.Index, j).Value And Vente(VenteType.Index, i).Value = Vente(VenteType.Index, j).Value Then
                                            groupe1730_regroup(NuméroSessionSTS, Nombre_de_Prestations, j, Occurence1730)
                                            tab_Lignes_Vente(j).Ligne_traitée = True
                                            If Val(Occurence1730) > 10 Then
                                                MsgBox("Plus de 10 lignes avec code prestations " + Vente(VenteCodeActe.Index, i).Value.ToString + Chr(10) + "la facture ne peut pas être sécurisée")
                                                Return False
                                            End If
                                        End If
                                    Next 'parcours les lignes du tableau(graphique)vente pour trouver même code acte
                                Else
                                    If Vente(VenteLPP.Index, i).Value.ToString <> "" Then
                                        groupe1730(NuméroSessionSTS, Nombre_de_Prestations, i)
                                    End If
                                End If
                                tab_Lignes_Vente(i).Ligne_traitée = True
                              
                                For j = 1 To tab_current_formule_STS.Length - 1
                                    If Val(tab_current_formule_STS(j).num_prestation_de_rattachement) = Val(Nombre_de_Prestations) Then
                                        SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 3710, Visu_API, FichierTrace)
                                        SGD_AjouterChamp_Tracé(NuméroSessionSTS, tab_current_formule_STS(j).num_prestation_de_rattachement, Visu_API, FichierTrace)
                                        SGD_AjouterChamp_Tracé(NuméroSessionSTS, tab_current_formule_STS(j).Numéro, Visu_API, FichierTrace)
                                        CurrentFactureVitale.TabLigneFacture(Val(Nombre_de_Prestations)).G3710C2 = tab_current_formule_STS(j).Numéro
                                        SGD_AjouterChamp_Tracé(NuméroSessionSTS, tab_current_formule_STS(j).nombre_de_paramètres, Visu_API, FichierTrace)
                                        CurrentFactureVitale.TabLigneFacture(Val(Nombre_de_Prestations)).G3710C3 = tab_current_formule_STS(j).nombre_de_paramètres
                                        If Val(tab_current_formule_STS(j).nombre_de_paramètres) > 0 Then
                                            CurrentFactureVitale.TabLigneFacture(tab_current_formule_STS(j).num_prestation_de_rattachement).G3710_Paramètes = ""
                                            For p = 1 To tab_current_formule_STS(j).paramètres.Length - 1
                                                SGD_AjouterChamp_Tracé(NuméroSessionSTS, tab_current_formule_STS(j).paramètres(p).numéro, Visu_API, FichierTrace)


                                                ''-----------------
                                                'MsgBox(CurrentFactureVitale.TabLigneFacture(Val(Nombre_de_Prestations)).G3710_Paramètes.ToString)
                                                'MsgBox(CurrentFactureVitale.TabLigneFacture(tab_current_formule_STS(j).paramètres(p).numéro.ToString))
                                                CurrentFactureVitale.TabLigneFacture(Val(Nombre_de_Prestations)).G3710_Paramètes = _
                                                CurrentFactureVitale.TabLigneFacture(Val(Nombre_de_Prestations)).G3710_Paramètes.ToString + "\" + tab_current_formule_STS(j).paramètres(p).numéro.ToString + ":"
                                                '-----------------
                                                SGD_AjouterChamp_Tracé(NuméroSessionSTS, tab_current_formule_STS(j).paramètres(p).valeur_affectée, Visu_API, FichierTrace)
                                                CurrentFactureVitale.TabLigneFacture(Val(Nombre_de_Prestations)).G3710_Paramètes = _
                                                CurrentFactureVitale.TabLigneFacture(Val(Nombre_de_Prestations)).G3710_Paramètes + tab_current_formule_STS(j).paramètres(p).valeur_affectée
                                            Next
                                        End If

                                    End If
                                Next

                            Case Else 'Médicaments
                                groupe1610Médicaments_STS(NuméroSessionSTS, i, Nombre_de_Prestations, Total_des_Montants_Facturés, Total_Remboursable_par_AMO, Total_Théorique_Remboursable_par_AMC, Total_Remboursable_par_AMC)
                                groupe1820(NuméroSessionSTS, Nombre_de_Prestations, Vente(VenteType.Index, i).Value.ToString)
                                groupe1840(NuméroSessionSTS, Nombre_de_Prestations)
                                If RenouvellementToolStripTextBox.Text <> "0" Then
                                    groupe1850(NuméroSessionSTS, Nombre_de_Prestations, RenouvellementToolStripTextBox.Text)
                                End If
                                groupe2000(NuméroSessionSTS, Nombre_de_Prestations, Vente(VenteCodeActe.Index, i).Value.ToString)
                                groupe2030(NuméroSessionSTS, Nombre_de_Prestations)
                                groupe1740(NuméroSessionSTS, Nombre_de_Prestations, i)

                                For j = 1 To tab_current_formule_STS.Length - 1
                                    If Val(tab_current_formule_STS(j).num_prestation_de_rattachement) = Val(Nombre_de_Prestations) Then
                                        SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 3710, Visu_API, FichierTrace)
                                        SGD_AjouterChamp_Tracé(NuméroSessionSTS, tab_current_formule_STS(j).num_prestation_de_rattachement, Visu_API, FichierTrace)
                                        SGD_AjouterChamp_Tracé(NuméroSessionSTS, tab_current_formule_STS(j).Numéro, Visu_API, FichierTrace)
                                        CurrentFactureVitale.TabLigneFacture(Val(Nombre_de_Prestations)).G3710C2 = tab_current_formule_STS(j).Numéro '''''''
                                        SGD_AjouterChamp_Tracé(NuméroSessionSTS, tab_current_formule_STS(j).nombre_de_paramètres, Visu_API, FichierTrace)
                                        CurrentFactureVitale.TabLigneFacture(Val(Nombre_de_Prestations)).G3710C3 = tab_current_formule_STS(j).nombre_de_paramètres

                                        If Val(tab_current_formule_STS(j).nombre_de_paramètres) > 0 Then
                                            CurrentFactureVitale.TabLigneFacture(tab_current_formule_STS(j).num_prestation_de_rattachement).G3710_Paramètes = ""
                                            For p = 1 To tab_current_formule_STS(j).paramètres.Length - 1
                                                SGD_AjouterChamp_Tracé(NuméroSessionSTS, tab_current_formule_STS(j).paramètres(p).numéro, Visu_API, FichierTrace)
                                                CurrentFactureVitale.TabLigneFacture(Val(Nombre_de_Prestations)).G3710_Paramètes = _
                                                CurrentFactureVitale.TabLigneFacture(Val(Nombre_de_Prestations)).G3710_Paramètes.ToString + "\" + tab_current_formule_STS(j).paramètres(p).numéro.ToString + ":"
                                                SGD_AjouterChamp_Tracé(NuméroSessionSTS, tab_current_formule_STS(j).paramètres(p).valeur_affectée, Visu_API, FichierTrace)
                                                CurrentFactureVitale.TabLigneFacture(Val(Nombre_de_Prestations)).G3710_Paramètes = _
                                                CurrentFactureVitale.TabLigneFacture(Val(Nombre_de_Prestations)).G3710_Paramètes + tab_current_formule_STS(j).paramètres(p).valeur_affectée

                                            Next
                                        End If

                                    End If
                                Next
                                'End If
                                '-------------------------------------------------------
                                tab_Lignes_Vente(i).Ligne_traitée = True

                        End Select
                End Select 'determine les lignes pour lesquelles il faut etablire une FSE
            End If
        Next 'parcours les lignes du tableau(graphique)vente

        'groupe1910
        groupe1910_STS(NuméroSessionSTS, Nombre_de_Prestations, Total_des_Montants_Facturés, Total_Remboursable_par_AMO.ToString, Total_Théorique_Remboursable_par_AMC, Total_Remboursable_par_AMC)

        ''groupe3720
        'If tab_current_formule_STS.Length = 1 And current_formule_STS.selected = True Then
        '    SGD_AjouterGroupe_Tracé(NuméroSessionSTS, 3720, Visu_API, FichierTrace)
        '    SGD_AjouterChamp_Tracé(NuméroSessionSTS, current_formule_STS.Numéro, Visu_API, FichierTrace)
        '    SGD_AjouterChamp_Tracé(NuméroSessionSTS, current_formule_STS.nombre_de_paramètres, Visu_API, FichierTrace)
        '    If Val(current_formule_STS.nombre_de_paramètres) > 0 Then
        '        For p = 1 To current_formule_STS.paramètres.Length - 1
        '            SGD_AjouterChamp_Tracé(NuméroSessionSTS, current_formule_STS.paramètres(p).numéro, Visu_API, FichierTrace)
        '            SGD_AjouterChamp_Tracé(NuméroSessionSTS, current_formule_STS.paramètres(p).valeur_affectée, Visu_API, FichierTrace)
        '        Next
        '    End If
        'End If

        'groupe 3700
        groupe3700(NuméroSessionSTS, False)

        'groupe 3730
        groupe3730(NuméroSessionSTS, Config.Data_PMSS)

        Return True
    End Function

    Private Sub ButtonSTS_Assistance_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_STS_Assistance.Click
        If CurrentBenéficiaire.AMC_NumMutuelle = "" And CurrentBenéficiaire.AMC_NumOrganisme = "" Then
            MsgBox("Absence de données mutuelle et de données complémentaires", MsgBoxStyle.Exclamation)
            Exit Sub
        End If

        ReDim tab_current_formule_STS(0)

        '____________________________________________________________________________________________________
        Mode_Gestion()
        '____________________________________________________________________________________________________
        'utilisation des conventions oui/non
        Dim ConfigXml As New XmlDocument
        ConfigXml.Load("config.xml")
        Dim XMLelementliste As XmlNodeList
        XMLelementliste = ConfigXml.GetElementsByTagName("Conventions")
        If UCase(XMLelementliste.Item(0).Item("Activer").InnerText) = "OUI" And (AMC_NumAMC_TextBox.Text <> "" Or MUT_NumMutuelle_TextBox.Text <> "") And CheckBox_Facturation_AMC.Checked = True Then 'And CheckBox_Facturation_AMC.Checked = True Then
            Choix_Convention_Facturation.ShowDialog()
        End If
        '____________________________________________________________________________________________________
        Mode_Gestion()
        '____________________________________________________________________________________________________

        CurrentFactureVitale.TP_AMO = True
        CurrentFactureVitale.TP_AMC = True
        '____________________________________________________________________________________________________
        'Trace
        Trace_Reset_compteur()
        FichierTrace = "traces\STS_in.txt"
        '____________________________________________________________________________________________________

        'boolean pour verifier si lignes déja traités
        ReDim Preserve tab_Lignes_Vente(Vente.RowCount - 2)
        For j = 0 To Vente.RowCount - 2
            tab_Lignes_Vente(j).Ligne_traitée = False
        Next
        For i = 0 To Vente.RowCount - 2 'parcours les lignes du tableau(graphique)vente
            If Vente(VenteType.Index, i).Value.ToString = "Vente Directe" Then
                tab_Lignes_Vente(i).Ligne_traitée = True
            End If
        Next

        If CheckBoxModeDegradé.Checked = True Then
            ModeSecur = "5"
        Else
            ModeSecur = "3"
        End If
        ReDim Tab_Valeur_STS(0)
        Dim code_aiguillage_STS As String = Code_STS()
        If code_aiguillage_STS = "False" Then
            MsgBox("Erreur determination code routage STS")
            Exit Sub
        End If
        Groupes_STS("assistance", code_aiguillage_STS)
        STS_InitTrace("C:\TraceSTS.txt", "a", 6, 2)
        AfficheErreur(STS_Assistance_S("P", 0, NuméroSessionSTS))
        'Visu_API agrement CNDA
        If Visu_API = True Then
            Technique_MAIN.LireSession_Out_VersFichier2(NuméroSessionSTS, Application.StartupPath + "\traces\STS_assistance_out.txt")
        End If


        '---------------------------------------------
        'cas de présence de code diagnostic STS (groupe 3750)
        If SGD_LireChamp(NuméroSessionSTS, 3750, 1, 1, ValeurChamp, TailleMax) = 0 Then 'présence d'au moins un groupe 3750
            Dim tab3750(3, 100) As String 'tableau pour les diagnostiques STS (valeur dans les groupes 3750)

            Dim Occurence_Grp3750 As Integer = 0
            ValeurChamp = "XXXXXX"
            TailleMax = 6
            While SGD_LireChamp(NuméroSessionSTS, 3750, Occurence_Grp3750 + 1, 1, ValeurChamp, TailleMax) = 0
                tab3750(1, Occurence_Grp3750 + 1) = Mid(ValeurChamp, 1, TailleMax)
                ValeurChamp = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
                TailleMax = 100
                SGD_LireChamp(NuméroSessionSTS, 3750, Occurence_Grp3750 + 1, 2, ValeurChamp, TailleMax)
                tab3750(2, Occurence_Grp3750 + 1) = Mid(ValeurChamp, 1, TailleMax)
                ValeurChamp = "XXXX"
                TailleMax = 4
                SGD_LireChamp(NuméroSessionSTS, 3750, Occurence_Grp3750 + 1, 3, ValeurChamp, TailleMax)
                tab3750(3, Occurence_Grp3750 + 1) = Mid(ValeurChamp, 1, TailleMax)
                Occurence_Grp3750 = Occurence_Grp3750 + 1
                ValeurChamp = "XXXXXX"
                TailleMax = 6
            End While

            ReDim Preserve tab3750(3, Occurence_Grp3750)


            For i = 1 To Occurence_Grp3750
                If Mid(tab3750(1, i), 1, 1) <> "1" Or Config.STS_AfficheDiagNiv1 = True Then 'pour ne pas afficher diag de niveau 1 en fonction de config.xml
                    Select Case Mid(tab3750(1, i), 3, 4) 'analyse des codes diagnostics


                        Case "0103", "0200", "0201", "0202", "0205", "0206", "0303", "0209", "0210", "0211", "0216", "0402", "0420" 'Appel à l’assistance pour obtenir la liste des formules
                            ReDim Preserve tab_current_formule_STS(Val(tab3750(3, i)))
                            If tab_current_formule_STS(Val(tab3750(3, i))).selected = False Then 'si formule pas choisie(formule précedente appliquée à tous les actes (case à cocher))


                                If Val(tab3750(3, i)) <> 0 Then
                                    MsgBox("STS Assistance: " + Chr(10) + "Prestation " + tab3750(3, i) + Chr(10) + tab3750(2, i))
                                Else
                                    MsgBox("STS Assistance: " + tab3750(2, i))
                                End If

                                current_formule_STS.num_prestation_de_rattachement = tab3750(3, i)
                                STS_Choix_Formule_STS.ShowDialog()
                                If current_formule_STS.selected = False Then
                                    current_formule_STS.Clear()
                                End If
                                If current_formule_STS.pour_toutes_prestations = True Or Val(tab3750(3, i)) = 0 Then
                                    For j = 1 To Nombre_de_Prestations
                                        ReDim Preserve tab_current_formule_STS(j)
                                        tab_current_formule_STS(j) = current_formule_STS
                                        tab_current_formule_STS(j).num_prestation_de_rattachement = j
                                    Next

                                Else
                                    ReDim Preserve tab_current_formule_STS(Val(tab3750(3, i)))
                                    tab_current_formule_STS(Val(tab3750(3, i))) = current_formule_STS

                                End If

                            End If

                        Case Else
                            If Val(tab3750(3, i)) <> 0 Then
                                MsgBox("STS Assistance: " + Chr(10) + "Prestation " + tab3750(3, i) + Chr(10) + tab3750(2, i))
                            Else
                                MsgBox("STS Assistance: " + tab3750(2, i))
                            End If
                    End Select
                End If
            Next
        Else
            ReDim tab_current_formule_STS(Nombre_de_Prestations)
            Dim i = 1
            While i <= Nombre_de_Prestations
                current_formule_STS.num_prestation_de_rattachement = i
                STS_Choix_Formule_STS.ShowDialog()
                If current_formule_STS.selected = False Then
                    ReDim tab_current_formule_STS(0)
                    Exit Sub
                End If
                If current_formule_STS.pour_toutes_prestations = True Then
                    For j = 1 To Nombre_de_Prestations
                        tab_current_formule_STS(j) = current_formule_STS
                        tab_current_formule_STS(j).num_prestation_de_rattachement = j
                    Next
                    i = Nombre_de_Prestations + 1
                Else
                    tab_current_formule_STS(i) = current_formule_STS
                    i = i + 1
                End If

            End While

        End If
    End Sub

    Private Sub Button_STS_Tarification_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_STS_Tarification.Click
        Choix_Convention_Facturation.ShowDialog()

        CurrentFactureVitale.TP_AMO = True
        CurrentFactureVitale.TP_AMC = True
        '____________________________________________________________________________________________________
        'Trace
        Trace_Reset_compteur()
        FichierTrace = "traces\STS_in.txt"
        '____________________________________________________________________________________________________

        'boolean pour verifier si lignes déja traités
        ReDim Preserve tab_Lignes_Vente(Vente.RowCount - 2)
        For j = 0 To Vente.RowCount - 2
            tab_Lignes_Vente(j).Ligne_traitée = False
        Next
        For i = 0 To Vente.RowCount - 2 'parcours les lignes du tableau(graphique)vente
            If Vente(VenteType.Index, i).Value.ToString = "Vente Directe" Then
                tab_Lignes_Vente(i).Ligne_traitée = True
            End If
        Next

        If CheckBoxModeDegradé.Checked = True Then
            ModeSecur = "5"
        Else
            ModeSecur = "3"
        End If
        ReDim Tab_Valeur_STS(0)
        Dim code_aiguillage_STS As String = Code_STS()
        If code_aiguillage_STS = "False" Then
            MsgBox("Erreur determination code routage STS")
            Exit Sub
        End If
        Groupes_STS("Tarification", code_aiguillage_STS)

        STS_InitTrace("C:\TraceSTS.txt", "a", 6, 2)
        STS_Tarification_S("P", NuméroSessionSTS)
        'Visu_API agrement CNDA
        If Visu_API = True Then
            Technique_MAIN.LireSession_Out_VersFichier2(NuméroSessionSTS, Application.StartupPath + "\traces\STS_out.txt")
        End If
    End Sub
#End Region
#Region "module SRT"
    Private Sub SRT()
        'reserve une session pour SRT
        SGD_LibererSession(NuméroSessionSRT)
        SGD_ReserverSession(20000, NuméroSessionSRT)

        MsgBox("SRT_InitLIB:" + SRT_InitLIB().ToString)
        MsgBox("SRT_LireVersion_S:" + SRT_LireVersion_S(NuméroSessionSRT).ToString)
        Technique_MAIN.LireSession_Out_VersFichier2(NuméroSessionSRT, Application.StartupPath + "\traces\NuméroSessionSRT.txt")

        SGD_LibererSession(NuméroSessionSRT)
        SGD_ReserverSession(20000, NuméroSessionSRT)
        ' MsgBox(NuméroSessionSRT.ToString)
        '____________________________________________________________________________________________________
        Dim NumFacture As Integer = FacturesTableAdapter.SelectMaxNum + 1
        Me.FacturesTableAdapter.Insert1(NumFacture)


        'groupe 1110 à 1450
        groupe1110(NuméroSessionSRT, NumFacture.ToString)
        groupe1120(NuméroSessionSRT)
        groupe1130(NuméroSessionSRT)
        groupe1140(NuméroSessionSRT)
        groupe1160(NuméroSessionSRT)
        groupe1211_1213_1214(NuméroSessionSRT, CurrentBenéficiaire.IDPrescripteur, DatePrecription.Value)
        'groupe1230(NuméroSessionSRT)
        If groupe1310(NuméroSessionSRT) = False Then
            Me.Enabled = True
            Exit Sub
        End If
        CurrentBenéficiaire.AMC_NumOrganisme = AMC_NumAMC_TextBox.Text
        CurrentBenéficiaire.AMC_NumAdherent = AMC_Numadhérent_TextBox.Text

        If CurrentFactureVitale.TP_AMC = True Then
            groupe1321(NuméroSessionSRT)
            groupe1330(NuméroSessionSRT)
        End If
        groupe1410(NuméroSessionSRT)
        If ModeSecur = "5" Then
            groupe1420(NuméroSessionSRT)
        End If
        groupe1440(NuméroSessionSRT)
        groupe1450(NuméroSessionSRT)
        'groupe 1511-1512-1513
        Select Case NatureAssurance_Button.Text
            Case "MALADIE"
                groupe1511(NuméroSessionSRT)
            Case "MATERNITE"
                groupe1512(NuméroSessionSRT, NatureAssuranceDateTimePicker.Value)
            Case "ACCIDENT DU TRAVAIL"
                If current_AT.selected = False Or groupe1513(NuméroSessionSRT, current_AT.DateAT, current_AT.NumAT, current_AT.CléAT) = False Then
                    Exit Sub
                End If
            Case Else
                MsgBox("ERREUR NATURE ASSURANCE", MsgBoxStyle.Critical)
                SGD_LibererSession(NuméroSessionSRT)
                Exit Sub
        End Select

        'groupe 1610 et (1730 ou 1740)
        Dim Nombre_de_Prestations As Integer = 0
        Dim Total_des_Montants_Facturés As Double = 0
        Dim Total_Remboursable_par_AMO As Double = 0
        Dim Total_Théorique_Remboursable_par_AMC As Double = 0
        Dim Total_Remboursable_par_AMC As Double = 0
        For i = 0 To Vente.RowCount - 2 'parcours les lignes du tableau(graphique)vente
            If tab_Lignes_Vente(i).Ligne_traitée = False Then 'si la ligne du tableau(graphique)vente n'a pas encore étée traitée
                Select Case Vente(VenteType.Index, i).Value.ToString 'determine les lignes pour lesquelles il faut etablire une FSE
                    'Case "Vente Directe"
                    '    VenteDirecte(i)
                    '    lignestraitées(i) = True
                    '    SauvegardeActes(i, "") 'enregistrements actes bdd
                    Case "assurance", "ALD"
                        'groupe 1610,1730,1740,1820,1840,1850,
                        Dim TypeNomenclature As String
                        TypeNomenclature = Me.CodePrestationsTableAdapter.SelectTypeNomenclatureByCodeActe(Vente(VenteCodeActe.Index, i).Value.ToString)
                        Select Case TypeNomenclature
                            Case "LPP"
                                groupe1610LPP(NuméroSessionSRT, i, Nombre_de_Prestations, Total_des_Montants_Facturés, Total_Remboursable_par_AMO, Total_Théorique_Remboursable_par_AMC, Total_Remboursable_par_AMC)
                                ReDim CurrentFactureVitale.TabLigneFacture(i).DétailLpp(0)
                                groupe1820(NuméroSessionSRT, Nombre_de_Prestations, Vente(VenteType.Index, i).Value.ToString)
                                'If EntentePréalableBoolean = True Then
                                groupe1840(NuméroSessionSRT, Nombre_de_Prestations) ', i)
                                If RenouvellementToolStripTextBox.Text <> "0" Then
                                    groupe1850(NuméroSessionSRT, Nombre_de_Prestations, RenouvellementToolStripTextBox.Text)
                                End If
                                groupe1730(NuméroSessionSRT, Nombre_de_Prestations, i)
                                tab_Lignes_Vente(i).Ligne_traitée = True
                                '_______________________________________________________________
                                'rgroupement même actes LPP
                                'Dim Occurence1730 = 0
                                'For j = 0 To Vente.RowCount - 2 'parcours les lignes du tableau(graphique)vente pour trouver même code acte
                                '    If Vente(VenteCodeActe.Index, i).Value = Vente(VenteCodeActe.Index, j).Value And Vente(VenteType.Index, i).Value = Vente(VenteType.Index, j).Value Then
                                '        groupe1730(NuméroSessionSRT, Nombre_de_Prestations, j, Occurence1730)
                                '        tab_Lignes_Vente(j).Ligne_traitée = True
                                '        SauvegardeActes(j, NumFacture, "") 'enregistrements actes bdd
                                '    End If
                                'Next 'parcours les lignes du tableau(graphique)vente pour trouver même code acte
                                '_______________________________________________________________
                            Case Else 'Médicaments
                                groupe1610Médicaments(NuméroSessionSRT, i, Nombre_de_Prestations, Total_des_Montants_Facturés, Total_Remboursable_par_AMO, Total_Théorique_Remboursable_par_AMC, Total_Remboursable_par_AMC)
                                groupe1820(NuméroSessionSRT, Nombre_de_Prestations, Vente(VenteType.Index, i).Value.ToString)
                                groupe1840(NuméroSessionSRT, Nombre_de_Prestations) ', i)
                                If RenouvellementToolStripTextBox.Text <> "0" Then
                                    groupe1850(NuméroSessionSRT, Nombre_de_Prestations, RenouvellementToolStripTextBox.Text)
                                End If
                                groupe1740(NuméroSessionSRT, Nombre_de_Prestations, i)
                                tab_Lignes_Vente(i).Ligne_traitée = True
                                SauvegardeActes(i, NumFacture, "") 'enregistrements actes bdd
                        End Select
                End Select 'determine les lignes pour lesquelles il faut etablire une FSE
            End If
        Next 'parcours les lignes du tableau(graphique)vente

        'groupe1910
        groupe1910(NuméroSessionSRT, Nombre_de_Prestations, Total_des_Montants_Facturés, Total_Remboursable_par_AMO.ToString, Total_Théorique_Remboursable_par_AMC, Total_Remboursable_par_AMC)

        ' groupe 3500
        SGD_AjouterGroupe_Tracé(NuméroSessionSRT, 3500, Visu_API, FichierTrace)
        SGD_AjouterChamp_Tracé(NuméroSessionSRT, "000", Visu_API, FichierTrace)




        MsgBox("SRT_ControleComplet_S:" + SRT_ControleComplet_S(NuméroSessionSRT).ToString)

        '____________________________________________________________________________________________________
        'Visu_API agrement CNDA
        If Visu_API = True Then
            Technique_MAIN.LireSession_Out_VersFichier2(NuméroSessionSRT, Application.StartupPath + "\traces\Formater_Facture_out.txt")
        End If



        '_____________________________________________________________________________________________________________________________
        'reinitialise le tableau modifié par SRT
        For j = 0 To tab_Lignes_Vente.Length - 1
            If UCase(Vente(VenteType.Index, j).Value.ToString) = "VENTE DIRECTE" Then
                tab_Lignes_Vente(j).Ligne_traitée = True
            Else
                tab_Lignes_Vente(j).Ligne_traitée = False
            End If
        Next

    End Sub
    Private Sub Button_SRT_ConsulterDonnee_S_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


        'reserve une session pour SRT
        SGD_LibererSession(NuméroSessionSRT)
        SGD_ReserverSession(20000, NuméroSessionSRT)

        SGD_AjouterGroupe(NuméroSessionSRT, 3100)
        SGD_AjouterChamp(NuméroSessionSRT, "PH4")


        MsgBox("SRT_InitLIB:" + SRT_InitLIB().ToString)
        MsgBox("SRT_ConsulterDonnee_S" + SRT_ConsulterDonnee_S("CCAM-1", "20111003", NuméroSessionSRT).ToString)
        Technique_MAIN.LireSession_Out_VersFichier2(NuméroSessionSRT, Application.StartupPath + "\traces\SRT_ConsulterDonnee_S.txt")

    End Sub
#End Region
#Region "Acquisition CPS"
    'lire CPS
    Private Sub LectureCPSToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LectureCPSToolStripMenuItem.Click
        AfficheErreur(SIS_LireCartePS(NomRessourcePS, NomRessourceLecteur, "", NumeroSessionCPS), "Erreur LireCarte PS")
        Occurence_Grp2 = 1
        While SGD_LireGroupeSuivant(NumeroSessionCPS, 2, Occurence_Grp2, 2, 1) = 0
            Occurence_Grp2 = Occurence_Grp2 + 1
        End While
        If Occurence_Grp2 > 1 Then
            Occurence_Grp2 = InputBox("Choix situation PS 1 à " + Occurence_Grp2.ToString, "", "1")
        End If
        If Config.Activer_Session_Remplacement = True Then
            Dim Num_id As String = "123456789012345678901234567890"
            TailleMax = 30
            SGD_LireChamp(NumeroSessionCPS, 1, 1, 3, Num_id, TailleMax)
            Num_id = Mid(Num_id, 1, TailleMax)
            Dim Cle_Num_id As String = "1"
            TailleMax = 1
            SGD_LireChamp(NumeroSessionCPS, 1, 1, 4, Cle_Num_id, TailleMax)
            Cle_Num_id = Mid(Cle_Num_id, 1, TailleMax)
            If Num_id <> Config.Remplacant_Num_Id_Nat Or Cle_Num_id <> Config.Remplacant_Cle_Num_Id_Nat Then
                MsgBox("La carte PS n'est pas la carte déclarée pour le remplacement.", MsgBoxStyle.Critical)
                SGD_LibererSession(NumeroSessionCPS)
            End If
        End If
    End Sub
#End Region
#Region "Acquisition Droits Vitale"
    'date à prendre en compte pour les droits AMO (dateexecution pour RSI(03), date prescription pour les autres)
    Private Function Date_Droits_AMO() As Date
        DateExecution.Enabled = False
        DatePrecription.Enabled = False
        DateFacture.Enabled = False

        If CurrentBenéficiaire.G101C10 = "03" Then
            Return DateExecution.Value
        Else
            Return DatePrecription.Value
        End If
    End Function

    Private Function Date_Droits_AMC2() As Date
        '4.2.1.3.1.3 Détermination de la date de référence pour la prise en compte de la part complémentaire(97)
        'T1 ter- Date de référence pour déterminer le taux de remboursement des frais pharmaceutiques, de la LPP et ou d’analyse de biologie médicale.(690)
        'T3.1 ter- Date à prendre en compte pour déterminer le taux de remboursement des frais pharmaceutiques, de la LPP et ou d'analyses de biologie médicale (RSI) (691)
        Dim Date_Droits_AMC As Date
        If CurrentFactureVitale.Mode_Gestion = "RO" Then
            If CurrentBenéficiaire.G101C10 = "03" Then
                Date_Droits_AMC = DateExecution.Value
            Else
                Date_Droits_AMC = DatePrecription.Value
            End If
        Else
            Date_Droits_AMC = DateExecution.Value
        End If

        If CurrentFactureVitale.TOP_CMU = True Then
            Date_Droits_AMC = DateExecution.Value
        End If

        If Date_part_complémentaire_Menu.Checked = True Then
            If Date_part_complémentaire_Item_Date_Éxécution.Checked = True Then
                Date_Droits_AMC = DateExecution.Value
            ElseIf Date_part_complémentaire_Item_Date_Facturation.Checked = True Then
                Date_Droits_AMC = DateFacture.Value
            ElseIf Date_part_complémentaire_Item_Date_Prescription.Checked = True Then
                Date_Droits_AMC = DatePrecription.Value
            End If
        End If
        Return Date_Droits_AMC

    End Function

    'Lecture Vitale
    Private Sub LECTURE_VITALE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LECTURE_VITALE.Click
        LECTURE_VITALE.Text = "LECTURE EN COURS"
        Label_date_droits_amo.Text = "date droit AMO =" + Format(Date_Droits_AMO(), "dd/MM/yyyy")
        Me.Enabled = False
        'DatePrecription.Enabled = False
        CurrentBeneficiaireRichTextBox.Clear()
        ComboBoxLECTURE_VITALE.Items.Clear()
        ClearGroupBox(AssuréGroupBox, True)
        ClearGroupBox(ASSURANCE_COMPLEMENTAIREGroupBox, False)
        ClearGroupBox(PrescripteurGroupBox, True)
        CheckBoxModeDegradé.Checked = False

        AMC_Piècejustificative_ComboBox.Items.Add("carte Vitale (4)")

        SGD_LibererSession(NumeroSessionVitale)
        If SGD_ReserverSession(0, NumeroSessionVitale) <> 0 Then
            MsgBox("ERREUR POUR LA RESERVATION DE SESSION VITALE")
            LECTURE_VITALE.Text = ""
            Exit Sub
        End If

        Warning_Lecture_Vitale = SIS_LireDroitsVitale(NomRessourcePS, NomRessourceLecteur, "", Format(DatePrecription.Value, "yyyyMMdd"), NumeroSessionVitale)
        If Warning_Lecture_Vitale <> 0 And Warning_Lecture_Vitale <> 61441 Then
            AfficheErreur(Warning_Lecture_Vitale)
            Me.Enabled = True
            LECTURE_VITALE.Text = ""
            Exit Sub
        ElseIf Warning_Lecture_Vitale = 61441 Then 'absence CPS
            AfficheErreur(Warning_Lecture_Vitale)
            Me.Enabled = True
        End If

        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim result As UInt32
        'DONNEES ASSURE
        'Type de carte Vitale
        TailleMax = 1
        ValeurChamp = "@"
        result = SGD_LireChamp(NumeroSessionVitale, 101, 1, 1, ValeurChamp, TailleMax)
        AfficheErreur(result)
        If result = 0 Then
            CurrentBenéficiaire.G101C1 = Mid(ValeurChamp, 1, TailleMax)
            Select Case ValeurChamp
                Case "D"
                    CurrentBeneficiaireRichTextBox.AppendText("Carte Vitale de démonstration" + Chr(10))
                Case "T"
                    CurrentBeneficiaireRichTextBox.AppendText("Carte Vitale de test" + Chr(10))
            End Select
        End If

        'N° de série de la carte Vitale
        TailleMax = 20
        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@"
        result = SGD_LireChamp(NumeroSessionVitale, 101, 1, 2, ValeurChamp, TailleMax)
        AfficheErreur(result)
        If result = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G101C2 = Mid(ValeurChamp, 1, TailleMax)
            CurrentBeneficiaireRichTextBox.AppendText("N° série carte:" + ValeurChamp + Chr(10))
        End If

        'Date de fin de validité carte Vitale
        TailleMax = 12
        ValeurChamp = "@@@@@@@@@@@@"
        result = SGD_LireChamp(NumeroSessionVitale, 101, 1, 3, ValeurChamp, TailleMax)
        AfficheErreur(result)
        If result = 0 And TailleMax <> 0 Then
            CurrentBenéficiaire.G101C3 = Mid(ValeurChamp, 1, TailleMax)
            If Val(ValeurChamp) < Val(Format(Now, "yyyyMMdd") + "0000") And Val(ValeurChamp) <> 0 Then
                MsgBox("La Date de Validité de la carte Vitale est dépassée", MsgBoxStyle.Information, "ATTENTION")
            End If
            CurrentBeneficiaireRichTextBox.AppendText("Date fin validité carte:" + Mid(ValeurChamp, 7, 2) + "/" + Mid(ValeurChamp, 5, 2) + "/" + Mid(ValeurChamp, 1, 4) + Chr(10))
        End If

        'Type d’identification du porteur de la carte
        TailleMax = 1
        ValeurChamp = "@"
        result = SGD_LireChamp(NumeroSessionVitale, 101, 1, 7, ValeurChamp, TailleMax)
        AfficheErreur(result)
        If result = 0 Then
            CurrentBenéficiaire.G101C7 = Mid(ValeurChamp, 1, TailleMax)
            Select Case ValeurChamp
                Case "A"
                    CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Le n° national d'immatriculation est celui de l'assuré" + Chr(10))
                Case "B"
                    CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Le n° national d'immatriculation est celui de l'ayant-droit" + Chr(10))
            End Select
        End If

        'NIR
        TailleMax = 13
        ValeurChamp = "@@@@@@@@@@@@@"
        result = SGD_LireChamp(NumeroSessionVitale, 101, 1, 8, ValeurChamp, TailleMax)
        AfficheErreur(result)
        If result = 0 Then
            CurrentBenéficiaire.G101C8 = Mid(ValeurChamp, 1, TailleMax)
            NirTextBox.Text = Mid(ValeurChamp, 1, TailleMax)
        End If
        TailleMax = 2
        ValeurChamp = "@@"
        result = SGD_LireChamp(NumeroSessionVitale, 101, 1, 9, ValeurChamp, TailleMax)
        AfficheErreur(result)
        If result = 0 Then
            CurrentBenéficiaire.G101C9 = Mid(ValeurChamp, 1, TailleMax)
            CléduNIRTextBox.Text = Mid(ValeurChamp, 1, TailleMax)
        End If

        'Code régime
        Dim CodeRégime As String = "@@"
        TailleMax = 2
        result = SGD_LireChamp(NumeroSessionVitale, 101, 1, 10, CodeRégime, TailleMax)
        AfficheErreur(result)
        If result = 0 Then
            If CodeRégime = "09" Then
                MsgBox("Les spécificités du régime 09 (Banque de France) ont disparues (bénéficiaires rattachés au régime des fonctionnaires)." + Chr(10) + "disparition de ce régime et interdiction de facturer.", MsgBoxStyle.Critical)
                LECTURE_VITALE.Text = ""
                Exit Sub
            End If
            CurrentBenéficiaire.G101C10 = CodeRégime
            RégimeTextBox.Text = TraductionCodeRégime(CodeRégime)
        End If





        'Caisse gestionnaire
        Dim CaisseGestionnaire As String = "@@@"
        TailleMax = 3
        result = SGD_LireChamp(NumeroSessionVitale, 101, 1, 11, CaisseGestionnaire, TailleMax)
        AfficheErreur(result)
        CurrentBenéficiaire.G101C11 = CaisseGestionnaire


        'Centre gestionnaire
        Dim CentreGestionnaire As String = "@@@@"
        TailleMax = 4
        result = SGD_LireChamp(NumeroSessionVitale, 101, 1, 12, CentreGestionnaire, TailleMax)
        AfficheErreur(result)
        CurrentBenéficiaire.G101C12 = CentreGestionnaire

        '___________________________________________________________________________________________________________________________________________
        'recherche de l'intitulé organislme destinataire dans taborgdest
        Select Case Me.AmoTableAdapter1.SelectCount(CurrentBenéficiaire.G101C10, CurrentBenéficiaire.G101C11, CurrentBenéficiaire.G101C12)
            Case 0
                Select Case Me.AmoTableAdapter1.SelectCount(CurrentBenéficiaire.G101C10, CurrentBenéficiaire.G101C11, "0000")
                    Case 0
                        MsgBox("AUCUN ENREGISTREMENT POUR:" + Chr(10) + "Code Régime:" + CurrentBenéficiaire.G101C10 + Chr(10) + "Caisse Gestionnaire:" + CurrentBenéficiaire.G101C11 + Chr(10) + "Centre Gestionnaire:" + CurrentBenéficiaire.G101C12, MsgBoxStyle.Critical)
                    Case 1
                        Dim Libellé As String
                        Libellé = Me.AmoTableAdapter1.SelectLibellé(CurrentBenéficiaire.G101C10, CurrentBenéficiaire.G101C11, CurrentBenéficiaire.G101C12)
                        CaisseTextBox.Text = Libellé + " " + CurrentBenéficiaire.G101C10 + "  " + CurrentBenéficiaire.G101C11 + "  " + CurrentBenéficiaire.G101C12
                    Case Else
                        MsgBox("PLUSIEURS ENREGISTREMENTS POUR:" + Chr(10) + "Code Régime:" + CurrentBenéficiaire.G101C10 + Chr(10) + "Caisse Gestionnaire:" + CurrentBenéficiaire.G101C11 + Chr(10) + "Centre Gestionnaire:" + CurrentBenéficiaire.G101C12, MsgBoxStyle.Critical)
                End Select
            Case 1
                Dim Libellé As String
                Libellé = Me.AmoTableAdapter1.SelectLibellé(CurrentBenéficiaire.G101C10, CurrentBenéficiaire.G101C11, CurrentBenéficiaire.G101C12)
                CaisseTextBox.Text = Libellé + " " + CurrentBenéficiaire.G101C10 + "  " + CurrentBenéficiaire.G101C11 + "  " + CurrentBenéficiaire.G101C12
            Case Else
                MsgBox("PLUSIEURS ENREGISTREMENTS POUR:" + Chr(10) + "Code Régime:" + CurrentBenéficiaire.G101C10 + Chr(10) + "Caisse Gestionnaire:" + CurrentBenéficiaire.G101C11 + Chr(10) + "Centre Gestionnaire:" + CurrentBenéficiaire.G101C12, MsgBoxStyle.Critical)
        End Select
        '___________________________________________________________________________________________________________________________________________


        'Code gestion
        TailleMax = 2
        ValeurChamp = "@@"
        result = SGD_LireChamp(NumeroSessionVitale, 101, 1, 13, ValeurChamp, TailleMax)
        AfficheErreur(result)
        If result = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G101C13 = Mid(ValeurChamp, 1, TailleMax)
            'CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + TraductionG101C13(ValeurChamp))
        End If
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

        'SERVICE AMO FAMILLE
        TailleMax = 2
        ValeurChamp = "@@"
        'Code service AMO Famille
        result = SGD_LireChamp(NumeroSessionVitale, 102, 1, 1, ValeurChamp, TailleMax)
        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
        CurrentBenéficiaire.G102C1 = Mid(ValeurChamp, 1, TailleMax)
        If result = 0 And ValeurChamp <> "0" And ValeurChamp <> "00" Then
            CurrentBeneficiaireRichTextBox.AppendText("______________________________________" + Chr(10) + "Service AMO Famille" + Chr(10) + "Code service: " + ValeurChamp + Chr(10))
            'Date de début du service AMO Famille
            TailleMax = 12
            ValeurChamp = "@@@@@@@@@@@@"
            SGD_LireChamp(NumeroSessionVitale, 102, 1, 2, ValeurChamp, TailleMax)
            CurrentBenéficiaire.G102C2 = Mid(ValeurChamp, 1, TailleMax)
            If Mid(ValeurChamp, 1, TailleMax) <> "" Then
                CurrentBeneficiaireRichTextBox.AppendText("Date de début du service AMO Famille:" + Mid(ValeurChamp, 7, 2) + "/" + Mid(ValeurChamp, 5, 2) + "/" + Mid(ValeurChamp, 1, 4) + Chr(10))
            End If
            'Date de fin du service AMO Famille
            TailleMax = 12
            ValeurChamp = "@@@@@@@@@@@@"
            SGD_LireChamp(NumeroSessionVitale, 102, 1, 3, ValeurChamp, TailleMax)
            CurrentBenéficiaire.G102C3 = Mid(ValeurChamp, 1, TailleMax)
            If Mid(ValeurChamp, 1, TailleMax) <> "" Then
                CurrentBeneficiaireRichTextBox.AppendText("Date de fin du service AMO Famille:" + Mid(ValeurChamp, 7, 2) + "/" + Mid(ValeurChamp, 5, 2) + "/" + Mid(ValeurChamp, 1, 4) + Chr(10))
            End If
            CurrentBeneficiaireRichTextBox.AppendText("______________________________________" + Chr(10))
        End If

        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

        'DONNEES ACCIDENT DU TRAVAIL
        TailleMax = 9
        ValeurChamp = "@@@@@@@@@"
        'Organisme gestionnaire du risque AT
        result = SGD_LireChamp(NumeroSessionVitale, 103, 1, 1, ValeurChamp, TailleMax)
        If result = 0 Then
            CurrentBenéficiaire.G103C1 = Mid(ValeurChamp, 1, TailleMax)
            CurrentBeneficiaireRichTextBox.AppendText("______________________________________" + Chr(10) + "DONNEES ACCIDENT DU TRAVAIL:" + Chr(10) + "Organisme gestionnaire du risque AT:" + ValeurChamp + "  |  ")
            'Code AT Budget Global des Hôpitaux
            TailleMax = 2
            ValeurChamp = "@@"
            SGD_LireChamp(NumeroSessionVitale, 103, 1, 2, ValeurChamp, TailleMax)
            CurrentBenéficiaire.G103C2 = Mid(ValeurChamp, 1, TailleMax)
            CurrentBeneficiaireRichTextBox.AppendText("Code AT Budget Global des Hôpitaux:" + ValeurChamp + Chr(10))
            'Identifiant AT
            TailleMax = 9
            ValeurChamp = "@@@@@@@@@"
            SGD_LireChamp(NumeroSessionVitale, 103, 1, 3, ValeurChamp, TailleMax)
            CurrentBenéficiaire.G103C3 = Mid(ValeurChamp, 1, TailleMax)
            CurrentBeneficiaireRichTextBox.AppendText("Identifiant AT:" + ValeurChamp + Chr(10))
            'Organisme gestionnaire AT1
            TailleMax = 9
            ValeurChamp = "@@@@@@@@@"
            SGD_LireChamp(NumeroSessionVitale, 103, 1, 4, ValeurChamp, TailleMax)
            CurrentBenéficiaire.G103C4 = Mid(ValeurChamp, 1, TailleMax)
            CurrentBeneficiaireRichTextBox.AppendText("Organisme gestionnaire AT1:" + ValeurChamp + Chr(10))
            'Code AT1 BGDH
            TailleMax = 2
            ValeurChamp = "@@"
            SGD_LireChamp(NumeroSessionVitale, 103, 1, 5, ValeurChamp, TailleMax)
            CurrentBenéficiaire.G103C5 = Mid(ValeurChamp, 1, TailleMax)
            CurrentBeneficiaireRichTextBox.AppendText("Code AT1 BGDH:" + ValeurChamp + Chr(10))
            'Identifiant AT1
            TailleMax = 9
            ValeurChamp = "@@@@@@@@@"
            SGD_LireChamp(NumeroSessionVitale, 103, 1, 6, ValeurChamp, TailleMax)
            CurrentBenéficiaire.G103C6 = Mid(ValeurChamp, 1, TailleMax)
            CurrentBeneficiaireRichTextBox.AppendText("Identifiant AT1:" + ValeurChamp + Chr(10))
            'Organisme gestionnaire AT2
            TailleMax = 9
            ValeurChamp = "@@@@@@@@@"
            SGD_LireChamp(NumeroSessionVitale, 103, 1, 7, ValeurChamp, TailleMax)
            CurrentBenéficiaire.G103C7 = Mid(ValeurChamp, 1, TailleMax)
            CurrentBeneficiaireRichTextBox.AppendText("Organisme gestionnaire AT2:" + ValeurChamp + Chr(10))
            'Code AT2 BGDH
            TailleMax = 2
            ValeurChamp = "@@"
            SGD_LireChamp(NumeroSessionVitale, 103, 1, 8, ValeurChamp, TailleMax)
            CurrentBenéficiaire.G103C8 = Mid(ValeurChamp, 1, TailleMax)
            CurrentBeneficiaireRichTextBox.AppendText("Code AT2 BGDH:" + ValeurChamp + Chr(10))
            'Identifiant AT2
            TailleMax = 9
            ValeurChamp = "@@@@@@@@@"
            SGD_LireChamp(NumeroSessionVitale, 103, 1, 9, ValeurChamp, TailleMax)
            CurrentBenéficiaire.G103C9 = Mid(ValeurChamp, 1, TailleMax)
            CurrentBeneficiaireRichTextBox.AppendText("Identifiant AT2:" + ValeurChamp + Chr(10))
            CurrentBeneficiaireRichTextBox.AppendText("______________________________________" + Chr(10))
        End If

        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

        'DONNEES BENEFICIAIRE
        ComboBoxLECTURE_VITALE.Items.Clear()
        Dim OccurrenceGroupe = 1
        Dim comboboxitem As String = ""
        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
        TailleMax = 32
        While SGD_LireChamp(NumeroSessionVitale, 104, OccurrenceGroupe, 1, ValeurChamp, TailleMax) = 0

            If TailleMax <> 0 Then comboboxitem = Mid(ValeurChamp, 1, TailleMax)

            ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
            TailleMax = 32
            SGD_LireChamp(NumeroSessionVitale, 104, OccurrenceGroupe, 2, ValeurChamp, TailleMax)
            If TailleMax <> 0 Then comboboxitem = comboboxitem + " " + Mid(ValeurChamp, 1, TailleMax)

            ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
            TailleMax = 32
            SGD_LireChamp(NumeroSessionVitale, 104, OccurrenceGroupe, 3, ValeurChamp, TailleMax)
            If TailleMax <> 0 Then comboboxitem = comboboxitem + " " + Mid(ValeurChamp, 1, TailleMax)

            ComboBoxLECTURE_VITALE.Items.Add(comboboxitem)

            ValeurChamp = "@@"
            TailleMax = 2
            SGD_LireChamp(NumeroSessionVitale, 104, OccurrenceGroupe, 14, ValeurChamp, TailleMax)
            If Val(ValeurChamp) = 0 Then
                CurrentBenéficiaire.Assuré = comboboxitem
            End If

            ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
            TailleMax = 32
            OccurrenceGroupe = OccurrenceGroupe + 1

        End While

        ComboBoxLECTURE_VITALE.SelectedIndex = 0

        ModeSecur = "3"
        'CheckBoxDRE.Enabled = True
        'CheckBoxFSE.Enabled = True
        CheckBoxModeDegradé.Enabled = True
        CheckBoxModeDegradé.Checked = False

        'ventetype_index_defaut = 0
        ventetype_defaut = "assurance"
        NatureAssurance_Button.Text = "MALADIE"
        '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
        'Lignes pour selcetion du bénéficiaire avec la combobox (old version avant la programation de Choix_bénéficiaire_CV.vb
        'ComboBoxLECTURE_VITALE.Focus()
        'ComboBoxLECTURE_VITALE.Select()
        '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

        Vente.Visible = False
        Choix_bénéficiaire_CV.ShowDialog()
        Me.Enabled = True
        LECTURE_VITALE.Text = ""
    End Sub

    'ComboBoxLECTURE_VITALE_SelectedIndexChanged
    Private Sub ComboBoxLECTURE_VITALE_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBoxLECTURE_VITALE.SelectedIndexChanged

        ReDim tab_current_formule_STS(0)
        current_formule_STS.Clear()
        CurrentConvention.clear()

        PrescripteurTextBox.Clear()
        ReDim CurrentBenéficiaire.G105C1(0)
        ReDim CurrentBenéficiaire.G105C2(0)
        ReDim CurrentBenéficiaire.G106C1(0)
        ReDim CurrentBenéficiaire.G106C2(0)
        ReDim CurrentBenéficiaire.G106C3(0)
        ReDim CurrentBenéficiaire.G106C4(0)
        CurrentBenéficiaire.G107C1 = ""
        CurrentBenéficiaire.G107C2 = ""
        CurrentBenéficiaire.G107C3 = ""
        CurrentBenéficiaire.G107C4 = ""
        CurrentBenéficiaire.G107C5 = ""
        CurrentBenéficiaire.G107C6 = ""
        ReDim CurrentBenéficiaire.G108C1(0)
        ReDim CurrentBenéficiaire.G108C2(0)
        CurrentBenéficiaire.G109C1 = ""
        CurrentBenéficiaire.G109C2 = ""
        CurrentBenéficiaire.G109C3 = ""
        CurrentBenéficiaire.G109C4 = ""
        CurrentBenéficiaire.G109C5 = ""
        CurrentBenéficiaire.G109C6 = ""
        CurrentBenéficiaire.G109C7 = ""
        CurrentBenéficiaire.G109C8 = ""
        CurrentBenéficiaire.G109C9 = ""
        CurrentBenéficiaire.G109C10 = ""
        CurrentBenéficiaire.G109C11 = ""
        CurrentBenéficiaire.G109C12 = ""
        CurrentBenéficiaire.AMC_DateDébut = ""
        AMC_DateDebut_MaskedTextBox.Clear()
        CurrentBenéficiaire.AMC_DateFin = ""
        AMC_DateFin_MaskedTextBox.Clear()
        CurrentBenéficiaire.AMC_NumAdherent = ""
        AMC_Numadhérent_TextBox.Clear()
        CurrentBenéficiaire.AMC_NumOrganisme = ""
        AMC_NumAMC_TextBox.Clear()
        CurrentBenéficiaire.AMC_NumMutuelle = ""
        MUT_NumMutuelle_TextBox.Text = ""
        CurrentBenéficiaire.AMC_Piecejustificative = ""
        AMC_Piècejustificative_ComboBox.Text = ""
        CurrentBenéficiaire.AMC_TypeContrat = ""
        AMC_Couverture_TextBox.Clear()
        CurrentBenéficiaire.IDPrescripteur = ""
        AMC_Indicateurdetrairement_TextBox.Clear()
        CurrentBenéficiaire.AMC_Indicateurdetrairement = ""

        'Nom usuel du bénéficiaire
        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@"
        TailleMax = 27
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 1, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C1 = ValeurChamp
        End If
        'Nom de famille du bénéficiaire
        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@"
        TailleMax = 27
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 2, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C2 = ValeurChamp
        End If
        'Prénom du bénéficiaire
        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@"
        TailleMax = 27
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 3, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C3 = ValeurChamp
        End If
        'Adresse
        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
        TailleMax = 32
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 4, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C4 = ValeurChamp
            'CurrentBeneficiaireRichTextBox.AppendText("Adresse:" + ValeurChamp + "  ")
        End If
        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
        TailleMax = 32
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 5, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C5 = ValeurChamp
            'CurrentBeneficiaireRichTextBox.AppendText(ValeurChamp + "  ")
        End If
        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
        TailleMax = 32
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 6, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C6 = ValeurChamp
            'CurrentBeneficiaireRichTextBox.AppendText(ValeurChamp + "  ")
        End If
        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
        TailleMax = 32
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 7, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C7 = ValeurChamp
            'CurrentBeneficiaireRichTextBox.AppendText(ValeurChamp + "  ")
        End If
        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
        TailleMax = 32
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 8, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C8 = ValeurChamp
            'CurrentBeneficiaireRichTextBox.AppendText(ValeurChamp)
        End If

        'NIR certifié
        ValeurChamp = "@@@@@@@@@@@@@"
        TailleMax = 13
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 9, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C9 = ValeurChamp
            'CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "NIR certifié:" + ValeurChamp)
        End If

        'Clé du NIR certifié
        ValeurChamp = "@@"
        TailleMax = 2
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 10, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C10 = ValeurChamp
            'CurrentBeneficiaireRichTextBox.AppendText("  " + ValeurChamp)
        End If

        'Date de certification du NIR
        TailleMax = 12
        ValeurChamp = "@@@@@@@@@@@@"
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 11, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C11 = ValeurChamp
            'CurrentBeneficiaireRichTextBox.AppendText("  |  Date de certification du NIR:" + Mid(ValeurChamp, 7, 2) + "/" + Mid(ValeurChamp, 5, 2) + "/" + Mid(ValeurChamp, 1, 4))
        End If

        'Date de naissance du bénéficiaire
        TailleMax = 12
        ValeurChamp = "@@@@@@@@@@@@"
        SGD_LireChamp(2, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 12, ValeurChamp, TailleMax)
        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
        CurrentBenéficiaire.G104C12 = ValeurChamp
        'Rang de naissance
        TailleMax = 1
        ValeurChamp = "@"
        SGD_LireChamp(2, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 13, ValeurChamp, TailleMax)
        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
        CurrentBenéficiaire.G104C13 = ValeurChamp

        'Qualité
        TailleMax = 2
        ValeurChamp = "@@"
        SGD_LireChamp(2, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 14, ValeurChamp, TailleMax)
        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
        CurrentBenéficiaire.G104C14 = ValeurChamp

        'Code service AMO bénéficiaire
        TailleMax = 2
        ValeurChamp = "@@"
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 15, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C15 = ValeurChamp
        End If

        'Date de début du service AMO bénéficiaire
        TailleMax = 12
        ValeurChamp = "@@@@@@@@@@@@"
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 16, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C16 = ValeurChamp
        End If

        'Date de fin du service AMO bénéficiaire
        TailleMax = 12
        ValeurChamp = "@@@@@@@@@@@@"
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 17, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C17 = ValeurChamp
        End If

        'Données RUF AMO bénéficiaire
        TailleMax = 30
        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
        If SGD_LireChamp(NumeroSessionVitale, 104, ComboBoxLECTURE_VITALE.SelectedIndex + 1, 18, ValeurChamp, TailleMax) = 0 Then
            ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
            CurrentBenéficiaire.G104C18 = ValeurChamp
        End If


        'Lecture des groupes suivants (105 à 111) sortie sur nouveau groupe 104 ou fin de session atteinte
        Dim IdGroupeCourant As UInt16 = 104
        Dim OccurrenceGroupeCourant As UInt16 = ComboBoxLECTURE_VITALE.SelectedIndex + 1

        Do
            Dim IdGroupeSuivant As UInt16
            Dim OccurrenceGroupeSuivant As UInt16
            If SGD_LireGroupeSuivant(NumeroSessionVitale, IdGroupeCourant, OccurrenceGroupeCourant, IdGroupeSuivant, OccurrenceGroupeSuivant) <> 0 Then
                ReDim Preserve CurrentBenéficiaire.G105C1(3)
                ReDim Preserve CurrentBenéficiaire.G105C2(3)
                ReDim Preserve CurrentBenéficiaire.G106C1(7)
                ReDim Preserve CurrentBenéficiaire.G106C2(7)
                ReDim Preserve CurrentBenéficiaire.G106C3(7)
                ReDim Preserve CurrentBenéficiaire.G106C4(7)
                ReDim Preserve CurrentBenéficiaire.G108C1(3)
                ReDim Preserve CurrentBenéficiaire.G108C2(3)
                afficheDonnéesAssuré()
                Exit Sub
            End If


            Select Case IdGroupeSuivant

                Case 104
                    ReDim Preserve CurrentBenéficiaire.G105C1(3)
                    ReDim Preserve CurrentBenéficiaire.G105C2(3)
                    ReDim Preserve CurrentBenéficiaire.G106C1(7)
                    ReDim Preserve CurrentBenéficiaire.G106C2(7)
                    ReDim Preserve CurrentBenéficiaire.G106C3(7)
                    ReDim Preserve CurrentBenéficiaire.G106C4(7)
                    ReDim Preserve CurrentBenéficiaire.G108C1(3)
                    ReDim Preserve CurrentBenéficiaire.G108C2(3)
                    afficheDonnéesAssuré()
                    Exit Sub

                Case 105 'Période de droits AMO
                    Dim occurence As Integer = CurrentBenéficiaire.G105C1.Length
                    ReDim Preserve CurrentBenéficiaire.G105C1(occurence)
                    ReDim Preserve CurrentBenéficiaire.G105C2(occurence)

                    'Date de début droits AMO
                    TailleMax = 12
                    ValeurChamp = "@@@@@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 105, OccurrenceGroupeSuivant, 1, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G105C1(occurence) = ValeurChamp

                    End If
                    'Date de fin droits AMO
                    TailleMax = 12
                    ValeurChamp = "@@@@@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 105, OccurrenceGroupeSuivant, 2, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G105C2(occurence) = ValeurChamp

                    End If

                Case 106 'Période de code couverture
                    Dim occurence As Integer = CurrentBenéficiaire.G106C1.Length
                    'Dim item106 As String = ""
                    ReDim Preserve CurrentBenéficiaire.G106C1(occurence)
                    ReDim Preserve CurrentBenéficiaire.G106C2(occurence)
                    ReDim Preserve CurrentBenéficiaire.G106C3(occurence)
                    ReDim Preserve CurrentBenéficiaire.G106C4(occurence)
                    'Code ALD
                    TailleMax = 1
                    ValeurChamp = "@"
                    If SGD_LireChamp(NumeroSessionVitale, 106, OccurrenceGroupeSuivant, 3, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G106C3(occurence - 1) = ValeurChamp
                        'item106 = "Code ALD:  " + ValeurChamp
                    End If

                    'Code situation
                    TailleMax = 4
                    ValeurChamp = "@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 106, OccurrenceGroupeSuivant, 4, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G106C4(occurence - 1) = ValeurChamp
                        'item106 = item106 + "  |  Code situation:  " + ValeurChamp
                    End If

                    'Date de début code couverture
                    TailleMax = 12
                    ValeurChamp = "@@@@@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 106, OccurrenceGroupeSuivant, 1, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        If ValeurChamp <> "@@@@@@@@@@@@" Then
                            CurrentBenéficiaire.G106C1(occurence - 1) = ValeurChamp
                            'item106 = item106 + "  Date de code couverture: du " + Mid(ValeurChamp, 7, 2) + "/" + Mid(ValeurChamp, 5, 2) + "/" + Mid(ValeurChamp, 1, 4)
                        End If
                    End If

                    'Date de fin code couverture
                    TailleMax = 12
                    ValeurChamp = "@@@@@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 106, OccurrenceGroupeSuivant, 2, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        If ValeurChamp <> "@@@@@@@@@@@@" Then
                            CurrentBenéficiaire.G106C2(occurence - 1) = ValeurChamp
                        End If
                    End If


                Case 107 'Données Mutuelle
                    'CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Données Mutuelle:  ")
                    'Identification Mutuelle
                    TailleMax = 8
                    ValeurChamp = "@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 107, OccurrenceGroupeSuivant, 1, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G107C1 = ValeurChamp
                        'CurrentBeneficiaireRichTextBox.AppendText("Identification Mutuelle:  " + ValeurChamp)
                    End If
                    'Garanties effectives
                    TailleMax = 8
                    ValeurChamp = "@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 107, OccurrenceGroupeSuivant, 2, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        If TailleMax <> 0 Then
                            CurrentBenéficiaire.G107C2 = ValeurChamp
                            'CurrentBeneficiaireRichTextBox.AppendText("  |  Garanties effectives:  " + ValeurChamp)
                        End If
                    End If


                    'Indicateur de traitement mutuelle
                    TailleMax = 2
                    ValeurChamp = "@@"
                    If SGD_LireChamp(NumeroSessionVitale, 107, OccurrenceGroupeSuivant, 3, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        If TailleMax <> 0 Then
                            CurrentBenéficiaire.G107C3 = ValeurChamp
                            'CurrentBeneficiaireRichTextBox.AppendText("  |  Indicateur de traitement mutuelle:  " + ValeurChamp)
                        End If
                    End If

                    'Type de services associés
                    TailleMax = 1
                    ValeurChamp = "@"
                    If SGD_LireChamp(NumeroSessionVitale, 107, OccurrenceGroupeSuivant, 4, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        If TailleMax <> 0 Then
                            CurrentBenéficiaire.G107C4 = ValeurChamp
                            'CurrentBeneficiaireRichTextBox.AppendText("  |  Type de services associés:  " + ValeurChamp)
                        End If
                    End If

                    'Services associés au contrat
                    TailleMax = 17
                    ValeurChamp = "@@@@@@@@@@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 107, OccurrenceGroupeSuivant, 5, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        If TailleMax <> 0 Then
                            CurrentBenéficiaire.G107C5 = ValeurChamp
                            'CurrentBeneficiaireRichTextBox.AppendText("  |  Services associés au contrat:  " + ValeurChamp)
                        End If
                    End If

                    'Code aiguillage STS
                    TailleMax = 1
                    ValeurChamp = "@"
                    If SGD_LireChamp(NumeroSessionVitale, 107, OccurrenceGroupeSuivant, 6, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        If TailleMax <> 0 Then
                            CurrentBenéficiaire.G107C6 = ValeurChamp
                            'CurrentBeneficiaireRichTextBox.AppendText("  |  Code aiguillage STS:  " + ValeurChamp)
                        End If
                    End If


                Case 108 'Période de droits Mutuellede 0 à 3 occurences, selon le groupe 107
                    Dim occurence As Integer = CurrentBenéficiaire.G108C1.Length
                    ReDim Preserve CurrentBenéficiaire.G108C1(occurence)
                    ReDim Preserve CurrentBenéficiaire.G108C2(occurence)
                    'Date de début droits mutuelle
                    TailleMax = 12
                    ValeurChamp = "@@@@@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 108, OccurrenceGroupeSuivant, 1, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G108C1(occurence - 1) = ValeurChamp
                        'CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Date de droits mutuelle: du " + Mid(ValeurChamp, 7, 2) + "/" + Mid(ValeurChamp, 5, 2) + "/" + Mid(ValeurChamp, 1, 4))
                    End If
                    'DDate de fin droits mutuelle
                    TailleMax = 12
                    ValeurChamp = "@@@@@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 108, OccurrenceGroupeSuivant, 2, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G108C2(occurence - 1) = ValeurChamp
                        'CurrentBeneficiaireRichTextBox.AppendText(" au  " + Mid(ValeurChamp, 7, 2) + "/" + Mid(ValeurChamp, 5, 2) + "/" + Mid(ValeurChamp, 1, 4))
                    End If


                Case 109 'Données Complémentaire
                    'N° de complémentaire B2
                    TailleMax = 10
                    ValeurChamp = "@@@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 109, OccurrenceGroupeSuivant, 1, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G109C1 = ValeurChamp
                        'AMC_NumAMC_TextBox.Text = ValeurChamp
                    End If
                    'N° de complémentaire EDI
                    TailleMax = 19
                    ValeurChamp = "@@@@@@@@@@@@@@@@@@@"

                    If SGD_LireChamp(NumeroSessionVitale, 109, OccurrenceGroupeSuivant, 2, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G109C2 = ValeurChamp
                    End If
                    'N° d’adhérent AMC
                    TailleMax = 8
                    ValeurChamp = "@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 109, OccurrenceGroupeSuivant, 3, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G109C3 = ValeurChamp
                        'If ValeurChamp <> "" Then
                        '    AMC_Numadhérent_TextBox.Text = ValeurChamp
                        'End If
                    End If
                    'Indicateur de traitement AMC
                    TailleMax = 2
                    ValeurChamp = "@@"
                    If SGD_LireChamp(NumeroSessionVitale, 109, OccurrenceGroupeSuivant, 4, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G109C4 = ValeurChamp
                    End If
                    'Date de début de validité de présence des données AMC
                    TailleMax = 12
                    ValeurChamp = "@@@@@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 109, OccurrenceGroupeSuivant, 5, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G109C5 = ValeurChamp
                    End If
                    'Date de fin de validité de présence des données AMC
                    TailleMax = 12
                    ValeurChamp = "@@@@@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 109, OccurrenceGroupeSuivant, 6, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G109C6 = ValeurChamp
                        'If ValeurChamp <> "" Then
                        '    AMC_DateFin_TextBox.Text = Mid(ValeurChamp, 7, 2) + "/" + Mid(ValeurChamp, 5, 2) + "/" + Mid(ValeurChamp, 1, 4)
                        'End If
                    End If
                    'Code de routage flux AMC
                    TailleMax = 2
                    ValeurChamp = "@@"
                    If SGD_LireChamp(NumeroSessionVitale, 109, OccurrenceGroupeSuivant, 7, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G109C7 = ValeurChamp
                    End If
                    'Identifiant d’hôte
                    TailleMax = 3
                    ValeurChamp = "@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 109, OccurrenceGroupeSuivant, 8, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G109C8 = ValeurChamp
                    End If
                    'Nom de domaine AMC
                    TailleMax = 20
                    ValeurChamp = "@@@@@@@@@@@@@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 109, OccurrenceGroupeSuivant, 9, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G109C9 = ValeurChamp
                    End If
                    'Code aiguillage STS
                    TailleMax = 1
                    ValeurChamp = "@"
                    If SGD_LireChamp(NumeroSessionVitale, 109, OccurrenceGroupeSuivant, 10, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G109C10 = ValeurChamp
                    End If
                    'Type de services associés
                    TailleMax = 1
                    ValeurChamp = "@"
                    If SGD_LireChamp(NumeroSessionVitale, 109, OccurrenceGroupeSuivant, 11, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G109C11 = ValeurChamp
                    End If
                    'Services associés au contrat
                    TailleMax = 17
                    ValeurChamp = "@@@@@@@@@@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 109, OccurrenceGroupeSuivant, 12, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G109C12 = ValeurChamp
                    End If

                Case 111
                    TailleMax = 115
                    ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
                    If SGD_LireChamp(NumeroSessionVitale, 111, OccurrenceGroupeSuivant, 1, ValeurChamp, TailleMax) = 0 Then
                        ValeurChamp = Mid(ValeurChamp, 1, TailleMax)
                        CurrentBenéficiaire.G111C1 = ValeurChamp
                    End If
            End Select
            IdGroupeCourant = IdGroupeSuivant
            OccurrenceGroupeCourant = OccurrenceGroupeSuivant
        Loop
    End Sub

    Public Sub afficheDonnéesAssuré()
        CurrentBeneficiaireRichTextBox.Clear()

        AMC_CodeRoutage_TextBox.Text = ""
        AMC_IdHote_TextBox.Text = ""
        AMC_NomDomaine_TextBox.Text = ""
        AMC_Code_Aiguillage_STS_TextBox.Text = ""

        'affichage DONNEES ASSURE
        CurrentBeneficiaireRichTextBox.AppendText("DONNEES BENEFICIAIRE:" + Chr(10))
        'Type de carte Vitale
        Select Case CurrentBenéficiaire.G101C1
            Case "D"
                CurrentBeneficiaireRichTextBox.AppendText("Carte Vitale de démonstration  |  ")
            Case "T"
                CurrentBeneficiaireRichTextBox.AppendText("Carte Vitale de test  |  ")
        End Select
        'N° de série de la carte Vitale
        CurrentBeneficiaireRichTextBox.AppendText("N° de série de la carte Vitale:" + CurrentBenéficiaire.G101C2 + "  |  ")
        'Date de fin de validité carte Vitale
        CurrentBeneficiaireRichTextBox.AppendText("Date de fin de validité carte Vitale:" + Mid(CurrentBenéficiaire.G101C3, 7, 2) + "/" + Mid(CurrentBenéficiaire.G101C3, 5, 2) + "/" + Mid(CurrentBenéficiaire.G101C3, 1, 4) + "  |  ")
        'Type d’identification du porteur de la carte
        Select Case CurrentBenéficiaire.G101C7
            Case "A"
                CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Le n° national d'immatriculation est celui de l'assuré  |  ")
            Case "B"
                CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Le n° national d'immatriculation est celui de l'ayant-droit   |  ")
        End Select

        'NIR
        NirTextBox.Text = CurrentBenéficiaire.G101C8
        CléduNIRTextBox.Text = CurrentBenéficiaire.G101C9
        'Code régime
        RégimeTextBox.Text = TraductionCodeRégime(CurrentBenéficiaire.G101C10)
        'recherche de l'intitulé organislme destinataire dans taborgdest'Caisse gestionnaire'Centre gestionnaire
        Select Case Me.AmoTableAdapter1.SelectCount(CurrentBenéficiaire.G101C10, CurrentBenéficiaire.G101C11, CurrentBenéficiaire.G101C12)
            Case 0
                MsgBox("AUCUN ENREGISTREMENT POUR:" + Chr(10) + "Code Régime:" + CurrentBenéficiaire.G101C10 + Chr(10) + "Caisse Gestionnaire:" + CurrentBenéficiaire.G101C11 + Chr(10) + "Centre Gestionnaire:" + CurrentBenéficiaire.G101C12, MsgBoxStyle.Critical)
            Case 1
                Dim Libellé As String
                Libellé = Me.AmoTableAdapter1.SelectLibellé(CurrentBenéficiaire.G101C10, CurrentBenéficiaire.G101C11, CurrentBenéficiaire.G101C12)
                CaisseTextBox.Text = Libellé + " " + CurrentBenéficiaire.G101C10 + "  " + CurrentBenéficiaire.G101C11 + "  " + CurrentBenéficiaire.G101C12
            Case Else
                MsgBox("PLUSIEURS ENREGISTREMENTS POUR:" + Chr(10) + "Code Régime:" + CurrentBenéficiaire.G101C10 + Chr(10) + "Caisse Gestionnaire:" + CurrentBenéficiaire.G101C11 + Chr(10) + "Centre Gestionnaire:" + CurrentBenéficiaire.G101C12, MsgBoxStyle.Critical)
        End Select
        'Code gestion
        CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + TraductionG101C13(CurrentBenéficiaire.G101C13))
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'SERVICE AMO FAMILLE
        TailleMax = 2
        ValeurChamp = "12"
        'Code service AMO Famille
        If CurrentBenéficiaire.G102C1 <> "0" And CurrentBenéficiaire.G102C1 <> "00" Then
            CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "SERVICE AMO FAMILLE:" + Chr(10) + "Code service AMO Famille" + CurrentBenéficiaire.G102C1 + "  |  ")
            'Date de début du service AMO Famille
            CurrentBeneficiaireRichTextBox.AppendText("Date de début du service AMO Famille:" + Mid(CurrentBenéficiaire.G102C2, 7, 2) + "/" + Mid(CurrentBenéficiaire.G102C2, 5, 2) + "/" + Mid(CurrentBenéficiaire.G102C2, 1, 4) + "  |  ")
            'Date de fin du service AMO Famille
            CurrentBeneficiaireRichTextBox.AppendText("Date de fin du service AMO Famille:" + Mid(CurrentBenéficiaire.G102C3, 7, 2) + "/" + Mid(CurrentBenéficiaire.G102C3, 5, 2) + "/" + Mid(CurrentBenéficiaire.G102C3, 1, 4) + "  |  ")
        End If

        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'DONNEES ACCIDENT DU TRAVAIL
        'Organisme gestionnaire du risque AT
        If CurrentBenéficiaire.G103C1 <> "" Then CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "DONNEES ACCIDENT DU TRAVAIL:" + Chr(10) + "Organisme gestionnaire du risque AT:" + CurrentBenéficiaire.G103C1)
        'Code AT Budget Global des Hôpitaux
        If CurrentBenéficiaire.G103C2 <> "" Then CurrentBeneficiaireRichTextBox.AppendText(" | Code AT Budget Global des Hôpitaux:" + CurrentBenéficiaire.G103C2)
        'Identifiant AT
        If CurrentBenéficiaire.G103C3 <> "" Then CurrentBeneficiaireRichTextBox.AppendText(" | Identifiant AT:" + CurrentBenéficiaire.G103C3)
        'Organisme gestionnaire AT1
        If CurrentBenéficiaire.G103C4 <> "" Then CurrentBeneficiaireRichTextBox.AppendText(" | Organisme gestionnaire AT1:" + CurrentBenéficiaire.G103C4)
        'Code AT1 BGDH
        If CurrentBenéficiaire.G103C5 <> "" Then CurrentBeneficiaireRichTextBox.AppendText(" | Code AT1 BGDH:" + CurrentBenéficiaire.G103C5)
        'Identifiant AT1
        If CurrentBenéficiaire.G103C6 <> "" Then CurrentBeneficiaireRichTextBox.AppendText(" | Identifiant AT1:" + CurrentBenéficiaire.G103C6)
        'Organisme gestionnaire AT2
        If CurrentBenéficiaire.G103C7 <> "" Then CurrentBeneficiaireRichTextBox.AppendText(" | Organisme gestionnaire AT2:" + CurrentBenéficiaire.G103C7)
        'Code AT2 BGDH
        If CurrentBenéficiaire.G103C8 <> "" Then CurrentBeneficiaireRichTextBox.AppendText(" | Code AT2 BGDH:" + CurrentBenéficiaire.G103C8)
        'Identifiant AT2
        If CurrentBenéficiaire.G103C9 <> "" Then CurrentBeneficiaireRichTextBox.AppendText(" | Identifiant AT2:" + CurrentBenéficiaire.G103C9)
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'DONNEES BENEFICIAIRE
        'COMPTOIR_MAIN.ComboBoxLECTURE_VITALE.Items.Add(CurrentBenéficiaire.G104C1 + " " + CurrentBenéficiaire.G104C2 + " " + CurrentBenéficiaire.G104C3)
        ComboBoxLECTURE_VITALE.Text = CurrentBenéficiaire.G104C1 + " " + CurrentBenéficiaire.G104C2 + " " + CurrentBenéficiaire.G104C3
        'COMPTOIR_MAIN.ComboBoxLECTURE_VITALE.SelectedIndex = 0
        'COMPTOIR_MAIN.PeriodeCodeCouverture.Items.Clear()

        'Adresse
        CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Adresse:" + CurrentBenéficiaire.G104C4 + "  ")
        CurrentBeneficiaireRichTextBox.AppendText(CurrentBenéficiaire.G104C5 + "  ")
        CurrentBeneficiaireRichTextBox.AppendText(CurrentBenéficiaire.G104C6 + "  ")
        CurrentBeneficiaireRichTextBox.AppendText(CurrentBenéficiaire.G104C7 + "  ")
        CurrentBeneficiaireRichTextBox.AppendText(CurrentBenéficiaire.G104C8)
        'NIR certifié
        If CurrentBenéficiaire.G104C9 <> "" Then
            CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "NIR certifié:" + CurrentBenéficiaire.G104C9)
            'Clé du NIR certifié
            CurrentBeneficiaireRichTextBox.AppendText(" | clé:" + CurrentBenéficiaire.G104C10)
            'Date de certification du NIR
            CurrentBeneficiaireRichTextBox.AppendText(" | Date certification:" + Mid(CurrentBenéficiaire.G104C11, 7, 2) + "/" + Mid(CurrentBenéficiaire.G104C11, 5, 2) + "/" + Mid(CurrentBenéficiaire.G104C11, 1, 4))
        End If
        'Date de naissance du bénéficiaire
        CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Date de naissance:" + Mid(CurrentBenéficiaire.G104C12, 7, 2) + "/" + Mid(CurrentBenéficiaire.G104C12, 5, 2) + "/" + Mid(CurrentBenéficiaire.G104C12, 1, 4) + "  |  ")
        'Rang de naissance
        CurrentBeneficiaireRichTextBox.AppendText("Rang de naissance:" + CurrentBenéficiaire.G104C13)
        'Qualité
        CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Qualité: " + TraductionG104C14(CurrentBenéficiaire.G104C14))
        'Code service AMO bénéficiaire
        CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "service AMO bénéficiaire: " + TraductionG104C15(CurrentBenéficiaire.G104C15))
        'Date du service AMO bénéficiaire
        If CurrentBenéficiaire.G104C16 <> "" Or CurrentBenéficiaire.G104C17 <> "" Then
            CurrentBeneficiaireRichTextBox.AppendText("   du " + Mid(CurrentBenéficiaire.G104C16, 7, 2) + "/" + Mid(CurrentBenéficiaire.G104C16, 5, 2) + "/" + Mid(CurrentBenéficiaire.G104C16, 1, 4))
            CurrentBeneficiaireRichTextBox.AppendText(" au " + Mid(CurrentBenéficiaire.G104C17, 7, 2) + "/" + Mid(CurrentBenéficiaire.G104C17, 5, 2) + "/" + Mid(CurrentBenéficiaire.G104C17, 1, 4))
        End If
        'Données RUF AMO bénéficiaire
        If CurrentBenéficiaire.G104C18 <> "" Then CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Données RUF AMO bénéficiaire: " + CurrentBenéficiaire.G104C18)

        ''affiche medecin connu
        'If ClientConnu() = True Then
        '    CurrentBenéficiaire.IDPrescripteur = VitaleTableAdapter.SELECT_IDPrescripteur(CurrentBenéficiaire.G101C8, CurrentBenéficiaire.G101C9, CurrentBenéficiaire.G104C1, CurrentBenéficiaire.G104C2, CurrentBenéficiaire.G104C3, CurrentBenéficiaire.G104C12, CurrentBenéficiaire.G104C14)
        '    Affiche_prescripteur_By_ID(CurrentBenéficiaire.IDPrescripteur)
        'Else
        '    TextBox_Prescripteur_NumID.Text = ""
        'End If

        'affiche médecin traitant déclaré
        If CurrentBenéficiaire.G104C18 <> "" Then
            If Mid(CurrentBenéficiaire.G104C18, 1, 1) = "0" Then
                Médecin_Traitant_Label.Text = "Le bénéficiaire a déclaré" + Chr(10) + "un médecin traitant"

            End If
            If Mid(CurrentBenéficiaire.G104C18, 1, 1) = "1" Then
                Médecin_Traitant_Label.Text = "Le bénéficiaire n’a pas déclaré de" + Chr(10) + "médecin traitant ou n’est pas" + Chr(10) + "concerné par le médecin traitant"
            End If
        Else
            Médecin_Traitant_Label.Text = ""
        End If


        'Période de droits AMO              
        'Date de droits AMO
        For i = 1 To CurrentBenéficiaire.G105C1.Length - 1
            If CurrentBenéficiaire.G105C1(i) <> "" Or CurrentBenéficiaire.G105C2(i) <> "" Then
                CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Date de droits AMO: du " + Mid(CurrentBenéficiaire.G105C1(i), 7, 2) + "/" + Mid(CurrentBenéficiaire.G105C1(i), 5, 2) + "/" + Mid(CurrentBenéficiaire.G105C1(i), 1, 4))
                CurrentBeneficiaireRichTextBox.AppendText(" au  " + Mid(CurrentBenéficiaire.G105C2(i), 7, 2) + "/" + Mid(CurrentBenéficiaire.G105C2(i), 5, 2) + "/" + Mid(CurrentBenéficiaire.G105C2(i), 1, 4))
            End If
        Next

        'Données Mutuelle
        If CurrentBenéficiaire.G107C1 <> "" Then

            'Garanties effectives
            If CurrentBenéficiaire.G107C2 <> "" And Mid(CurrentBenéficiaire.G107C2, 2, 1) = "N" Then
                MsgBox("Données mutuelles en carte vitale:" + Chr(10) + "Pharmacie non garantie", MsgBoxStyle.Information)
            End If

            'Identification Mutuelle
            If CurrentBenéficiaire.G107C4 <> "" Then
                AMC_NumAMC_TextBox.Text = Mid(CurrentBenéficiaire.G107C5, 1, 10)
            End If
            MUT_NumMutuelle_TextBox.Text = CurrentBenéficiaire.G107C1
            'Indicateur de traitement mutuelle
            AMC_Indicateurdetrairement_TextBox.Text = CurrentBenéficiaire.G107C3
            'Type de services associés
            If CurrentBenéficiaire.G107C4 <> "" Then
                CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Données Mutuelle: Type de services associés: ")
                Select Case Trim(CurrentBenéficiaire.G107C4)
                    Case "1"
                        CurrentBeneficiaireRichTextBox.AppendText("Numéro téléphonique")
                    Case "2"
                        CurrentBeneficiaireRichTextBox.AppendText("Code Minitel")
                    Case "3"
                        CurrentBeneficiaireRichTextBox.AppendText("Adresse Transpac")
                    Case "4"
                        CurrentBeneficiaireRichTextBox.AppendText("Adresse Internet")
                    Case "5"
                        CurrentBeneficiaireRichTextBox.AppendText("Texte libre")
                    Case "6"
                        CurrentBeneficiaireRichTextBox.AppendText("Informations structurées à afficher")
                    Case "7"
                        CurrentBeneficiaireRichTextBox.AppendText("Informations structurées à traiter")
                    Case "R"
                        CurrentBeneficiaireRichTextBox.AppendText("Valeur réservée à l’usage de la carte")
                End Select
            End If
            'Services associés au contrat
            If CurrentBenéficiaire.G107C5 <> "" Then CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Données Mutuelle: Services associés au contrat: " + CurrentBenéficiaire.G107C5)
            'Code aiguillage STS
            If CurrentBenéficiaire.G107C6 <> "" Then CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Données Mutuelle: Code aiguillage STS:" + CurrentBenéficiaire.G107C6)
            'Période de droits Mutuellede 0 à 3 occurences, selon le groupe 107
            'Date de droits mutuelle
            For i = 0 To CurrentBenéficiaire.G108C1.Length - 1
                If CurrentBenéficiaire.G108C1(i) <> "" Or CurrentBenéficiaire.G108C2(i) <> "" Then
                    CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Date de droits mutuelle: du " + Mid(CurrentBenéficiaire.G108C1(i), 7, 2) + "/" + Mid(CurrentBenéficiaire.G108C1(i), 5, 2) + "/" + Mid(CurrentBenéficiaire.G108C1(i), 1, 4))
                    CurrentBeneficiaireRichTextBox.AppendText(" au  " + Mid(CurrentBenéficiaire.G108C2(i), 7, 2) + "/" + Mid(CurrentBenéficiaire.G108C2(i), 5, 2) + "/" + Mid(CurrentBenéficiaire.G108C2(i), 1, 4))
                End If
            Next
        End If
        'recupère les data amc dans la base et les compare avec données en carte
        If ClientConnu() = True Then
            GetAMCdata()
            CompareAMCdata()
        Else
            If AMC_Piècejustificative_ComboBox.Items.Count < 5 Then
                AMC_Piècejustificative_ComboBox.Items.Add("carte Vitale (4)")
            End If
            AMC_Piècejustificative_ComboBox.SelectedIndex = 4
            'nouveau client affichage date AMC si en carte
            If CurrentBenéficiaire.G109C1 <> "" Then
                Affiche_Grp109()
            ElseIf CurrentBenéficiaire.G107C1 <> "" Then
                choix_période_droits_mutuelle()
            End If
        End If
        '---------------------------------------------------------------------------------------------------------------
        '---------------------------------------------------------------------------------------------------------------
        'affichage intitulé AMC
        AMC_NumAMC_TextBox_Validated(Nothing, Nothing)
        '---------------------------------------------------------------------------------------------------------------
        'affichage intitulé AMC
        Dim mydatatable As DataTable = Me.AMC_Contrat_TypeTableAdapter.GetDataById(CurrentBenéficiaire.AMC_TypeContrat)
        If mydatatable.Rows.Count = 1 Then
            For c = 0 To mydatatable.Columns.Count - 1
                Select Case mydatatable.Columns.Item(c).ColumnName
                    Case "Intitulé"
                        AMC_Couverture_TextBox.Text = mydatatable(0).Item(c)
                End Select
            Next
        End If
        '---------------------------------------------------------------------------------------------------------------
        'Controle Groupe 105 : Période de droits AMO
        If Recherche_Période_AMO() = False Then
            RégimeTextBox.Text = RégimeTextBox.Text + "  (DROITS FERMÉS)"
            RégimeTextBox.BackColor = Color.Red
        Else
            RégimeTextBox.BackColor = Color.White
        End If

        AMC_NumAMC_TextBox_Validated(Nothing, Nothing)
        MUT_NumMutuelle_TextBox_Validated(Nothing, Nothing)
        AMC_Numadhérent_TextBox_Validated(Nothing, Nothing)
        AMC_DateDebut_MaskedTextBox_Validated(Nothing, Nothing)
        AMC_DateFin_MaskedTextBox_Validated(Nothing, Nothing)
        AMC_Code_Aiguillage_STS_TextBox_Validated(Nothing, Nothing)
        AMC_Indicateurdetrairement_TextBox_Validated(Nothing, Nothing)
        MUT_IDassure_TextBox_Validated(Nothing, Nothing)
        AMC_CodeRoutage_TextBox_Validated(Nothing, Nothing)
        AMC_IdHote_TextBox_Validated(Nothing, Nothing)
        AMC_NomDomaine_TextBox_Validated(Nothing, Nothing)
        AMC_Type_Convention_TextBox_Validated(Nothing, Nothing)
        AMC_Critère_secondaire_TextBox_Validated(Nothing, Nothing)


        'Fiche d’information PDT-INF-071
        Dim code_situation As String = CodeSituation(Date_Droits_AMO, False)
        If code_situation = "0103" Or code_situation = "0107" Or code_situation = "0110" Or code_situation = "0203" Or _
           code_situation = "0207" Or code_situation = "0405" Or code_situation = "1003" Or code_situation = "9003" Then
            NatureAssurance_Button.Text = "MATERNITE"
        End If

        'SMG en carte
        If CurrentBenéficiaire.G101C10 = "08" And CurrentBenéficiaire.G101C11 = "835" And CurrentBenéficiaire.G101C12 = "0300" Then
            NatureAssurance_Button.Text = "SMG"
        End If

    End Sub

    Private Sub ComboBoxLECTURE_VITALE_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBoxLECTURE_VITALE.GotFocus
        CurrentBeneficiaireRichTextBox.Visible = True
    End Sub


    'recherche droits dans bdd
    Private Sub ComboBoxLECTURE_VITALE_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ComboBoxLECTURE_VITALE.KeyDown
        Dim recherchebdd As Boolean = True
        If e.KeyCode = Keys.Enter Then
            For i = 0 To ComboBoxLECTURE_VITALE.Items.Count - 1
                If ComboBoxLECTURE_VITALE.Text = ComboBoxLECTURE_VITALE.Items.Item(i) Then
                    recherchebdd = False
                End If
            Next
            If recherchebdd = True Then

                ReDim tab_current_formule_STS(0)
                current_formule_STS.Clear()
                CurrentConvention.clear()

                SGD_LibererSession(NumeroSessionVitale)
                CurrentBenéficiaire.clear()
                CurrentBeneficiaireRichTextBox.Clear()
                ClearGroupBox(AssuréGroupBox, True)
                ClearGroupBox(ASSURANCE_COMPLEMENTAIREGroupBox, False)
                ClearGroupBox(PrescripteurGroupBox, True)
                Choix_Bénéficiaire.Visible = True
                DatePrecription.Enabled = True
                AMC_Piècejustificative_ComboBox.SelectedIndex = 2
            End If
        End If

    End Sub

    'GetDataBénéficiaire: remplit CurrentBénéfficiaire by G101C8:NIR, G104C12:datenaissance, G104C13:Rang, G104C14:Qualité
    Public Sub GetDataBénéficiaire()

        ReDim CurrentBenéficiaire.G105C1(3)
        ReDim CurrentBenéficiaire.G105C2(3)
        ReDim CurrentBenéficiaire.G106C1(7)
        ReDim CurrentBenéficiaire.G106C2(7)
        ReDim CurrentBenéficiaire.G106C3(7)
        ReDim CurrentBenéficiaire.G106C4(7)
        ReDim CurrentBenéficiaire.G108C1(3)
        ReDim CurrentBenéficiaire.G108C2(3)
        Dim mydatatable = Me.VitaleTableAdapter.GetDataBénéficiaire(CurrentBenéficiaire.G101C8, CurrentBenéficiaire.G104C12, CurrentBenéficiaire.G104C13, CurrentBenéficiaire.G104C14)

        For c = 0 To mydatatable.Columns.Count - 1
            Select Case mydatatable.Columns.Item(c).ColumnName
                Case "G101C2"
                    CurrentBenéficiaire.G101C2 = mydatatable(0).Item(c).ToString
                Case "G101C3"
                    CurrentBenéficiaire.G101C3 = mydatatable(0).Item(c).ToString
                Case "G101C7"
                    CurrentBenéficiaire.G101C7 = mydatatable(0).Item(c).ToString
                Case "G101C8"
                    CurrentBenéficiaire.G101C8 = mydatatable(0).Item(c).ToString
                Case "G101C9"
                    CurrentBenéficiaire.G101C9 = mydatatable(0).Item(c).ToString
                Case "G101C10"
                    CurrentBenéficiaire.G101C10 = mydatatable(0).Item(c).ToString
                Case "G101C11"
                    CurrentBenéficiaire.G101C11 = mydatatable(0).Item(c).ToString
                Case "G101C12"
                    CurrentBenéficiaire.G101C12 = mydatatable(0).Item(c).ToString
                Case "G101C13"
                    CurrentBenéficiaire.G101C13 = mydatatable(0).Item(c).ToString
                Case "G102C1"
                    CurrentBenéficiaire.G102C1 = mydatatable(0).Item(c).ToString
                Case "G102C2"
                    CurrentBenéficiaire.G102C2 = mydatatable(0).Item(c).ToString
                Case "G102C3"
                    CurrentBenéficiaire.G102C3 = mydatatable(0).Item(c).ToString
                Case "G103C1"
                    CurrentBenéficiaire.G103C1 = mydatatable(0).Item(c).ToString
                Case "G103C2"
                    CurrentBenéficiaire.G103C2 = mydatatable(0).Item(c).ToString
                Case "G103C3"
                    CurrentBenéficiaire.G103C3 = mydatatable(0).Item(c).ToString
                Case "G103C4"
                    CurrentBenéficiaire.G103C4 = mydatatable(0).Item(c).ToString
                Case "G103C5"
                    CurrentBenéficiaire.G103C5 = mydatatable(0).Item(c).ToString
                Case "G103C6"
                    CurrentBenéficiaire.G103C6 = mydatatable(0).Item(c).ToString
                Case "G103C7"
                    CurrentBenéficiaire.G103C7 = mydatatable(0).Item(c).ToString
                Case "G103C8"
                    CurrentBenéficiaire.G103C8 = mydatatable(0).Item(c).ToString
                Case "G103C9"
                    CurrentBenéficiaire.G103C9 = mydatatable(0).Item(c).ToString
                Case "G104C1"
                    CurrentBenéficiaire.G104C1 = mydatatable(0).Item(c).ToString
                Case "G104C2"
                    CurrentBenéficiaire.G104C2 = mydatatable(0).Item(c).ToString
                Case "G104C3"
                    CurrentBenéficiaire.G104C3 = mydatatable(0).Item(c).ToString
                Case "G104C4"
                    CurrentBenéficiaire.G104C4 = mydatatable(0).Item(c).ToString
                Case "G104C5"
                    CurrentBenéficiaire.G104C5 = mydatatable(0).Item(c).ToString
                Case "G104C6"
                    CurrentBenéficiaire.G104C6 = mydatatable(0).Item(c).ToString
                Case "G104C7"
                    CurrentBenéficiaire.G104C7 = mydatatable(0).Item(c).ToString
                Case "G104C8"
                    CurrentBenéficiaire.G104C8 = mydatatable(0).Item(c).ToString
                Case "G104C9"
                    CurrentBenéficiaire.G104C9 = mydatatable(0).Item(c).ToString
                Case "G104C10"
                    CurrentBenéficiaire.G104C10 = mydatatable(0).Item(c).ToString
                Case "G104C11"
                    CurrentBenéficiaire.G104C11 = mydatatable(0).Item(c).ToString
                    'Case "G104C12"
                    '    CurrentBenéficiaire.G104C12 = mydatatable(0).Item(c).ToString
                    'Case "G104C13"
                    '    CurrentBenéficiaire.G104C13 = mydatatable(0).Item(c).ToString
                    'Case "G104C14"
                    '    CurrentBenéficiaire.G104C14 = mydatatable(0).Item(c).ToString
                Case "G104C15"
                    CurrentBenéficiaire.G104C15 = mydatatable(0).Item(c).ToString
                Case "G104C16"
                    CurrentBenéficiaire.G104C16 = mydatatable(0).Item(c).ToString
                Case "G104C17"
                    CurrentBenéficiaire.G104C17 = mydatatable(0).Item(c).ToString
                Case "G104C18"
                    CurrentBenéficiaire.G104C18 = mydatatable(0).Item(c).ToString
                Case "G105C1O1"
                    CurrentBenéficiaire.G105C1(1) = mydatatable(0).Item(c).ToString
                Case "G105C2O1"
                    CurrentBenéficiaire.G105C2(1) = mydatatable(0).Item(c).ToString
                Case "G105C1O2"
                    CurrentBenéficiaire.G105C1(2) = mydatatable(0).Item(c).ToString
                Case "G105C2O2"
                    CurrentBenéficiaire.G105C2(2) = mydatatable(0).Item(c).ToString
                Case "G105C1O3"
                    CurrentBenéficiaire.G105C1(3) = mydatatable(0).Item(c).ToString
                Case "G105C2O3"
                    CurrentBenéficiaire.G105C2(3) = mydatatable(0).Item(c).ToString
                Case "G106C1O1"
                    CurrentBenéficiaire.G106C1(0) = mydatatable(0).Item(c).ToString
                Case "G106C2O1"
                    CurrentBenéficiaire.G106C2(0) = mydatatable(0).Item(c).ToString
                Case "G106C3O1"
                    CurrentBenéficiaire.G106C3(0) = mydatatable(0).Item(c).ToString
                Case "G106C4O1"
                    CurrentBenéficiaire.G106C4(0) = mydatatable(0).Item(c).ToString
                Case "G106C1O2"
                    CurrentBenéficiaire.G106C1(1) = mydatatable(0).Item(c).ToString
                Case "G106C2O2"
                    CurrentBenéficiaire.G106C2(1) = mydatatable(0).Item(c).ToString
                Case "G106C3O2"
                    CurrentBenéficiaire.G106C3(1) = mydatatable(0).Item(c).ToString
                Case "G106C4O2"
                    CurrentBenéficiaire.G106C4(1) = mydatatable(0).Item(c).ToString
                Case "G106C1O3"
                    CurrentBenéficiaire.G106C1(2) = mydatatable(0).Item(c).ToString
                Case "G106C2O3"
                    CurrentBenéficiaire.G106C2(2) = mydatatable(0).Item(c).ToString
                Case "G106C3O3"
                    CurrentBenéficiaire.G106C3(2) = mydatatable(0).Item(c).ToString
                Case "G106C4O3"
                    CurrentBenéficiaire.G106C4(2) = mydatatable(0).Item(c).ToString
                Case "G106C1O4"
                    CurrentBenéficiaire.G106C1(3) = mydatatable(0).Item(c).ToString
                Case "G106C2O4"
                    CurrentBenéficiaire.G106C2(3) = mydatatable(0).Item(c).ToString
                Case "G106C3O4"
                    CurrentBenéficiaire.G106C3(3) = mydatatable(0).Item(c).ToString
                Case "G106C4O4"
                    CurrentBenéficiaire.G106C4(3) = mydatatable(0).Item(c).ToString
                Case "G106C1O5"
                    CurrentBenéficiaire.G106C1(4) = mydatatable(0).Item(c).ToString
                Case "G106C2O5"
                    CurrentBenéficiaire.G106C2(4) = mydatatable(0).Item(c).ToString
                Case "G106C3O5"
                    CurrentBenéficiaire.G106C3(4) = mydatatable(0).Item(c).ToString
                Case "G106C4O5"
                    CurrentBenéficiaire.G106C4(4) = mydatatable(0).Item(c).ToString
                Case "G106C1O6"
                    CurrentBenéficiaire.G106C1(5) = mydatatable(0).Item(c).ToString
                Case "G106C2O6"
                    CurrentBenéficiaire.G106C2(5) = mydatatable(0).Item(c).ToString
                Case "G106C3O6"
                    CurrentBenéficiaire.G106C3(5) = mydatatable(0).Item(c).ToString
                Case "G106C4O6"
                    CurrentBenéficiaire.G106C4(5) = mydatatable(0).Item(c).ToString
                Case "G106C1O7"
                    CurrentBenéficiaire.G106C1(6) = mydatatable(0).Item(c).ToString
                Case "G106C2O7"
                    CurrentBenéficiaire.G106C2(6) = mydatatable(0).Item(c).ToString
                Case "G106C3O7"
                    CurrentBenéficiaire.G106C3(6) = mydatatable(0).Item(c).ToString
                Case "G106C4O7"
                    CurrentBenéficiaire.G106C4(6) = mydatatable(0).Item(c).ToString
                Case "G107C1"
                    CurrentBenéficiaire.G107C1 = mydatatable(0).Item(c).ToString
                Case "G107C2"
                    CurrentBenéficiaire.G107C2 = mydatatable(0).Item(c).ToString
                Case "G107C3"
                    CurrentBenéficiaire.G107C3 = mydatatable(0).Item(c).ToString
                Case "G107C4"
                    CurrentBenéficiaire.G107C4 = mydatatable(0).Item(c).ToString
                Case "G107C5"
                    CurrentBenéficiaire.G107C5 = mydatatable(0).Item(c).ToString
                Case "G107C6"
                    CurrentBenéficiaire.G107C6 = mydatatable(0).Item(c).ToString
                Case "G108C1O1"
                    CurrentBenéficiaire.G108C1(1) = mydatatable(0).Item(c).ToString
                Case "G108C2O1"
                    CurrentBenéficiaire.G108C2(1) = mydatatable(0).Item(c).ToString
                Case "G108C1O2"
                    CurrentBenéficiaire.G108C1(2) = mydatatable(0).Item(c).ToString
                Case "G108C2O2"
                    CurrentBenéficiaire.G108C2(2) = mydatatable(0).Item(c).ToString
                Case "G108C1O3"
                    CurrentBenéficiaire.G108C1(3) = mydatatable(0).Item(c).ToString
                Case "G108C2O3"
                    CurrentBenéficiaire.G108C2(3) = mydatatable(0).Item(c).ToString
                Case "G109C1"
                    CurrentBenéficiaire.G109C1 = mydatatable(0).Item(c).ToString
                Case "G109C2"
                    CurrentBenéficiaire.G109C2 = mydatatable(0).Item(c).ToString
                Case "G109C3"
                    CurrentBenéficiaire.G109C3 = mydatatable(0).Item(c).ToString
                Case "G109C4"
                    CurrentBenéficiaire.G109C4 = mydatatable(0).Item(c).ToString
                Case "G109C5"
                    CurrentBenéficiaire.G109C5 = mydatatable(0).Item(c).ToString
                Case "G109C6"
                    CurrentBenéficiaire.G109C6 = mydatatable(0).Item(c).ToString
                Case "G109C7"
                    CurrentBenéficiaire.G109C7 = mydatatable(0).Item(c).ToString
                Case "G109C8"
                    CurrentBenéficiaire.G109C8 = mydatatable(0).Item(c).ToString
                Case "G109C9"
                    CurrentBenéficiaire.G109C9 = mydatatable(0).Item(c).ToString
                Case "G109C10"
                    CurrentBenéficiaire.G109C10 = mydatatable(0).Item(c).ToString
                Case "G109C11"
                    CurrentBenéficiaire.G109C11 = mydatatable(0).Item(c).ToString
                Case "G109C12"
                    CurrentBenéficiaire.G109C12 = mydatatable(0).Item(c).ToString
                Case "G111C1"
                    CurrentBenéficiaire.G111C1 = mydatatable(0).Item(c).ToString
                Case "G101C1"
                    CurrentBenéficiaire.G101C1 = mydatatable(0).Item(c).ToString
                Case "G101C14"
                    CurrentBenéficiaire.G101C14 = mydatatable(0).Item(c).ToString
                Case "G101C5"
                    CurrentBenéficiaire.G101C5 = mydatatable(0).Item(c).ToString
                Case "G101C6"
                    CurrentBenéficiaire.G101C6 = mydatatable(0).Item(c).ToString
                Case "IDPrescripteur"
                    CurrentBenéficiaire.IDPrescripteur = mydatatable(0).Item(c).ToString
                Case "AMC_DateDébut"
                    CurrentBenéficiaire.AMC_DateDébut = mydatatable(0).Item(c).ToString
                Case "AMC_DateFin"
                    CurrentBenéficiaire.AMC_DateFin = mydatatable(0).Item(c).ToString
                Case "AMC_NumAdherent"
                    CurrentBenéficiaire.AMC_NumAdherent = mydatatable(0).Item(c).ToString
                Case "AMC_NumOrganisme"
                    CurrentBenéficiaire.AMC_NumOrganisme = mydatatable(0).Item(c).ToString
                Case "AMC_Piecejustificative"
                    CurrentBenéficiaire.AMC_Piecejustificative = mydatatable(0).Item(c).ToString
                Case "AMC_Indicateurdetrairement"
                    CurrentBenéficiaire.AMC_Indicateurdetrairement = mydatatable(0).Item(c).ToString
                Case "Assuré"
                    CurrentBenéficiaire.Assuré = mydatatable(0).Item(c).ToString
                Case "G1420C1"
                    CurrentBenéficiaire.G1420C1 = mydatatable(0).Item(c).ToString
                Case "G1420C2"
                    CurrentBenéficiaire.G1420C2 = mydatatable(0).Item(c).ToString
                Case "G1420C3"
                    CurrentBenéficiaire.G1420C3 = mydatatable(0).Item(c).ToString
                Case "G1511C2"
                    CurrentBenéficiaire.G1511C2 = mydatatable(0).Item(c).ToString
            End Select

        Next
        '________________________________________________________________________________________________________________________________________________
        'affichage DONNEES ASSURE
        Me.CurrentBeneficiaireRichTextBox.Clear()
        Me.CurrentBeneficiaireRichTextBox.AppendText("DONNEES BENEFICIAIRE:" + Chr(10))
        'Type de carte Vitale
        Select Case CurrentBenéficiaire.G101C1
            Case "D"
                Me.CurrentBeneficiaireRichTextBox.AppendText("Carte Vitale de démonstration  |  ")
            Case "T"
                Me.CurrentBeneficiaireRichTextBox.AppendText("Carte Vitale de test  |  ")
        End Select
        'N° de série de la carte Vitale
        Me.CurrentBeneficiaireRichTextBox.AppendText("N° de série de la carte Vitale:" + CurrentBenéficiaire.G101C2 + "  |  ")
        'Date de fin de validité carte Vitale
        Me.CurrentBeneficiaireRichTextBox.AppendText("Date de fin de validité carte Vitale:" + Mid(CurrentBenéficiaire.G101C3, 7, 2) + "/" + Mid(CurrentBenéficiaire.G101C3, 5, 2) + "/" + Mid(CurrentBenéficiaire.G101C3, 1, 4) + "  |  ")
        If Val(CurrentBenéficiaire.G101C3) <> 0 And Val(CurrentBenéficiaire.G101C3) < Val(Format(Now, "yyyyMMdd") + "0000") Then
            MsgBox("La Date de Validité de la carte Vitale est dépassée", MsgBoxStyle.Information, "ATTENTION")
        End If
        'Type d’identification du porteur de la carte
        Select Case CurrentBenéficiaire.G101C7
            Case "A"
                Me.CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Le n° national d'immatriculation est celui de l'assuré  |  ")
            Case "B"
                Me.CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Le n° national d'immatriculation est celui de l'ayant-droit   |  ")
        End Select

        'NIR
        Me.NirTextBox.Text = CurrentBenéficiaire.G101C8
        Me.CléduNIRTextBox.Text = CurrentBenéficiaire.G101C9
        'Code régime
        Me.RégimeTextBox.Text = TraductionCodeRégime(CurrentBenéficiaire.G101C10)
        'recherche de l'intitulé organislme destinataire dans taborgdest'Caisse gestionnaire'Centre gestionnaire
        Select Case Me.AmoTableAdapter1.SelectCount(CurrentBenéficiaire.G101C10, CurrentBenéficiaire.G101C11, CurrentBenéficiaire.G101C12)
            Case 0
                MsgBox("AUCUN ENREGISTREMENT POUR:" + Chr(10) + "Code Régime:" + CurrentBenéficiaire.G101C10 + Chr(10) + "Caisse Gestionnaire:" + CurrentBenéficiaire.G101C11 + Chr(10) + "Centre Gestionnaire:" + CurrentBenéficiaire.G101C12, MsgBoxStyle.Critical)
            Case 1
                Dim Libellé As String
                Libellé = Me.AmoTableAdapter1.SelectLibellé(CurrentBenéficiaire.G101C10, CurrentBenéficiaire.G101C11, CurrentBenéficiaire.G101C12)
                CaisseTextBox.Text = Libellé + " " + CurrentBenéficiaire.G101C10 + "  " + CurrentBenéficiaire.G101C11 + "  " + CurrentBenéficiaire.G101C12
            Case Else
                MsgBox("PLUSIEURS ENREGISTREMENTS POUR:" + Chr(10) + "Code Régime:" + CurrentBenéficiaire.G101C10 + Chr(10) + "Caisse Gestionnaire:" + CurrentBenéficiaire.G101C11 + Chr(10) + "Centre Gestionnaire:" + CurrentBenéficiaire.G101C12, MsgBoxStyle.Critical)
        End Select
        'Code gestion
        Me.CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + TraductionG101C13(CurrentBenéficiaire.G101C13))
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'SERVICE AMO FAMILLE
        'Code service AMO Famille
        If CurrentBenéficiaire.G102C1 <> "0" And CurrentBenéficiaire.G102C1 <> "00" Then
            Me.CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "SERVICE AMO FAMILLE:" + Chr(10) + "Code service AMO Famille" + CurrentBenéficiaire.G102C1 + "  |  ")
            'Date de début du service AMO Famille
            Me.CurrentBeneficiaireRichTextBox.AppendText("Date de début du service AMO Famille:" + Mid(CurrentBenéficiaire.G102C2, 7, 2) + "/" + Mid(CurrentBenéficiaire.G102C2, 5, 2) + "/" + Mid(CurrentBenéficiaire.G102C2, 1, 4) + "  |  ")
            'Date de fin du service AMO Famille
            Me.CurrentBeneficiaireRichTextBox.AppendText("Date de fin du service AMO Famille:" + Mid(CurrentBenéficiaire.G102C3, 7, 2) + "/" + Mid(CurrentBenéficiaire.G102C3, 5, 2) + "/" + Mid(CurrentBenéficiaire.G102C3, 1, 4) + "  |  ")
        End If

        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'DONNEES ACCIDENT DU TRAVAIL
        'Organisme gestionnaire du risque AT
        If CurrentBenéficiaire.G103C1 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "DONNEES ACCIDENT DU TRAVAIL:" + Chr(10) + "Organisme gestionnaire du risque AT:" + CurrentBenéficiaire.G103C1)
        'Code AT Budget Global des Hôpitaux
        If CurrentBenéficiaire.G103C2 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText(" | Code AT Budget Global des Hôpitaux:" + CurrentBenéficiaire.G103C2)
        'Identifiant AT
        If CurrentBenéficiaire.G103C3 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText(" | Identifiant AT:" + CurrentBenéficiaire.G103C3)
        'Organisme gestionnaire AT1
        If CurrentBenéficiaire.G103C4 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText(" | Organisme gestionnaire AT1:" + CurrentBenéficiaire.G103C4)
        'Code AT1 BGDH
        If CurrentBenéficiaire.G103C5 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText(" | Code AT1 BGDH:" + CurrentBenéficiaire.G103C5)
        'Identifiant AT1
        If CurrentBenéficiaire.G103C6 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText(" | Identifiant AT1:" + CurrentBenéficiaire.G103C6)
        'Organisme gestionnaire AT2
        If CurrentBenéficiaire.G103C7 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText(" | Organisme gestionnaire AT2:" + CurrentBenéficiaire.G103C7)
        'Code AT2 BGDH
        If CurrentBenéficiaire.G103C8 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText(" | Code AT2 BGDH:" + CurrentBenéficiaire.G103C8)
        'Identifiant AT2
        If CurrentBenéficiaire.G103C9 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText(" | Identifiant AT2:" + CurrentBenéficiaire.G103C9)
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'DONNEES BENEFICIAIRE
        'me.ComboBoxLECTURE_VITALE.Items.Add(CurrentBenéficiaire.G104C1 + " " + CurrentBenéficiaire.G104C2 + " " + CurrentBenéficiaire.G104C3)
        Me.ComboBoxLECTURE_VITALE.Text = CurrentBenéficiaire.G104C1 + " " + CurrentBenéficiaire.G104C2 + " " + CurrentBenéficiaire.G104C3
        'me.ComboBoxLECTURE_VITALE.SelectedIndex = 0
        'me.PeriodeCodeCouverture.Items.Clear()

        'Adresse
        Me.CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Adresse:" + CurrentBenéficiaire.G104C4 + "  ")
        Me.CurrentBeneficiaireRichTextBox.AppendText(CurrentBenéficiaire.G104C5 + "  ")
        Me.CurrentBeneficiaireRichTextBox.AppendText(CurrentBenéficiaire.G104C6 + "  ")
        Me.CurrentBeneficiaireRichTextBox.AppendText(CurrentBenéficiaire.G104C7 + "  ")
        Me.CurrentBeneficiaireRichTextBox.AppendText(CurrentBenéficiaire.G104C8)
        'NIR certifié
        If CurrentBenéficiaire.G104C9 <> "" Then
            Me.CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "NIR certifié:" + CurrentBenéficiaire.G104C9)
            'Clé du NIR certifié
            Me.CurrentBeneficiaireRichTextBox.AppendText(" | clé:" + CurrentBenéficiaire.G104C10)
            'Date de certification du NIR
            Me.CurrentBeneficiaireRichTextBox.AppendText(" | Date certification:" + Mid(CurrentBenéficiaire.G104C11, 7, 2) + "/" + Mid(CurrentBenéficiaire.G104C11, 5, 2) + "/" + Mid(CurrentBenéficiaire.G104C11, 1, 4))
        End If
        'Date de naissance du bénéficiaire
        Me.CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Date de naissance:" + Mid(CurrentBenéficiaire.G104C12, 7, 2) + "/" + Mid(CurrentBenéficiaire.G104C12, 5, 2) + "/" + Mid(CurrentBenéficiaire.G104C12, 1, 4) + "  |  ")
        'Rang de naissance
        Me.CurrentBeneficiaireRichTextBox.AppendText("Rang de naissance:" + CurrentBenéficiaire.G104C13)
        'Qualité
        Me.CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Qualité: " + TraductionG104C14(CurrentBenéficiaire.G104C14))
        'Code service AMO bénéficiaire
        Me.CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "service AMO bénéficiaire: " + TraductionG104C15(CurrentBenéficiaire.G104C15))
        'Date du service AMO bénéficiaire
        If CurrentBenéficiaire.G104C16 <> "" Or CurrentBenéficiaire.G104C17 <> "" Then
            Me.CurrentBeneficiaireRichTextBox.AppendText("   du " + Mid(CurrentBenéficiaire.G104C16, 7, 2) + "/" + Mid(CurrentBenéficiaire.G104C16, 5, 2) + "/" + Mid(CurrentBenéficiaire.G104C16, 1, 4))
            Me.CurrentBeneficiaireRichTextBox.AppendText(" au " + Mid(CurrentBenéficiaire.G104C17, 7, 2) + "/" + Mid(CurrentBenéficiaire.G104C17, 5, 2) + "/" + Mid(CurrentBenéficiaire.G104C17, 1, 4))
        End If
        'Données RUF AMO bénéficiaire
        If CurrentBenéficiaire.G104C18 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Données RUF AMO bénéficiaire: " + CurrentBenéficiaire.G104C18)


        'affiche medecin connu
        If ClientConnu() = True Then
            CurrentBenéficiaire.IDPrescripteur = VitaleTableAdapter.SELECT_IDPrescripteur(CurrentBenéficiaire.G101C8, CurrentBenéficiaire.G101C9, CurrentBenéficiaire.G104C1, CurrentBenéficiaire.G104C2, CurrentBenéficiaire.G104C3, CurrentBenéficiaire.G104C12, CurrentBenéficiaire.G104C14)
            Dim mydatatable3 As DataTable = Me.PrescripteursTableAdapter.GetPrescripteurDataByIDinterne(CurrentBenéficiaire.IDPrescripteur)
            If mydatatable3.Rows.Count <> 0 Then
                For i = 0 To mydatatable3.Columns.Count - 1
                    If mydatatable3.Columns.Item(i).ColumnName = "NomPrénom" Then
                        PrescripteurTextBox.Text = mydatatable3(0).Item(i).ToString
                        Exit For
                    End If
                Next
            End If
        End If
        'Période de droits AMO              
        'Date de droits AMO
        For i = 1 To CurrentBenéficiaire.G105C1.Length - 1
            If CurrentBenéficiaire.G105C1(i) <> "" Or CurrentBenéficiaire.G105C2(i) <> "" Then
                Me.CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Date de droits AMO: du " + Mid(CurrentBenéficiaire.G105C1(i), 7, 2) + "/" + Mid(CurrentBenéficiaire.G105C1(i), 5, 2) + "/" + Mid(CurrentBenéficiaire.G105C1(i), 1, 4))
                Me.CurrentBeneficiaireRichTextBox.AppendText(" au  " + Mid(CurrentBenéficiaire.G105C2(i), 7, 2) + "/" + Mid(CurrentBenéficiaire.G105C2(i), 5, 2) + "/" + Mid(CurrentBenéficiaire.G105C2(i), 1, 4))
            End If
        Next


        'Données Mutuelle
        If CurrentBenéficiaire.G107C1 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "MUTUELLE:")
        'Identification Mutuelle
        If CurrentBenéficiaire.G107C1 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText("Identification:" + CurrentBenéficiaire.G107C1)
        'Garanties effectives
        If CurrentBenéficiaire.G107C2 <> "" Then
            Select Case Mid(CurrentBenéficiaire.G107C2, 2, 1)
                Case "O"
                    Me.CurrentBeneficiaireRichTextBox.AppendText(" | Pharmacie Garantie")
                Case "N"
                    Me.CurrentBeneficiaireRichTextBox.AppendText(" | Pharmacie NON Garantie")
            End Select
        End If
        'Indicateur de traitement mutuelle
        If CurrentBenéficiaire.G107C3 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText(" | Indic traitement:" + CurrentBenéficiaire.G107C3)
        'Type de services associés
        If CurrentBenéficiaire.G107C4 <> "" Then
            Select Case Trim(CurrentBenéficiaire.G107C4)
                Case "1"
                    Me.CurrentBeneficiaireRichTextBox.AppendText(" | Numéro téléphonique")
                Case "2"
                    Me.CurrentBeneficiaireRichTextBox.AppendText(" | Code Minitel")
                Case "3"
                    Me.CurrentBeneficiaireRichTextBox.AppendText(" | Adresse Transpac")
                Case "4"
                    Me.CurrentBeneficiaireRichTextBox.AppendText(" | Adresse Internet")
                Case "5"
                    Me.CurrentBeneficiaireRichTextBox.AppendText(" | Texte libre")
                Case "6"
                    Me.CurrentBeneficiaireRichTextBox.AppendText(" | Informations structurées à afficher")
                Case "7"
                    Me.CurrentBeneficiaireRichTextBox.AppendText(" | Informations structurées à traiter")
                Case "R"
                    Me.CurrentBeneficiaireRichTextBox.AppendText(" | Valeur réservée à l’usage de la carte")
            End Select
        End If
        'Services associés au contrat
        If CurrentBenéficiaire.G107C5 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText(" | N°org compl:" + CurrentBenéficiaire.G107C5)
        'Code aiguillage STS
        If CurrentBenéficiaire.G107C6 <> "" Then Me.CurrentBeneficiaireRichTextBox.AppendText(" | Code aiguillage STS:" + CurrentBenéficiaire.G107C6)

        'Période de droits Mutuellede 0 à 3 occurences, selon le groupe 107
        'Date de droits mutuelle
        For i = 0 To CurrentBenéficiaire.G108C1.Length - 1
            If CurrentBenéficiaire.G108C1(i) <> "" Or CurrentBenéficiaire.G108C2(i) <> "" Then
                Me.CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Date de droits mutuelle: du " + Mid(CurrentBenéficiaire.G108C1(i), 7, 2) + "/" + Mid(CurrentBenéficiaire.G108C1(i), 5, 2) + "/" + Mid(CurrentBenéficiaire.G108C1(i), 1, 4))
                Me.CurrentBeneficiaireRichTextBox.AppendText(" au  " + Mid(CurrentBenéficiaire.G108C2(i), 7, 2) + "/" + Mid(CurrentBenéficiaire.G108C2(i), 5, 2) + "/" + Mid(CurrentBenéficiaire.G108C2(i), 1, 4))
            End If
        Next

        'Données AMC
        Me.AMC_DateDebut_MaskedTextBox.Text = Mid(CurrentBenéficiaire.AMC_DateDébut, 7, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateDébut, 5, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateDébut, 1, 4)
        Me.AMC_DateFin_MaskedTextBox.Text = Mid(CurrentBenéficiaire.AMC_DateFin, 7, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateFin, 5, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateFin, 1, 4)
        Me.AMC_Couverture_TextBox.Text = CurrentBenéficiaire.AMC_TypeContrat + " progammez la requete pour obtenir l'intitulé"
        Me.AMC_Numadhérent_TextBox.Text = CurrentBenéficiaire.AMC_NumAdherent
        Me.AMC_NumAMC_TextBox.Text = CurrentBenéficiaire.AMC_NumOrganisme
        Me.AMC_Piècejustificative_ComboBox.Text = CurrentBenéficiaire.AMC_Piecejustificative
        Me.AMC_Indicateurdetrairement_TextBox.Text = CurrentBenéficiaire.AMC_Indicateurdetrairement
        'Indicateur Régime Alsace - Moselle(
        Select Case CurrentBenéficiaire.G1511C2
            Case "O"
                G1511C2_CheckBox1.Checked = True
            Case "N"
                G1511C2_CheckBox1.Checked = False
        End Select
    End Sub

    'recheche d'un intervalle en cours si existence Groupe 105 : Période de droits AMO 
    Public Function Recherche_Période_AMO() As Boolean
        If CurrentBenéficiaire.G101C8 = Config.Data_ContaceptifUrgence_NIR Then
            Return True
        End If
        If CheckBoxModeDegradé.Checked = True Then
            Return True
        End If
        Dim dates_found As Boolean = False
        Dim Intervalle_Dates_AMO_Courant As Boolean = False
        For i = 1 To 3
            If CurrentBenéficiaire.G105C1(i) <> "" Or CurrentBenéficiaire.G105C2(i) <> "" Then
                dates_found = True
            End If
        Next
        If dates_found = True Then
            For i = 1 To 3
                If CurrentBenéficiaire.G105C1(i) <> "" Or CurrentBenéficiaire.G105C2(i) <> "" Then
                    If (CurrentBenéficiaire.G105C1(i) = "" Or Val(CurrentBenéficiaire.G105C1(i)) <= Val(Format(Date_Droits_AMO, "yyyyMMdd") + "0000")) _
                  And (CurrentBenéficiaire.G105C2(i) = "" Or Val(CurrentBenéficiaire.G105C2(i)) >= Val(Format(Date_Droits_AMO, "yyyyMMdd") + "0000")) Then
                        Intervalle_Dates_AMO_Courant = True
                    End If
                End If
            Next
        End If
        If dates_found = True And Intervalle_Dates_AMO_Courant = False Then
            Return False
        Else
            Return True
        End If
    End Function

#End Region
#Region "Acquisition Droits AMC"
    'recupère les data amc dans la base
    Public Sub GetAMCdata()
        Dim mydatatable As DataTable = Me.VitaleTableAdapter.GetDataBénéficiaire(CurrentBenéficiaire.G101C8, CurrentBenéficiaire.G104C12, CurrentBenéficiaire.G104C13, CurrentBenéficiaire.G104C14)
        For c = 0 To mydatatable.Columns.Count - 1
            Select Case mydatatable.Columns.Item(c).ColumnName
                Case "AMC_NumOrganisme"
                    CurrentBenéficiaire.AMC_NumOrganisme = mydatatable(0).Item(c)
                Case "AMC_NumMutuelle"
                    CurrentBenéficiaire.AMC_NumMutuelle = mydatatable(0).Item(c)
                Case "AMC_NumAdherent"
                    CurrentBenéficiaire.AMC_NumAdherent = mydatatable(0).Item(c)
                Case "AMC_IDassure"
                    CurrentBenéficiaire.AMC_IDassure = mydatatable(0).Item(c)
                Case "AMC_TypeContrat"
                    CurrentBenéficiaire.AMC_TypeContrat = mydatatable(0).Item(c)
                Case "AMC_DateDébut"
                    CurrentBenéficiaire.AMC_DateDébut = mydatatable(0).Item(c)
                Case "AMC_DateFin"
                    CurrentBenéficiaire.AMC_DateFin = mydatatable(0).Item(c)
                Case "AMC_Piecejustificative"
                    CurrentBenéficiaire.AMC_Piecejustificative = mydatatable(0).Item(c)
                Case "AMC_Code_Aiguillage_STS"
                    CurrentBenéficiaire.AMC_Code_Aiguillage_STS = mydatatable(0).Item(c)
                Case "AMC_Indicateurdetrairement"
                    CurrentBenéficiaire.AMC_Indicateurdetrairement = mydatatable(0).Item(c)
                Case "AMC_CodeRoutage"
                    CurrentBenéficiaire.AMC_CodeRoutage = mydatatable(0).Item(c)
                Case "AMC_IdHote"
                    CurrentBenéficiaire.AMC_IdHote = mydatatable(0).Item(c)
                Case "AMC_NomDomaine"
                    CurrentBenéficiaire.AMC_NomDomaine = mydatatable(0).Item(c)
                Case "AMC_Type_Convention"
                    CurrentBenéficiaire.AMC_Type_Convention = mydatatable(0).Item(c)
                Case "AMC_Critère_secondaire"
                    CurrentBenéficiaire.AMC_Critère_secondaire = mydatatable(0).Item(c)
                Case "AMC_IdentifiantAMC"
                    CurrentBenéficiaire.AMC_IdentifiantAMC = mydatatable(0).Item(c)
            End Select
        Next
    End Sub

    'compare les données AMC en base avec données en carte
    Private Sub CompareAMCdata()


        '-----------------------------------------------------------------------------------------------------------------------------------------
        If CurrentBenéficiaire.G109C1 = "" And CurrentBenéficiaire.G107C1 = "" Then 'si pas de données AMC/mutuelle en carte

            AMC_NumAMC_TextBox.Text = CurrentBenéficiaire.AMC_NumOrganisme
            MUT_NumMutuelle_TextBox.Text = CurrentBenéficiaire.AMC_NumMutuelle
            AMC_Numadhérent_TextBox.Text = CurrentBenéficiaire.AMC_NumAdherent
            MUT_IDassure_TextBox.Text = CurrentBenéficiaire.AMC_IDassure
            AMC_Couverture_TextBox.Text = CurrentBenéficiaire.AMC_TypeContrat
            If CurrentBenéficiaire.AMC_DateDébut <> "" Then
                AMC_DateDebut_MaskedTextBox.Text = Mid(CurrentBenéficiaire.AMC_DateDébut, 7, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateDébut, 5, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateDébut, 1, 4)
            Else
                AMC_DateDebut_MaskedTextBox.Text = ""
            End If
            If CurrentBenéficiaire.AMC_DateFin <> "" Then
                AMC_DateFin_MaskedTextBox.Text = Mid(CurrentBenéficiaire.AMC_DateFin, 7, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateFin, 5, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateFin, 1, 4)
            Else
                AMC_DateFin_MaskedTextBox.Text = ""
            End If
            AMC_Piècejustificative_ComboBox.SelectedIndex = Val(CurrentBenéficiaire.AMC_Piecejustificative)
            AMC_Code_Aiguillage_STS_TextBox.Text = CurrentBenéficiaire.AMC_Code_Aiguillage_STS
            AMC_Indicateurdetrairement_TextBox.Text = CurrentBenéficiaire.AMC_Indicateurdetrairement
            AMC_CodeRoutage_TextBox.Text = CurrentBenéficiaire.AMC_CodeRoutage
            AMC_IdHote_TextBox.Text = CurrentBenéficiaire.AMC_IdHote
            AMC_NomDomaine_TextBox.Text = CurrentBenéficiaire.AMC_NomDomaine
            AMC_Type_Convention_TextBox.Text = CurrentBenéficiaire.AMC_Type_Convention
            AMC_Critère_secondaire_TextBox.Text = CurrentBenéficiaire.AMC_Critère_secondaire
            AMC_IdentifiantAMC_TextBox.Text = CurrentBenéficiaire.AMC_IdentifiantAMC

            '-----------------------------------------------------------------------------------------------------------------------------------------
        ElseIf CurrentBenéficiaire.G109C1 <> "" And CurrentBenéficiaire.G107C1 = "" Then 'si données AMC en carte
            If (CurrentBenéficiaire.G109C1 <> CurrentBenéficiaire.AMC_NumOrganisme And CurrentBenéficiaire.AMC_NumOrganisme <> "") Or _
            (CurrentBenéficiaire.G109C3 <> CurrentBenéficiaire.AMC_NumAdherent And CurrentBenéficiaire.G109C3 <> "" And CurrentBenéficiaire.AMC_NumAdherent <> "") Or _
            CurrentBenéficiaire.AMC_Indicateurdetrairement <> CurrentBenéficiaire.G109C4 Then

                'If MsgBox("LES DONNEES AMC EN CARTE VITALE NE CORRESPONDENT PAS AUX DONNES AMC ENREGISTRES DANS LA BASE LOCALE," + Chr(10) + _
                '          "VOULEZ VOUS CONSERVER LES DONNES PRECEDEMMENT ENREGISTRES?", 36) = MsgBoxResult.Yes Then
                Dim mymsgbox As New Choix_AMC_Data
                Choix_bénéficiaire_CV.Visible = False
                If mymsgbox.ShowDialog = MsgBoxResult.Yes Then 'choix base locale
                    AMC_NumAMC_TextBox.Text = CurrentBenéficiaire.AMC_NumOrganisme
                    MUT_NumMutuelle_TextBox.Text = CurrentBenéficiaire.AMC_NumMutuelle
                    AMC_Numadhérent_TextBox.Text = CurrentBenéficiaire.AMC_NumAdherent
                    MUT_IDassure_TextBox.Text = CurrentBenéficiaire.AMC_IDassure
                    AMC_Couverture_TextBox.Text = CurrentBenéficiaire.AMC_TypeContrat
                    If CurrentBenéficiaire.AMC_DateDébut <> "" Then
                        AMC_DateDebut_MaskedTextBox.Text = Mid(CurrentBenéficiaire.AMC_DateDébut, 7, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateDébut, 5, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateDébut, 1, 4)
                    Else
                        AMC_DateDebut_MaskedTextBox.Text = ""
                    End If
                    If CurrentBenéficiaire.AMC_DateFin <> "" Then
                        AMC_DateFin_MaskedTextBox.Text = Mid(CurrentBenéficiaire.AMC_DateFin, 7, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateFin, 5, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateFin, 1, 4)
                    Else
                        AMC_DateFin_MaskedTextBox.Text = ""
                    End If
                    AMC_Piècejustificative_ComboBox.SelectedIndex = Val(CurrentBenéficiaire.AMC_Piecejustificative)
                    AMC_Code_Aiguillage_STS_TextBox.Text = CurrentBenéficiaire.AMC_Code_Aiguillage_STS
                    AMC_Indicateurdetrairement_TextBox.Text = CurrentBenéficiaire.AMC_Indicateurdetrairement
                    AMC_CodeRoutage_TextBox.Text = CurrentBenéficiaire.AMC_CodeRoutage
                    AMC_IdHote_TextBox.Text = CurrentBenéficiaire.AMC_IdHote
                    AMC_NomDomaine_TextBox.Text = CurrentBenéficiaire.AMC_NomDomaine
                    AMC_Type_Convention_TextBox.Text = CurrentBenéficiaire.AMC_Type_Convention
                    AMC_Critère_secondaire_TextBox.Text = CurrentBenéficiaire.AMC_Critère_secondaire
                    AMC_IdentifiantAMC_TextBox.Text = CurrentBenéficiaire.AMC_IdentifiantAMC

                Else 'MsgBoxResult.No
                    CurrentBenéficiaire.AMC_TypeContrat = ""
                    Affiche_Grp109()
                End If
            Else
                Affiche_Grp109()
            End If



            '-----------------------------------------------------------------------------------------------------------------------------------------
        ElseIf CurrentBenéficiaire.G109C1 = "" And CurrentBenéficiaire.G107C1 <> "" Then 'si données Mutuelle en carte

            If (CurrentBenéficiaire.G107C1 <> CurrentBenéficiaire.AMC_NumMutuelle And CurrentBenéficiaire.AMC_NumMutuelle <> "") Or _
           CurrentBenéficiaire.AMC_Indicateurdetrairement <> CurrentBenéficiaire.G107C3 Then

                'If MsgBox("LES DONNEES AMC EN CARTE VITALE NE CORRESPONDENT PAS AUX DONNES AMC ENREGISTRES DANS LA BASE LOCALE," + Chr(10) + _
                '          "VOULEZ VOUS CONSERVER LES DONNES ENREGISTRES DANS LA BASE LOCALE?", 36) = MsgBoxResult.Yes Then
                Dim mymsgbox As New Choix_AMC_Data
                If mymsgbox.ShowDialog = MsgBoxResult.Yes Then 'choix base locale
                    AMC_NumAMC_TextBox.Text = CurrentBenéficiaire.AMC_NumOrganisme
                    MUT_NumMutuelle_TextBox.Text = CurrentBenéficiaire.AMC_NumMutuelle
                    AMC_Numadhérent_TextBox.Text = CurrentBenéficiaire.AMC_NumAdherent
                    MUT_IDassure_TextBox.Text = CurrentBenéficiaire.AMC_IDassure
                    AMC_Couverture_TextBox.Text = CurrentBenéficiaire.AMC_TypeContrat
                    If CurrentBenéficiaire.AMC_DateDébut <> "" Then
                        AMC_DateDebut_MaskedTextBox.Text = Mid(CurrentBenéficiaire.AMC_DateDébut, 7, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateDébut, 5, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateDébut, 1, 4)
                    Else
                        AMC_DateDebut_MaskedTextBox.Text = ""
                    End If
                    If CurrentBenéficiaire.AMC_DateFin <> "" Then
                        AMC_DateFin_MaskedTextBox.Text = Mid(CurrentBenéficiaire.AMC_DateFin, 7, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateFin, 5, 2) + "/" + Mid(CurrentBenéficiaire.AMC_DateFin, 1, 4)
                    Else
                        AMC_DateFin_MaskedTextBox.Text = ""
                    End If
                    AMC_Piècejustificative_ComboBox.SelectedIndex = Val(CurrentBenéficiaire.AMC_Piecejustificative)
                    AMC_Code_Aiguillage_STS_TextBox.Text = CurrentBenéficiaire.AMC_Code_Aiguillage_STS
                    AMC_Indicateurdetrairement_TextBox.Text = CurrentBenéficiaire.AMC_Indicateurdetrairement
                    AMC_CodeRoutage_TextBox.Text = CurrentBenéficiaire.AMC_CodeRoutage
                    AMC_IdHote_TextBox.Text = CurrentBenéficiaire.AMC_IdHote
                    AMC_NomDomaine_TextBox.Text = CurrentBenéficiaire.AMC_NomDomaine
                    AMC_Type_Convention_TextBox.Text = CurrentBenéficiaire.AMC_Type_Convention
                    AMC_Critère_secondaire_TextBox.Text = CurrentBenéficiaire.AMC_Critère_secondaire
                    AMC_Piècejustificative_ComboBox.SelectedIndex = 0
                    AMC_IdentifiantAMC_TextBox.Text = CurrentBenéficiaire.AMC_IdentifiantAMC

                Else 'MsgBoxResult.No
                    CurrentBenéficiaire.AMC_TypeContrat = ""
                    choix_période_droits_mutuelle()
                    If CurrentBenéficiaire.G107C4 <> "" Then
                        AMC_NumAMC_TextBox.Text = Mid(CurrentBenéficiaire.G107C5, 1, 10)
                    End If
                    MUT_NumMutuelle_TextBox.Text = CurrentBenéficiaire.G107C1
                    AMC_Numadhérent_TextBox.Text = ""
                    MUT_IDassure_TextBox.Text = ""
                    AMC_Couverture_TextBox.Text = CurrentBenéficiaire.AMC_TypeContrat
                    If AMC_Piècejustificative_ComboBox.Items.Count < 5 Then
                        AMC_Piècejustificative_ComboBox.Items.Add("carte Vitale (4)")
                    End If
                    AMC_Piècejustificative_ComboBox.SelectedIndex = 4
                    AMC_Code_Aiguillage_STS_TextBox.Text = CurrentBenéficiaire.G107C6
                    AMC_Indicateurdetrairement_TextBox.Text = CurrentBenéficiaire.G107C3
                    AMC_CodeRoutage_TextBox.Text = ""
                    AMC_IdHote_TextBox.Text = ""
                    AMC_NomDomaine_TextBox.Text = ""
                    AMC_Type_Convention_TextBox.Text = ""
                    AMC_Critère_secondaire_TextBox.Text = ""
                    AMC_IdentifiantAMC_TextBox.Text = ""
                End If

            Else
                choix_période_droits_mutuelle()
                If CurrentBenéficiaire.G107C4 <> "" Then
                    AMC_NumAMC_TextBox.Text = Mid(CurrentBenéficiaire.G107C5, 1, 10)
                End If

                MUT_NumMutuelle_TextBox.Text = CurrentBenéficiaire.G107C1
                AMC_Numadhérent_TextBox.Text = ""
                MUT_IDassure_TextBox.Text = ""
                AMC_Couverture_TextBox.Text = CurrentBenéficiaire.AMC_TypeContrat
                If AMC_Piècejustificative_ComboBox.Items.Count < 5 Then
                    AMC_Piècejustificative_ComboBox.Items.Add("carte Vitale (4)")
                End If

                AMC_Piècejustificative_ComboBox.SelectedIndex = 4

                AMC_Code_Aiguillage_STS_TextBox.Text = CurrentBenéficiaire.G107C6
                AMC_Indicateurdetrairement_TextBox.Text = CurrentBenéficiaire.G107C3
                AMC_CodeRoutage_TextBox.Text = ""
                AMC_IdHote_TextBox.Text = ""
                AMC_NomDomaine_TextBox.Text = ""
                AMC_Type_Convention_TextBox.Text = ""
                AMC_Critère_secondaire_TextBox.Text = ""
                AMC_IdentifiantAMC_TextBox.Text = ""

            End If

        End If
        Mode_Gestion()
    End Sub

    Private Sub Affiche_Grp109()

        AMC_NumAMC_TextBox.Text = CurrentBenéficiaire.G109C1

        If CurrentBenéficiaire.G109C2 <> "" Then
            If Mid(CurrentBenéficiaire.G109C2, 1, 1) = "1" Then
                CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "(Données Complémentaire) Type de Convention: " + Mid(CurrentBenéficiaire.G109C2, 2, 2) + ", Critère Secondaire: " + Mid(CurrentBenéficiaire.G109C2, 4, 3))
            ElseIf Mid(CurrentBenéficiaire.G109C2, 1, 1) = "2" Then
                CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "(Données Complémentaire) Types de Convention: " + Mid(CurrentBenéficiaire.G109C2, 2, 2) + ", " + Mid(CurrentBenéficiaire.G109C2, 4, 2) + _
                                                          ", Critères Secondaire: " + Mid(CurrentBenéficiaire.G109C2, 6, 3) + ", " + Mid(CurrentBenéficiaire.G109C2, 9, 3) + ", " + _
                                                          Mid(CurrentBenéficiaire.G109C2, 12, 3) + ", " + Mid(CurrentBenéficiaire.G109C2, 15, 3))
            End If
        End If


        AMC_Numadhérent_TextBox.Text = CurrentBenéficiaire.G109C3

        AMC_Indicateurdetrairement_TextBox.Text = CurrentBenéficiaire.G109C4


        If CurrentBenéficiaire.G109C5 <> "" Then
            AMC_DateDebut_MaskedTextBox.Text = Mid(CurrentBenéficiaire.G109C5, 7, 2) + "/" + Mid(CurrentBenéficiaire.G109C5, 5, 2) + "/" + Mid(CurrentBenéficiaire.G109C5, 1, 4)
        Else
            AMC_DateDebut_MaskedTextBox.Text = ""
        End If
        If CurrentBenéficiaire.G109C6 <> "" Then
            AMC_DateFin_MaskedTextBox.Text = Mid(CurrentBenéficiaire.G109C6, 7, 2) + "/" + Mid(CurrentBenéficiaire.G109C6, 5, 2) + "/" + Mid(CurrentBenéficiaire.G109C6, 1, 4)
        Else
            AMC_DateFin_MaskedTextBox.Text = ""
        End If

        If CurrentBenéficiaire.G109C7 <> "" And CurrentBenéficiaire.G109C8 <> "" And CurrentBenéficiaire.G109C9 <> "" Then
            AMC_CodeRoutage_TextBox.Text = CurrentBenéficiaire.G109C7
            AMC_IdHote_TextBox.Text = CurrentBenéficiaire.G109C8
            AMC_NomDomaine_TextBox.Text = CurrentBenéficiaire.G109C9
        Else
            CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Données Mutuelle: Données d'adressage incomplètes")
            CurrentBenéficiaire.G109C7 = ""
            CurrentBenéficiaire.G109C8 = ""
            CurrentBenéficiaire.G109C9 = ""
        End If

        AMC_Code_Aiguillage_STS_TextBox.Text = CurrentBenéficiaire.G109C10

        If CurrentBenéficiaire.G109C11 <> "" Then
            CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Données Mutuelle: Type de services associés: ")
            Select Case Trim(CurrentBenéficiaire.G109C11)
                Case "1"
                    CurrentBeneficiaireRichTextBox.AppendText("Numéro téléphonique")
                Case "2"
                    CurrentBeneficiaireRichTextBox.AppendText("Code Minitel")
                Case "3"
                    CurrentBeneficiaireRichTextBox.AppendText("Adresse Transpac")
                Case "4"
                    CurrentBeneficiaireRichTextBox.AppendText("Adresse Internet")
                Case "5"
                    CurrentBeneficiaireRichTextBox.AppendText("Texte libre")
                Case "6"
                    CurrentBeneficiaireRichTextBox.AppendText("Informations structurées à afficher")
                Case "7"
                    CurrentBeneficiaireRichTextBox.AppendText("Informations structurées à traiter")
                Case "R"
                    CurrentBeneficiaireRichTextBox.AppendText("Valeur réservée à l’usage de la carte")
            End Select
        End If

        If CurrentBenéficiaire.G109C12 <> "" Then CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Données Complémentaire: Services associés au contrat:" + CurrentBenéficiaire.G109C12)

        If AMC_Piècejustificative_ComboBox.Items.Count < 5 Then
            AMC_Piècejustificative_ComboBox.Items.Add("carte Vitale (4)")
        End If
        AMC_Piècejustificative_ComboBox.SelectedIndex = 4

        MUT_NumMutuelle_TextBox.Text = ""
        AMC_Type_Convention_TextBox.Text = ""
        AMC_Critère_secondaire_TextBox.Text = ""
        MUT_IDassure_TextBox.Text = ""

        AMC_Couverture_TextBox.Text = CurrentBenéficiaire.AMC_TypeContrat

    End Sub


    'affiche la période mutuelle en cours G108, la dernière période si hors droits
    Private Sub choix_période_droits_mutuelle()

        Dim dates_found As Boolean = False
        For i = 0 To 2
            If CurrentBenéficiaire.G108C1(i) <> "" Or CurrentBenéficiaire.G108C2(i) <> "" Then
                dates_found = True
                If (CurrentBenéficiaire.G108C1(i) = "" Or Val(CurrentBenéficiaire.G108C1(i)) <= Val(Format(Date_Droits_AMC2, "yyyyMMdd") + "0000")) _
                And (CurrentBenéficiaire.G108C2(i) = "" Or Val(CurrentBenéficiaire.G108C2(i)) >= Val(Format(Date_Droits_AMC2, "yyyyMMdd") + "0000")) Then
                    If CurrentBenéficiaire.G108C1(i) <> "" Then
                        'AMC_DateDebut_TextBox.Text = Mid(CurrentBenéficiaire.G108C1(i), 7, 2) + "/" + Mid(CurrentBenéficiaire.G108C1(i), 5, 2) + "/" + Mid(CurrentBenéficiaire.G108C1(i), 1, 4)
                        AMC_DateDebut_MaskedTextBox.Text = DateVitale_To_DateString(CurrentBenéficiaire.G108C1(i))
                    End If
                    If CurrentBenéficiaire.G108C2(i) <> "" Then
                        'AMC_DateFin_TextBox.Text = Mid(CurrentBenéficiaire.G108C2(i), 7, 2) + "/" + Mid(CurrentBenéficiaire.G108C2(i), 5, 2) + "/" + Mid(CurrentBenéficiaire.G108C2(i), 1, 4)
                        AMC_DateFin_MaskedTextBox.Text = DateVitale_To_DateString(CurrentBenéficiaire.G108C2(i))
                    End If
                End If
            End If
        Next
        If dates_found = True And AMC_DateDebut_MaskedTextBox.Text = "  /  /" And AMC_DateFin_MaskedTextBox.Text = "  /  /" Then
            For i = 0 To 2
                If CurrentBenéficiaire.G108C1(i) <> "" Or CurrentBenéficiaire.G108C2(i) <> "" Then
                    If CurrentBenéficiaire.G108C1(i) <> "" Then
                        'AMC_DateDebut_TextBox.Text = Mid(CurrentBenéficiaire.G108C1(i), 7, 2) + "/" + Mid(CurrentBenéficiaire.G108C1(i), 5, 2) + "/" + Mid(CurrentBenéficiaire.G108C1(i), 1, 4)
                        AMC_DateDebut_MaskedTextBox.Text = DateVitale_To_DateString(CurrentBenéficiaire.G108C1(i))
                    End If
                    If CurrentBenéficiaire.G108C2(i) <> "" Then
                        'AMC_DateFin_TextBox.Text = Mid(CurrentBenéficiaire.G108C2(i), 7, 2) + "/" + Mid(CurrentBenéficiaire.G108C2(i), 5, 2) + "/" + Mid(CurrentBenéficiaire.G108C2(i), 1, 4)
                        AMC_DateFin_MaskedTextBox.Text = DateVitale_To_DateString(CurrentBenéficiaire.G108C2(i))
                    End If
                End If
            Next
        End If
    End Sub

    'validation--> affecte currentbeneficiaire
    Private Sub AMC_NumAMC_TextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles AMC_NumAMC_TextBox.Validated
        If CurrentBenéficiaire.AMC_NumOrganisme = AMC_NumAMC_TextBox.Text Then
            AMC_Intitule_TextBox.Text = Me.AmC_OrganismesTableAdapter1.Select_Intitulé(CurrentBenéficiaire.AMC_NumOrganisme)
            Exit Sub 'no change
        End If

        CurrentBenéficiaire.AMC_NumOrganisme = AMC_NumAMC_TextBox.Text

        AMC_Intitule_TextBox.Text = Me.AmC_OrganismesTableAdapter1.Select_Intitulé(CurrentBenéficiaire.AMC_NumOrganisme)

        Select Case CurrentBenéficiaire.AMC_NumOrganisme
            Case "99999997"
                CurrentBenéficiaire.AMC_TypeContrat = "CMU-TPcoord"
                AMC_Couverture_TextBox.Text = "CMU, Tiers Payant Coordonné"
            Case "88888888"
                CurrentBenéficiaire.AMC_TypeContrat = "CMU-TPcoord"
                AMC_Couverture_TextBox.Text = "CMU, Tiers Payant Coordonné"
            Case "55555551"
                CurrentBenéficiaire.AMC_TypeContrat = "CMU"
                AMC_Couverture_TextBox.Text = "CMU"
            Case "75500017"
                CurrentBenéficiaire.AMC_TypeContrat = "AME"
                AMC_Couverture_TextBox.Text = "Aide Médicale d'Etat"
        End Select


        If sender Is Nothing Then Exit Sub 'pour que la sub ne concerne que les data validés "à la main", exit sub si le AMC_NumAMC_TextBox.text est renseigné par le logiciel

        '---------------------------------------------------------------------------------
        'RAZ des valeurs complementaires
        CurrentBenéficiaire.G107C1 = ""
        CurrentBenéficiaire.G107C2 = ""
        CurrentBenéficiaire.G107C3 = ""
        CurrentBenéficiaire.G107C4 = ""
        CurrentBenéficiaire.G107C5 = ""
        CurrentBenéficiaire.G107C6 = ""
        CurrentBenéficiaire.G109C1 = ""
        CurrentBenéficiaire.G109C2 = ""
        CurrentBenéficiaire.G109C3 = ""
        CurrentBenéficiaire.G109C4 = ""
        CurrentBenéficiaire.G109C5 = ""
        CurrentBenéficiaire.G109C6 = ""
        CurrentBenéficiaire.G109C7 = ""
        CurrentBenéficiaire.G109C8 = ""
        CurrentBenéficiaire.G109C9 = ""
        CurrentBenéficiaire.G109C10 = ""
        CurrentBenéficiaire.G109C11 = ""
        CurrentBenéficiaire.G109C12 = ""
        AMC_Intitule_TextBox.Text = ""
        AMC_Numadhérent_TextBox.Text = ""
        CurrentBenéficiaire.AMC_TypeContrat = ""
        AMC_Couverture_TextBox.Text = ""
        AMC_DateDebut_MaskedTextBox.Text = ""
        AMC_DateFin_MaskedTextBox.Text = ""
        AMC_Indicateurdetrairement_TextBox.Text = ""
        AMC_Piècejustificative_ComboBox.Text = ""
        AMC_CodeRoutage_TextBox.Text = ""
        AMC_IdHote_TextBox.Text = ""
        AMC_NomDomaine_TextBox.Text = ""
        AMC_Code_Aiguillage_STS_TextBox.Text = ""
        MUT_NumMutuelle_TextBox.Text = ""
        '---------------------------------------------------------------------------------

        AMC_Intitule_TextBox.Text = Me.AmC_OrganismesTableAdapter1.Select_Intitulé(CurrentBenéficiaire.AMC_NumOrganisme)

        Select Case CurrentBenéficiaire.AMC_NumOrganisme
            Case "99999997"
                CurrentBenéficiaire.AMC_TypeContrat = "CMU-TPcoord"
                AMC_Couverture_TextBox.Text = "CMU, Tiers Payant Coordonné"
            Case "88888888"
                CurrentBenéficiaire.AMC_TypeContrat = "CMU-TPcoord"
                AMC_Couverture_TextBox.Text = "CMU, Tiers Payant Coordonné"
            Case "55555551"
                CurrentBenéficiaire.AMC_TypeContrat = "CMU"
                AMC_Couverture_TextBox.Text = "CMU"
            Case "75500017"
                CurrentBenéficiaire.AMC_TypeContrat = "AME"
                AMC_Couverture_TextBox.Text = "Aide Médicale d'Etat"
        End Select
    End Sub
    Private Sub MUT_NumMutuelle_TextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MUT_NumMutuelle_TextBox.Validated



        If CurrentBenéficiaire.AMC_NumMutuelle = MUT_NumMutuelle_TextBox.Text Then
            AMC_Intitule_TextBox.Text = Me.AmC_OrganismesTableAdapter1.Select_Intitulé(CurrentBenéficiaire.AMC_NumMutuelle)
            Exit Sub 'no change
        End If

        CurrentBenéficiaire.AMC_NumMutuelle = MUT_NumMutuelle_TextBox.Text

        AMC_Intitule_TextBox.Text = Me.AmC_OrganismesTableAdapter1.Select_Intitulé(CurrentBenéficiaire.AMC_NumMutuelle)

        Select Case CurrentBenéficiaire.AMC_NumMutuelle
            Case "99999997"
                CurrentBenéficiaire.AMC_TypeContrat = "CMU-TPcoord"
                AMC_Couverture_TextBox.Text = "CMU, Tiers Payant Coordonné"
            Case "88888888"
                CurrentBenéficiaire.AMC_TypeContrat = "CMU-TPcoord"
                AMC_Couverture_TextBox.Text = "CMU, Tiers Payant Coordonné"
            Case "55555551"
                CurrentBenéficiaire.AMC_TypeContrat = "CMU"
                AMC_Couverture_TextBox.Text = "CMU"
            Case "75500017"
                CurrentBenéficiaire.AMC_TypeContrat = "AME"
                AMC_Couverture_TextBox.Text = "Aide Médicale d'Etat"

        End Select
        If sender Is Nothing Then Exit Sub 'pour que la sub ne concerne que les data validés "à la main", exit sub si le AMC_NumAMC_TextBox.text est renseigné par le logiciel

        '---------------------------------------------------------------------------------
        'RAZ des valeurs complementaires
        CurrentBenéficiaire.G107C1 = ""
        CurrentBenéficiaire.G107C2 = ""
        CurrentBenéficiaire.G107C3 = ""
        CurrentBenéficiaire.G107C4 = ""
        CurrentBenéficiaire.G107C5 = ""
        CurrentBenéficiaire.G107C6 = ""
        CurrentBenéficiaire.G109C1 = ""
        CurrentBenéficiaire.G109C2 = ""
        CurrentBenéficiaire.G109C3 = ""
        CurrentBenéficiaire.G109C4 = ""
        CurrentBenéficiaire.G109C5 = ""
        CurrentBenéficiaire.G109C6 = ""
        CurrentBenéficiaire.G109C7 = ""
        CurrentBenéficiaire.G109C8 = ""
        CurrentBenéficiaire.G109C9 = ""
        CurrentBenéficiaire.G109C10 = ""
        CurrentBenéficiaire.G109C11 = ""
        CurrentBenéficiaire.G109C12 = ""
        AMC_Intitule_TextBox.Text = ""
        AMC_Numadhérent_TextBox.Text = ""
        CurrentBenéficiaire.AMC_TypeContrat = ""
        AMC_Couverture_TextBox.Text = ""
        AMC_DateDebut_MaskedTextBox.Text = ""
        AMC_DateFin_MaskedTextBox.Text = ""
        AMC_Indicateurdetrairement_TextBox.Text = ""
        AMC_Piècejustificative_ComboBox.Text = ""
        AMC_CodeRoutage_TextBox.Text = ""
        AMC_IdHote_TextBox.Text = ""
        AMC_NomDomaine_TextBox.Text = ""
        AMC_Code_Aiguillage_STS_TextBox.Text = ""
        AMC_NumAMC_TextBox.Text = ""
        '---------------------------------------------------------------------------------
        AMC_Intitule_TextBox.Text = Me.AmC_OrganismesTableAdapter1.Select_Intitulé(CurrentBenéficiaire.AMC_NumMutuelle)

        Select Case CurrentBenéficiaire.AMC_NumMutuelle
            Case "99999997"
                CurrentBenéficiaire.AMC_TypeContrat = "CMU-TPcoord"
                AMC_Couverture_TextBox.Text = "CMU, Tiers Payant Coordonné"
            Case "88888888"
                CurrentBenéficiaire.AMC_TypeContrat = "CMU-TPcoord"
                AMC_Couverture_TextBox.Text = "CMU, Tiers Payant Coordonné"
            Case "55555551"
                CurrentBenéficiaire.AMC_TypeContrat = "CMU"
                AMC_Couverture_TextBox.Text = "CMU"
            Case "75500017"
                CurrentBenéficiaire.AMC_TypeContrat = "AME"
                AMC_Couverture_TextBox.Text = "Aide Médicale d'Etat"

        End Select
    End Sub
    Private Sub AMC_Numadhérent_TextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles AMC_Numadhérent_TextBox.Validated
        AMC_Numadhérent_TextBox.Text = UCase(AMC_Numadhérent_TextBox.Text)
        CurrentBenéficiaire.AMC_NumAdherent = AMC_Numadhérent_TextBox.Text
    End Sub
    Private Sub AMC_DateDebut_MaskedTextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles AMC_DateDebut_MaskedTextBox.Validated
        CurrentBenéficiaire.AMC_DateDébut = DateString_To_DateVitale(AMC_DateDebut_MaskedTextBox.Text)
        'If AMC_DateDebut_MaskedTextBox.Text <> "" Then
        '    If Val(DateString_To_DateVitale(AMC_DateDebut_MaskedTextBox.Text)) > Val(Format(DateAdd(DateInterval.Day, 1, Date_Droits_AMC), "yyyyMMdd") + "0000") Then
        '        AMC_Couverture_TextBox.BackColor = Color.Red
        '        AMC_DateDebut_MaskedTextBox.BackColor = Color.Red
        '        AMC_DateFin_MaskedTextBox.BackColor = Color.Red
        '    Else
        '        AMC_Couverture_TextBox.BackColor = Color.White
        '        AMC_DateDebut_MaskedTextBox.BackColor = Color.White
        '        AMC_DateFin_MaskedTextBox.BackColor = Color.White
        '    End If
        'End If
    End Sub
    Private Sub AMC_DateFin_MaskedTextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles AMC_DateFin_MaskedTextBox.Validated
        CurrentBenéficiaire.AMC_DateFin = DateString_To_DateVitale(AMC_DateFin_MaskedTextBox.Text)
        'If AMC_DateFin_MaskedTextBox.Text <> "" Then
        '    If Val(DateString_To_DateVitale(AMC_DateFin_MaskedTextBox.Text)) < Val(Format(DateAdd(DateInterval.Day, 1, Date_Droits_AMC), "yyyyMMdd") + "0000") Then
        '        AMC_Couverture_TextBox.BackColor = Color.Red
        '        AMC_DateDebut_MaskedTextBox.BackColor = Color.Red
        '        AMC_DateFin_MaskedTextBox.BackColor = Color.Red
        '    Else
        '        AMC_Couverture_TextBox.BackColor = Color.White
        '        AMC_DateDebut_MaskedTextBox.BackColor = Color.White
        '        AMC_DateFin_MaskedTextBox.BackColor = Color.White
        '    End If
        'End If
    End Sub
    Private Sub AMC_Code_Aiguillage_STS_TextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles AMC_Code_Aiguillage_STS_TextBox.Validated
        'If AMC_Code_Aiguillage_STS_TextBox.Text = "m" Then
        '    AMC_Code_Aiguillage_STS_TextBox.Text = "M"
        'End If
        'If AMC_Code_Aiguillage_STS_TextBox.Text = "r" Then
        '    AMC_Code_Aiguillage_STS_TextBox.Text = "R"
        'End If
        If AMC_Code_Aiguillage_STS_TextBox.Text <> "4" And AMC_Code_Aiguillage_STS_TextBox.Text <> "8" And _
        AMC_Code_Aiguillage_STS_TextBox.Text <> "M" And AMC_Code_Aiguillage_STS_TextBox.Text <> "R" And AMC_Code_Aiguillage_STS_TextBox.Text <> "" Then
            MsgBox("CODE STS INCOHERENT", MsgBoxStyle.Exclamation)
            AMC_Code_Aiguillage_STS_TextBox.Text = ""
        End If
        CurrentBenéficiaire.AMC_Code_Aiguillage_STS = AMC_Code_Aiguillage_STS_TextBox.Text
    End Sub
    Private Sub AMC_Indicateurdetrairement_TextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles AMC_Indicateurdetrairement_TextBox.Validated
        CurrentBenéficiaire.AMC_Indicateurdetrairement = AMC_Indicateurdetrairement_TextBox.Text

    End Sub
    Private Sub MUT_IDassure_TextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MUT_IDassure_TextBox.Validated
        CurrentBenéficiaire.AMC_IDassure = MUT_IDassure_TextBox.Text
    End Sub
    Private Sub AMC_Piècejustificative_ComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AMC_Piècejustificative_ComboBox.SelectedIndexChanged
        Select Case AMC_Piècejustificative_ComboBox.SelectedIndex
            Case 0 'aucune pièce justificative
                AMC_NumAMC_TextBox.Enabled = True
                AMC_Indicateurdetrairement_TextBox.Enabled = True
                AMC_Numadhérent_TextBox.Enabled = True
                AMC_DateDebut_MaskedTextBox.Enabled = True
                AMC_DateFin_MaskedTextBox.Enabled = True
                AMC_CodeRoutage_TextBox.Enabled = True
                AMC_IdHote_TextBox.Enabled = True
                AMC_NomDomaine_TextBox.Enabled = True
                AMC_Code_Aiguillage_STS_TextBox.Enabled = True
                CurrentBenéficiaire.G111C1 = ""

            Case 1, 2, 3 'consultation serveur de droits, autre, prise en charge de la part complémentaire
                AMC_NumAMC_TextBox.Enabled = True
                MUT_NumMutuelle_TextBox.Enabled = True
                AMC_Numadhérent_TextBox.Enabled = True
                MUT_IDassure_TextBox.Enabled = True
                AMC_DateDebut_MaskedTextBox.Enabled = True
                AMC_DateFin_MaskedTextBox.Enabled = True
                AMC_Code_Aiguillage_STS_TextBox.Enabled = True
                AMC_Indicateurdetrairement_TextBox.Enabled = True
                AMC_CodeRoutage_TextBox.Enabled = True
                AMC_IdHote_TextBox.Enabled = True
                AMC_NomDomaine_TextBox.Enabled = True
                AMC_Type_Convention_TextBox.Enabled = True
                AMC_Critère_secondaire_TextBox.Enabled = True
                CurrentBenéficiaire.G111C1 = ""




            Case 4 'carte Vitale
                If CurrentBenéficiaire.G107C1 <> "" Then 'Groupe 107 : Données Mutuelle
                    If CurrentBenéficiaire.G107C4 <> "" Then
                        AMC_NumAMC_TextBox.Text = Mid(CurrentBenéficiaire.G107C5, 1, 10)
                    End If
                    MUT_NumMutuelle_TextBox.Text = CurrentBenéficiaire.G107C1
                    AMC_Numadhérent_TextBox.Text = ""
                    MUT_IDassure_TextBox.Text = ""
                    AMC_Couverture_TextBox.Text = CurrentBenéficiaire.AMC_TypeContrat
                    AMC_DateDebut_MaskedTextBox.Clear()
                    AMC_DateFin_MaskedTextBox.Clear()
                    choix_période_droits_mutuelle()
                    AMC_Code_Aiguillage_STS_TextBox.Text = CurrentBenéficiaire.G107C6
                    AMC_Indicateurdetrairement_TextBox.Text = CurrentBenéficiaire.G107C3
                    AMC_CodeRoutage_TextBox.Text = ""
                    AMC_IdHote_TextBox.Text = ""
                    AMC_NomDomaine_TextBox.Text = ""
                    AMC_Type_Convention_TextBox.Text = ""
                    AMC_Critère_secondaire_TextBox.Text = ""
                    If CurrentBenéficiaire.G107C2 <> "" Then
                        If Mid(CurrentBenéficiaire.G107C2, 2, 1) = "N" Then
                            MsgBox("ATTTENTION, PHARMACIE NON GARANTIE", MsgBoxStyle.Critical)
                        End If
                    End If

                ElseIf CurrentBenéficiaire.G109C1 <> "" Then
                    AMC_NumAMC_TextBox.Text = CurrentBenéficiaire.G109C1
                    MUT_NumMutuelle_TextBox.Text = ""
                    AMC_Numadhérent_TextBox.Text = CurrentBenéficiaire.G109C3
                    MUT_IDassure_TextBox.Text = ""
                    AMC_Couverture_TextBox.Text = CurrentBenéficiaire.AMC_TypeContrat
                    If CurrentBenéficiaire.G109C5 <> "" Then
                        AMC_DateDebut_MaskedTextBox.Text = Mid(CurrentBenéficiaire.G109C5, 7, 2) + "/" + Mid(CurrentBenéficiaire.G109C5, 5, 2) + "/" + Mid(CurrentBenéficiaire.G109C5, 1, 4)
                    Else
                        AMC_DateDebut_MaskedTextBox.Text = ""
                    End If
                    If CurrentBenéficiaire.G109C6 <> "" Then
                        AMC_DateFin_MaskedTextBox.Text = Mid(CurrentBenéficiaire.G109C6, 7, 2) + "/" + Mid(CurrentBenéficiaire.G109C6, 5, 2) + "/" + Mid(CurrentBenéficiaire.G109C6, 1, 4)
                    Else
                        AMC_DateFin_MaskedTextBox.Text = ""
                    End If
                    AMC_Code_Aiguillage_STS_TextBox.Text = CurrentBenéficiaire.G109C10
                    AMC_Indicateurdetrairement_TextBox.Text = CurrentBenéficiaire.G109C4
                    If CurrentBenéficiaire.G109C7 <> "" And CurrentBenéficiaire.G109C8 <> "" And CurrentBenéficiaire.G109C9 <> "" Then
                        AMC_CodeRoutage_TextBox.Text = CurrentBenéficiaire.G109C7
                        AMC_IdHote_TextBox.Text = CurrentBenéficiaire.G109C8
                        AMC_NomDomaine_TextBox.Text = CurrentBenéficiaire.G109C9
                    Else
                        CurrentBeneficiaireRichTextBox.AppendText(Chr(10) + "Données Mutuelle: Données d'adressage incomplètes")
                        CurrentBenéficiaire.G109C7 = ""
                        CurrentBenéficiaire.G109C8 = ""
                        CurrentBenéficiaire.G109C9 = ""
                    End If
                    AMC_Type_Convention_TextBox.Text = ""
                    AMC_Critère_secondaire_TextBox.Text = ""
                End If

                AMC_NumAMC_TextBox.Enabled = False
                MUT_NumMutuelle_TextBox.Enabled = False
                AMC_Numadhérent_TextBox.Enabled = False
                MUT_IDassure_TextBox.Enabled = False
                AMC_DateDebut_MaskedTextBox.Enabled = False
                AMC_DateFin_MaskedTextBox.Enabled = False
                AMC_Code_Aiguillage_STS_TextBox.Enabled = False
                AMC_Indicateurdetrairement_TextBox.Enabled = False
                AMC_CodeRoutage_TextBox.Enabled = False
                AMC_IdHote_TextBox.Enabled = False
                AMC_NomDomaine_TextBox.Enabled = False
                AMC_Type_Convention_TextBox.Enabled = False
                AMC_Critère_secondaire_TextBox.Enabled = False
                AMC_NumAMC_TextBox_Validated(Nothing, Nothing)
                MUT_NumMutuelle_TextBox_Validated(Nothing, Nothing)
                AMC_Numadhérent_TextBox_Validated(Nothing, Nothing)
                AMC_DateDebut_MaskedTextBox_Validated(Nothing, Nothing)
                AMC_DateFin_MaskedTextBox_Validated(Nothing, Nothing)
                AMC_Code_Aiguillage_STS_TextBox_Validated(Nothing, Nothing)
                AMC_Indicateurdetrairement_TextBox_Validated(Nothing, Nothing)
                MUT_IDassure_TextBox_Validated(Nothing, Nothing)
                AMC_CodeRoutage_TextBox_Validated(Nothing, Nothing)
                AMC_IdHote_TextBox_Validated(Nothing, Nothing)
                AMC_NomDomaine_TextBox_Validated(Nothing, Nothing)
                AMC_Type_Convention_TextBox_Validated(Nothing, Nothing)
                AMC_Critère_secondaire_TextBox_Validated(Nothing, Nothing)

        End Select
        CurrentBenéficiaire.AMC_Piecejustificative = AMC_Piècejustificative_ComboBox.SelectedIndex.ToString
    End Sub
    Private Sub AMC_CodeRoutage_TextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles AMC_CodeRoutage_TextBox.Validated
        CurrentBenéficiaire.AMC_CodeRoutage = AMC_CodeRoutage_TextBox.Text
    End Sub
    Private Sub AMC_IdHote_TextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles AMC_IdHote_TextBox.Validated
        CurrentBenéficiaire.AMC_IdHote = AMC_IdHote_TextBox.Text
    End Sub
    Private Sub AMC_NomDomaine_TextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles AMC_NomDomaine_TextBox.Validated
        CurrentBenéficiaire.AMC_NomDomaine = AMC_NomDomaine_TextBox.Text
    End Sub
    Private Sub AMC_Type_Convention_TextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles AMC_Type_Convention_TextBox.Validated
        CurrentBenéficiaire.AMC_Type_Convention = AMC_Type_Convention_TextBox.Text
    End Sub
    Private Sub AMC_Critère_secondaire_TextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles AMC_Critère_secondaire_TextBox.Validated
        CurrentBenéficiaire.AMC_Critère_secondaire = AMC_Critère_secondaire_TextBox.Text
    End Sub
    Private Sub AMC_IdentifiantAMC_TextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles AMC_IdentifiantAMC_TextBox.Validated
        CurrentBenéficiaire.AMC_IdentifiantAMC = AMC_IdentifiantAMC_TextBox.Text
    End Sub

    'AMC type contrat
    Private Sub Button_AMC_choix_type_contrat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_AMC_choix_type_contrat.Click
        Choix_AMC_TypeContrat.ShowDialog() 'dans ce formulaire je modifie la valeur de CurrentBenéficiaire.AMC_TypeContrat
        Dim mydatatable As DataTable = Me.AMC_Contrat_TypeTableAdapter.GetDataById(CurrentBenéficiaire.AMC_TypeContrat)
        If mydatatable.Rows.Count = 1 Then
            For c = 0 To mydatatable.Columns.Count - 1
                Select Case mydatatable.Columns.Item(c).ColumnName
                    Case "Intitulé"
                        AMC_Couverture_TextBox.Text = mydatatable(0).Item(c)
                End Select
            Next
        End If
    End Sub


#End Region
#Region "Sauvegarde Facture, actes, bénéficiaire"
    'sauvegarde facture vers bdd
    Private Sub SaveFactureBdd(ByVal NumFacture As Integer)
        Dim composite_convention As String = ""
        If CurrentConvention.selected = True Then
            composite_convention = CurrentConvention.Identifiant_org_signataire + "@@" + CurrentConvention.type_Identifiant_org_signataire + "@@" + CurrentConvention.critère_secondaire + _
                                    "@@" + CurrentConvention.Num_AMC + "@@" + CurrentConvention.type_Accord
        End If
        Me.FacturesTableAdapter.SaveFacture(CurrentFactureVitale.G1110C1, CurrentFactureVitale.G1110C2, CurrentFactureVitale.G1110C3, CurrentFactureVitale.G1110C4, _
                                            CurrentFactureVitale.G1120C1, CurrentFactureVitale.G1120C2, CurrentFactureVitale.G1130C1, CurrentFactureVitale.G1130C2, _
                                            CurrentFactureVitale.G1130C3, CurrentFactureVitale.G1130C4, CurrentFactureVitale.G1130C5, CurrentFactureVitale.G1130C6, _
                                            CurrentFactureVitale.G1130C7, CurrentFactureVitale.G1130C8, CurrentFactureVitale.G1160C1, CurrentFactureVitale.G1160C2, _
                                            CurrentFactureVitale.G1211C1, CurrentFactureVitale.G1211C2, CurrentFactureVitale.G1211C3, CurrentFactureVitale.G1211C4, _
                                            CurrentFactureVitale.G1211C5, CurrentFactureVitale.G1211C6, CurrentFactureVitale.G1211C7, CurrentFactureVitale.G1213C1, _
                                            CurrentFactureVitale.G1213C2, CurrentFactureVitale.G1213C3, CurrentFactureVitale.G1213C4, CurrentFactureVitale.G1213C5, _
                                            CurrentFactureVitale.G1213C6, CurrentFactureVitale.G1213C7, CurrentFactureVitale.G1213C8, CurrentFactureVitale.G1214C1, _
                                            CurrentFactureVitale.G1214C2, CurrentFactureVitale.G1214C3, CurrentFactureVitale.G1214C4, CurrentFactureVitale.G1214C5, _
                                            CurrentFactureVitale.G1214C6, CurrentFactureVitale.G1214C7, CurrentFactureVitale.G1214C8, CurrentFactureVitale.G1230C1, _
                                            CurrentFactureVitale.G1310C1, CurrentFactureVitale.G1310C2, CurrentFactureVitale.G1310C3, CurrentFactureVitale.G1310C4, _
                                            CurrentFactureVitale.G1310C5, CurrentFactureVitale.G1321C1, CurrentFactureVitale.G1321C2, CurrentFactureVitale.G1321C3, _
                                            CurrentFactureVitale.G1321C4, CurrentFactureVitale.G1321C5, CurrentFactureVitale.G1321C6, CurrentFactureVitale.G1321C7, _
                                            CurrentFactureVitale.G1321C8, CurrentFactureVitale.G1321C9, CurrentFactureVitale.G1321C10, CurrentFactureVitale.G1321C11, _
                                            CurrentFactureVitale.G1321C12, CurrentFactureVitale.G1330C1, CurrentFactureVitale.G1330C2, CurrentFactureVitale.G1410C1, _
                                            CurrentFactureVitale.G1420C1, CurrentFactureVitale.G1420C2, CurrentFactureVitale.G1420C3, CurrentFactureVitale.G1440C1, _
                                            CurrentFactureVitale.G1440C2, CurrentFactureVitale.G1440C3, CurrentFactureVitale.G1511C1, CurrentFactureVitale.G1511C2, _
                                            CurrentFactureVitale.G1512C1, CurrentFactureVitale.G1513C1, CurrentFactureVitale.G1513C2, CurrentFactureVitale.G1513C3, _
                                            CurrentFactureVitale.G1514C1, CurrentFactureVitale.G1514C2, CurrentFactureVitale.G1514C3, CurrentFactureVitale.G1514C4, _
                                            CurrentFactureVitale.G1910C1, CurrentFactureVitale.G1910C2, CurrentFactureVitale.G1910C3, CurrentFactureVitale.G1910C4, _
                                            CurrentFactureVitale.G1910C5, CurrentFactureVitale.G1910C6, CurrentFactureVitale.G3700C1, CurrentFactureVitale.G3700C2, _
                                            CurrentFactureVitale.G3730C1, CurrentFactureVitale.CRLdeDRE, CurrentFactureVitale.CRLdeFSE, CurrentFactureVitale.IDPrescripteur, _
                                            CurrentFactureVitale.Bénéficiaire, CurrentFactureVitale.Assuré, CurrentFactureVitale.FactureAcree, CurrentFactureVitale.ModeSecur, _
                                           composite_convention, NumFacture)


        For i = 1 To CurrentFactureVitale.TabLigneFacture.Length - 1
            Me.Facture_LigneFactureTableAdapter1.Insert2(i.ToString, CurrentFactureVitale.TabLigneFacture(i).G1610C1, CurrentFactureVitale.TabLigneFacture(i).G1610C2, _
                                                         CurrentFactureVitale.TabLigneFacture(i).G1610C3, CurrentFactureVitale.TabLigneFacture(i).G1610C4, _
                                                         CurrentFactureVitale.TabLigneFacture(i).G1610C5, CurrentFactureVitale.TabLigneFacture(i).G1610C6, _
                                                         CurrentFactureVitale.TabLigneFacture(i).G1610C7, CurrentFactureVitale.TabLigneFacture(i).G1610C8, _
                                                         CurrentFactureVitale.TabLigneFacture(i).G1610C9, CurrentFactureVitale.TabLigneFacture(i).G1610C10, _
                                                         CurrentFactureVitale.TabLigneFacture(i).G1610C11, CurrentFactureVitale.TabLigneFacture(i).G1610C12, _
                                                         CurrentFactureVitale.TabLigneFacture(i).G1610C13, CurrentFactureVitale.TabLigneFacture(i).G1610C14, _
                                                         CurrentFactureVitale.TabLigneFacture(i).G1610C15, CurrentFactureVitale.TabLigneFacture(i).G1610C16, _
                                                         CurrentFactureVitale.num, CurrentFactureVitale.TabLigneFacture(i).G1820C2, CurrentFactureVitale.TabLigneFacture(i).G1840C2, _
                                                         CurrentFactureVitale.TabLigneFacture(i).G1840C3, CurrentFactureVitale.TabLigneFacture(i).G1840C4, _
                                                         CurrentFactureVitale.TabLigneFacture(i).G1850C2, CurrentFactureVitale.TabLigneFacture(i).G2000C2, _
                                                         CurrentFactureVitale.TabLigneFacture(i).G2010C2, CurrentFactureVitale.TabLigneFacture(i).G2030C2, _
                                                         CurrentFactureVitale.TabLigneFacture(i).G2030C3, CurrentFactureVitale.TabLigneFacture(i).G3710C2, _
                                                         CurrentFactureVitale.TabLigneFacture(i).G3710C3, CurrentFactureVitale.TabLigneFacture(i).G3710_Paramètes)




            If Val(CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C1) <> 0 Then
                Me.Facture_DétailCodeCIPTableAdapter1.Insert(i.ToString, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C1, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C2, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C3, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C4, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C5, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C6, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C7, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C8, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C9, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C10, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C11, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C12, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C13, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C14, CurrentFactureVitale.TabLigneFacture(i).DétailCodeCIP.G1740C15, CurrentFactureVitale.G1110C1)
            ElseIf Not CurrentFactureVitale.TabLigneFacture(i).DétailLpp Is Nothing Then
                If Val(CurrentFactureVitale.TabLigneFacture(i).DétailLpp(0).G1730C1) <> 0 Then
                    For j = 0 To CurrentFactureVitale.TabLigneFacture(i).DétailLpp.Length - 2
                        Me.Facture_DétailLppTableAdapter1.Insert(i, CurrentFactureVitale.TabLigneFacture(i).DétailLpp(j).G1730C1, CurrentFactureVitale.TabLigneFacture(i).DétailLpp(j).G1730C2, CurrentFactureVitale.TabLigneFacture(i).DétailLpp(j).G1730C3, CurrentFactureVitale.TabLigneFacture(i).DétailLpp(j).G1730C4, CurrentFactureVitale.TabLigneFacture(i).DétailLpp(j).G1730C5, CurrentFactureVitale.TabLigneFacture(i).DétailLpp(j).G1730C6, CurrentFactureVitale.TabLigneFacture(i).DétailLpp(j).G1730C7, CurrentFactureVitale.TabLigneFacture(i).DétailLpp(j).G1730C8, CurrentFactureVitale.TabLigneFacture(i).DétailLpp(j).G1730C9, CurrentFactureVitale.TabLigneFacture(i).DétailLpp(j).G1730C10, CurrentFactureVitale.TabLigneFacture(i).DétailLpp(j).G1730C11, CurrentFactureVitale.G1110C1)
                    Next
                End If
            End If

        Next
    End Sub

    'sauvegarde facture vers fichier
    Public Sub SaveFactureFichier(ByVal NumFacture As Integer, ByVal FactureAcreer As String)
        Dim NumFactureString As String = NumFacture.ToString
        While NumFactureString.Length < 9
            NumFactureString = "0" & NumFactureString
        End While
        ConfigXMLelementliste = ConfigXml.GetElementsByTagName("Idposte")
        Dim idposte = ConfigXMLelementliste.Item(0).InnerText
   

        Select Case ModeSecur

            Case "4" 'mode desynchronisé

                Select Case FactureAcreer

                    Case "1" 'la fonction génèrera une FSE
                        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@"
                        TailleMax = 22
                        SGD_LireChamp(NumeroSessionFacture, 151, 1, 1, ValeurChamp, TailleMax) 'Complément FSE désynchronisée
                        CurrentFactureVitale.CRLdeFSE = ValeurChamp
                        Dim fichierFSE As String = "c:\factures\Desync\" + ValeurChamp + "@" + NumFactureString + "@" + idposte + "@" + Format(Now, "yyyyMMddhhmmss") + ".fse"
                        SGD_LireChampFichier(NumeroSessionFacture, 151, 1, 2, fichierFSE)

                    Case "2" 'la fonction génèrera une DRE
                        ValeurChamp = "@@@@@@@@@@@@@@@@@@@"
                        TailleMax = 19
                        SGD_LireChamp(NumeroSessionFacture, 161, 1, 1, ValeurChamp, TailleMax) 'Complément DRE désynchronisée
                        CurrentFactureVitale.CRLdeDRE = ValeurChamp
                        Dim fichierDRE As String = "c:\factures\Desync\" + ValeurChamp + "@" + NumFactureString + "@" + idposte + "@" + Format(Now, "yyyyMMddhhmmss") + ".dre"
                        SGD_LireChampFichier(NumeroSessionFacture, 161, 1, 2, fichierDRE)

                    Case "3" 'la fonction génèrera une FSE et une DRE
                        'FSE
                        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@"
                        TailleMax = 22
                        SGD_LireChamp(NumeroSessionFacture, 151, 1, 1, ValeurChamp, TailleMax) 'Complément FSE désynchronisée
                        CurrentFactureVitale.CRLdeFSE = ValeurChamp
                        Dim fichierFSE As String = "c:\factures\Desync\" + ValeurChamp + "@" + NumFactureString + "@" + idposte + "@" + Format(Now, "yyyyMMddhhmmss") + ".fse"
                        SGD_LireChampFichier(NumeroSessionFacture, 151, 1, 2, fichierFSE)
                        'DRE
                        ValeurChamp = "@@@@@@@@@@@@@@@@@@@"
                        TailleMax = 19
                        SGD_LireChamp(NumeroSessionFacture, 161, 1, 1, ValeurChamp, TailleMax) 'Complément DRE désynchronisée
                        CurrentFactureVitale.CRLdeDRE = ValeurChamp
                        Dim fichierDRE As String = "c:\factures\Desync\" + ValeurChamp + "@" + NumFactureString + "@" + idposte + "@" + Format(Now, "yyyyMMddhhmmss") + ".dre"
                        SGD_LireChampFichier(NumeroSessionFacture, 161, 1, 2, fichierDRE)
                End Select

            Case Else 'tout mode sauf desynchronisé

                Select Case FactureAcreer

                    Case "1" 'la fonction génèrera une FSE
                        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
                        TailleMax = 40
                        SGD_LireChamp(NumeroSessionFacture, 150, 1, 1, ValeurChamp, TailleMax) 'ValeurChamp=CRL de FSE
                        CurrentFactureVitale.CRLdeFSE = ValeurChamp
                        'FacturesTableAdapter.Insert1(Val(NumFacture), ValeurChamp)
                        Dim fichierFSE As String = "c:\factures\" + ValeurChamp + "@" + NumFactureString + "@" + idposte + "@" + Format(Now, "yyyyMMddhhmmss") + ".fse"
                        SGD_LireChampFichier(NumeroSessionFacture, 150, 1, 2, fichierFSE)

                    Case "2" 'la fonction génèrera une DRE
                        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
                        TailleMax = 71
                        SGD_LireChamp(NumeroSessionFacture, 160, 1, 1, ValeurChamp, TailleMax) 'ValeurChamp=CRL de DRE
                        CurrentFactureVitale.CRLdeDRE = ValeurChamp
                        Dim fichierDRE As String = "c:\factures\" + ValeurChamp + "@" + NumFactureString + "@" + idposte + "@" + Format(Now, "yyyyMMddhhmmss") + ".dre"
                        SGD_LireChampFichier(NumeroSessionFacture, 160, 1, 2, fichierDRE)

                    Case "3" 'la fonction génèrera une FSE et une DRE
                        'FSE
                        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
                        TailleMax = 40
                        SGD_LireChamp(NumeroSessionFacture, 150, 1, 1, ValeurChamp, TailleMax) 'ValeurChamp=CRL de FSE
                        CurrentFactureVitale.CRLdeFSE = ValeurChamp
                        Dim fichierFSE As String = "c:\factures\" + ValeurChamp + "@" + NumFactureString + "@" + idposte + "@" + Format(Now, "yyyyMMddhhmmss") + ".fse"
                        SGD_LireChampFichier(NumeroSessionFacture, 150, 1, 2, fichierFSE)
                        'DRE
                        ValeurChamp = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
                        TailleMax = 71
                        SGD_LireChamp(NumeroSessionFacture, 160, 1, 1, ValeurChamp, TailleMax) 'ValeurChamp=CRL de DRE
                        CurrentFactureVitale.CRLdeDRE = ValeurChamp
                        Dim fichierDRE As String = "c:\factures\" + ValeurChamp + "@" + NumFactureString + "@" + idposte + "@" + Format(Now, "yyyyMMddhhmmss") + ".dre"
                        SGD_LireChampFichier(NumeroSessionFacture, 160, 1, 2, fichierDRE)
                End Select
        End Select

    End Sub

    'Sauvegarde Actes
    Public Sub SauvegardeActes(ByVal LigneVente As Integer, ByVal NumFacturesSV As String, ByVal NumFactureVenteDirecte As String)

        Dim NIR As String = ""
        Dim Nom As String = ""
        Dim Prénom As String = ""
        Dim DateActe As String = ""
        Dim TypeActe As String = ""
        Dim CIP As String = ""
        Dim EAN13 As String = ""
        Dim CodeActe As String = ""
        Dim Désignation As String = ""
        Dim Quantité As String = ""
        Dim Prix_Unitaire As Single = 0
        Dim Tarif_Remboursement As Single = 0
        Dim Total As String = ""
        Dim Remise As String = ""
        Dim TauxRmbrsmnt As Integer = 0
        Dim LPP_Type_prestation As String = ""
        Dim LPP_Ref As String = ""
        Dim LPP_Quantité As Integer = 0
        NIR = CurrentBenéficiaire.G101C8

        Nom = CurrentBenéficiaire.G104C1
        Prénom = CurrentBenéficiaire.G104C3
        DateActe = Format(DateExecution.Value, "yyyyMMddhhmm")


        TypeActe = Vente(VenteType.Index, LigneVente).Value
        CIP = Vente(VenteCIP.Index, LigneVente).Value
        EAN13 = Vente(VenteEAN13.Index, LigneVente).Value
        CodeActe = Vente(VenteCodeActe.Index, LigneVente).Value
        Désignation = Vente(VenteDésignation.Index, LigneVente).Value
        Quantité = Vente(VenteQuantité.Index, LigneVente).Value
        Prix_Unitaire = Vente(VentePrix.Index, LigneVente).Value
        If Me.CodePrestationsTableAdapter.SelectTypeNomenclatureByCodeActe(CodeActe) = "LPP" Then
            Tarif_Remboursement = Me.LPPTableAdapter.selectPrixLPPByCode(Vente(VenteLPP.Index, LigneVente).Value, Val(Format(Date_Droits_AMO(), "yyyyMMdd"))) / 100

            LPP_Type_prestation = Me.ProduitsTableAdapter.Select_LPP_Type_Service(Vente(VenteCIP.Index, LigneVente).Value.ToString, Vente(VenteEAN13.Index, LigneVente).Value.ToString, _
                                                                           Vente(Ventecab.Index, LigneVente).Value.ToString, Vente(Vente_produits.Index, LigneVente).Value.ToString)
            LPP_Quantité = Me.ProduitsTableAdapter.Select_LPP_Quantité(Vente(VenteCIP.Index, LigneVente).Value.ToString, Vente(VenteEAN13.Index, LigneVente).Value.ToString, _
                                                                         Vente(Ventecab.Index, LigneVente).Value.ToString, Vente(Vente_produits.Index, LigneVente).Value.ToString)

            LPP_Ref = Vente(VenteLPP.Index, LigneVente).Value.ToString

        Else
            Tarif_Remboursement = Val(Vente(VenteTFRprix.Index, LigneVente).Value)
        End If
        Total = Vente(VenteTotal.Index, LigneVente).Value.ToString
        Remise = Vente(VenteRemise.Index, LigneVente).Value
        If Vente(VenteType.Index, LigneVente).Value.ToString <> "Vente Directe" Then
            TauxRmbrsmnt = Vente(VenteAMO.Index, LigneVente).Value.ToString
        End If


        Me.ActesTableAdapter.Insert2(Me.ActesTableAdapter.SelectMaxNumActe + 1, Nom, Prénom, DateActe, TypeActe, CIP, EAN13, CodeActe, Désignation, Quantité, Prix_Unitaire, Tarif_Remboursement, Total, Remise, NumFacturesSV, NIR, NumFactureVenteDirecte, TauxRmbrsmnt, LPP_Type_prestation, LPP_Ref, LPP_Quantité)


    End Sub

    'Enregistrement Données Assuré
    Public Sub EnregistreDonnéesClientversBDD()
        If CurrentBenéficiaire.G101C8 <> Config.Data_ContaceptifUrgence_NIR Then

            If ClientConnu() = False Then
                Me.VitaleTableAdapter.Insert1(CurrentBenéficiaire.G101C1, CurrentBenéficiaire.G101C2, CurrentBenéficiaire.G101C3, CurrentBenéficiaire.G101C7, _
                                              CurrentBenéficiaire.G101C8, CurrentBenéficiaire.G101C9, CurrentBenéficiaire.G101C10, CurrentBenéficiaire.G101C11, _
                                              CurrentBenéficiaire.G101C12, CurrentBenéficiaire.G101C13, CurrentBenéficiaire.G102C1, CurrentBenéficiaire.G102C2, _
                                              CurrentBenéficiaire.G102C3, CurrentBenéficiaire.G103C1, CurrentBenéficiaire.G103C2, CurrentBenéficiaire.G103C3, _
                                              CurrentBenéficiaire.G103C4, CurrentBenéficiaire.G103C5, CurrentBenéficiaire.G103C6, CurrentBenéficiaire.G103C7, _
                                              CurrentBenéficiaire.G103C8, CurrentBenéficiaire.G103C9, CurrentBenéficiaire.G104C1, CurrentBenéficiaire.G104C2, _
                                              CurrentBenéficiaire.G104C3, CurrentBenéficiaire.G104C4, CurrentBenéficiaire.G104C5, CurrentBenéficiaire.G104C6, _
                                              CurrentBenéficiaire.G104C7, CurrentBenéficiaire.G104C8, CurrentBenéficiaire.G104C9, CurrentBenéficiaire.G104C10, _
                                              CurrentBenéficiaire.G104C11, CurrentBenéficiaire.G104C12, CurrentBenéficiaire.G104C13, CurrentBenéficiaire.G104C14, _
                                              CurrentBenéficiaire.G104C15, CurrentBenéficiaire.G104C16, CurrentBenéficiaire.G104C17, CurrentBenéficiaire.G104C18, _
                                              CurrentBenéficiaire.G105C1(1), CurrentBenéficiaire.G105C2(1), CurrentBenéficiaire.G105C1(2), CurrentBenéficiaire.G105C2(2), _
                                              CurrentBenéficiaire.G105C1(3), CurrentBenéficiaire.G105C2(3), CurrentBenéficiaire.G106C1(0), CurrentBenéficiaire.G106C2(0), _
                                              CurrentBenéficiaire.G106C3(0), CurrentBenéficiaire.G106C4(0), CurrentBenéficiaire.G106C1(1), CurrentBenéficiaire.G106C2(1), _
                                              CurrentBenéficiaire.G106C3(1), CurrentBenéficiaire.G106C4(1), CurrentBenéficiaire.G106C1(2), CurrentBenéficiaire.G106C2(2), _
                                              CurrentBenéficiaire.G106C3(2), CurrentBenéficiaire.G106C4(2), CurrentBenéficiaire.G106C1(3), CurrentBenéficiaire.G106C2(3), _
                                              CurrentBenéficiaire.G106C3(3), CurrentBenéficiaire.G106C4(3), CurrentBenéficiaire.G106C1(4), CurrentBenéficiaire.G106C2(4), _
                                              CurrentBenéficiaire.G106C3(4), CurrentBenéficiaire.G106C4(4), CurrentBenéficiaire.G106C1(5), CurrentBenéficiaire.G106C2(5), _
                                              CurrentBenéficiaire.G106C3(5), CurrentBenéficiaire.G106C4(5), CurrentBenéficiaire.G106C1(6), CurrentBenéficiaire.G106C2(6), _
                                              CurrentBenéficiaire.G106C3(6), CurrentBenéficiaire.G106C4(6), CurrentBenéficiaire.G107C1, CurrentBenéficiaire.G107C2, _
                                              CurrentBenéficiaire.G107C3, CurrentBenéficiaire.G107C4, CurrentBenéficiaire.G107C5, CurrentBenéficiaire.G107C6, _
                                              CurrentBenéficiaire.G108C1(0), CurrentBenéficiaire.G108C2(0), CurrentBenéficiaire.G108C1(1), _
                                              CurrentBenéficiaire.G108C2(1), CurrentBenéficiaire.G108C1(2), CurrentBenéficiaire.G108C2(2), _
                                              CurrentBenéficiaire.G109C1, CurrentBenéficiaire.G109C2, CurrentBenéficiaire.G109C3, CurrentBenéficiaire.G109C4, _
                                              CurrentBenéficiaire.G109C5, CurrentBenéficiaire.G109C6, CurrentBenéficiaire.G109C7, CurrentBenéficiaire.G109C8, _
                                              CurrentBenéficiaire.G109C9, CurrentBenéficiaire.G109C10, CurrentBenéficiaire.G109C11, CurrentBenéficiaire.G109C12, _
                                              CurrentBenéficiaire.G111C1, CurrentBenéficiaire.IDPrescripteur, DateString_To_DateVitale(AMC_DateDebut_MaskedTextBox.Text), _
                                              DateString_To_DateVitale(AMC_DateFin_MaskedTextBox.Text), AMC_Numadhérent_TextBox.Text, AMC_NumAMC_TextBox.Text, _
                                              AMC_Piècejustificative_ComboBox.SelectedIndex.ToString, CurrentBenéficiaire.AMC_TypeContrat, _
                                              AMC_Indicateurdetrairement_TextBox.Text, MUT_NumMutuelle_TextBox.Text, MUT_IDassure_TextBox.Text, AMC_Code_Aiguillage_STS_TextBox.Text, _
                                              AMC_CodeRoutage_TextBox.Text, AMC_IdHote_TextBox.Text, AMC_NomDomaine_TextBox.Text, AMC_Type_Convention_TextBox.Text, AMC_Critère_secondaire_TextBox.Text, _
                                              CurrentBenéficiaire.AMC_IdentifiantAMC, CurrentBenéficiaire.Assuré)
            Else
                'MsgBox(CurrentBenéficiaire.AMC_TypeContrat)
                Me.VitaleTableAdapter.UpdateQuery(CurrentBenéficiaire.G101C1, CurrentBenéficiaire.G101C2, CurrentBenéficiaire.G101C3, CurrentBenéficiaire.G101C7, _
                                                  CurrentBenéficiaire.G101C8, CurrentBenéficiaire.G101C9, CurrentBenéficiaire.G101C10, CurrentBenéficiaire.G101C11, _
                                                  CurrentBenéficiaire.G101C12, CurrentBenéficiaire.G101C13, CurrentBenéficiaire.G102C1, CurrentBenéficiaire.G102C2, _
                                                  CurrentBenéficiaire.G102C3, CurrentBenéficiaire.G103C1, CurrentBenéficiaire.G103C2, CurrentBenéficiaire.G103C3, _
                                                  CurrentBenéficiaire.G103C4, CurrentBenéficiaire.G103C5, CurrentBenéficiaire.G103C6, CurrentBenéficiaire.G103C7, _
                                                  CurrentBenéficiaire.G103C8, CurrentBenéficiaire.G103C9, CurrentBenéficiaire.G104C1, CurrentBenéficiaire.G104C2, _
                                                  CurrentBenéficiaire.G104C3, CurrentBenéficiaire.G104C4, CurrentBenéficiaire.G104C5, CurrentBenéficiaire.G104C6, _
                                                  CurrentBenéficiaire.G104C7, CurrentBenéficiaire.G104C8, CurrentBenéficiaire.G104C9, CurrentBenéficiaire.G104C10, _
                                                  CurrentBenéficiaire.G104C11, CurrentBenéficiaire.G104C12, CurrentBenéficiaire.G104C13, CurrentBenéficiaire.G104C14, _
                                                  CurrentBenéficiaire.G104C15, CurrentBenéficiaire.G104C16, CurrentBenéficiaire.G104C17, CurrentBenéficiaire.G104C18, _
                                                  CurrentBenéficiaire.G105C1(0), CurrentBenéficiaire.G105C2(0), CurrentBenéficiaire.G105C1(1), CurrentBenéficiaire.G105C2(1), _
                                                  CurrentBenéficiaire.G105C1(2), CurrentBenéficiaire.G105C2(2), CurrentBenéficiaire.G106C1(0), CurrentBenéficiaire.G106C2(0), _
                                                  CurrentBenéficiaire.G106C3(0), CurrentBenéficiaire.G106C4(0), CurrentBenéficiaire.G106C1(1), CurrentBenéficiaire.G106C2(1), _
                                                  CurrentBenéficiaire.G106C3(1), CurrentBenéficiaire.G106C4(1), CurrentBenéficiaire.G106C1(2), CurrentBenéficiaire.G106C2(2), _
                                                  CurrentBenéficiaire.G106C3(2), CurrentBenéficiaire.G106C4(2), CurrentBenéficiaire.G106C1(3), CurrentBenéficiaire.G106C2(3), _
                                                  CurrentBenéficiaire.G106C3(3), CurrentBenéficiaire.G106C4(3), CurrentBenéficiaire.G106C1(4), CurrentBenéficiaire.G106C2(4), _
                                                  CurrentBenéficiaire.G106C3(4), CurrentBenéficiaire.G106C4(4), CurrentBenéficiaire.G106C1(5), CurrentBenéficiaire.G106C2(5), _
                                                  CurrentBenéficiaire.G106C3(5), CurrentBenéficiaire.G106C4(5), CurrentBenéficiaire.G106C1(6), CurrentBenéficiaire.G106C2(6), _
                                                  CurrentBenéficiaire.G106C3(6), CurrentBenéficiaire.G106C4(6), CurrentBenéficiaire.G107C1, CurrentBenéficiaire.G107C2, _
                                                  CurrentBenéficiaire.G107C3, CurrentBenéficiaire.G107C4, CurrentBenéficiaire.G107C5, CurrentBenéficiaire.G107C6, _
                                                  CurrentBenéficiaire.G108C1(0), CurrentBenéficiaire.G108C2(0), CurrentBenéficiaire.G108C1(1), CurrentBenéficiaire.G108C2(1), _
                                                  CurrentBenéficiaire.G108C1(2), CurrentBenéficiaire.G108C2(2), CurrentBenéficiaire.G109C1, CurrentBenéficiaire.G109C2, _
                                                  CurrentBenéficiaire.G109C3, CurrentBenéficiaire.G109C4, CurrentBenéficiaire.G109C5, CurrentBenéficiaire.G109C6, _
                                                  CurrentBenéficiaire.G109C7, CurrentBenéficiaire.G109C8, CurrentBenéficiaire.G109C9, CurrentBenéficiaire.G109C10, _
                                                  CurrentBenéficiaire.G109C11, CurrentBenéficiaire.G109C12, CurrentBenéficiaire.G111C1, AMC_NumAMC_TextBox.Text, _
                                                  AMC_Numadhérent_TextBox.Text, CurrentBenéficiaire.AMC_TypeContrat, DateString_To_DateVitale(AMC_DateDebut_MaskedTextBox.Text), _
                                                  DateString_To_DateVitale(AMC_DateFin_MaskedTextBox.Text), AMC_Piècejustificative_ComboBox.SelectedIndex.ToString, _
                                                  AMC_Indicateurdetrairement_TextBox.Text, MUT_NumMutuelle_TextBox.Text, MUT_IDassure_TextBox.Text, AMC_Code_Aiguillage_STS_TextBox.Text, _
                                                  AMC_CodeRoutage_TextBox.Text, AMC_IdHote_TextBox.Text, AMC_NomDomaine_TextBox.Text, AMC_Type_Convention_TextBox.Text, _
                                                  AMC_Critère_secondaire_TextBox.Text, CurrentBenéficiaire.IDPrescripteur, CurrentBenéficiaire.AMC_IdentifiantAMC, CurrentBenéficiaire.Assuré)
            End If
        End If
    End Sub
#End Region
#Region "Facturation"
#Region "Controle avant Facturation"
    Private Function CONTROLE_Date_Maternité() As Boolean
        'testfonc 2.45(controle date maternité inferieure ou egale à date des soins facturés)
        If NatureAssurance_Button.Text = "MATERNITE" Then


            If Val(Format(NatureAssuranceDateTimePicker.Value, "yyyyMMdd")) > Val(Format(Date_Droits_AMO(), "yyyyMMdd")) Then
                MsgBox("Date maternité invalide" + Chr(10) + "doit être inférieure ou égale à date droits AMO")
                Return False
            End If

            If RadioButtonDateAccouchement.Checked = True Then
                If DateDiff(DateInterval.Day, NatureAssuranceDateTimePicker.Value, Date_Droits_AMO) > 12 Then
                    MsgBox("Droits maternité invalides" + Chr(10) + ">12 jours après accouchement")
                    Return False
                End If
            ElseIf RadioButtonDateDébutGrossesse.Checked = True Then
                If Date_Droits_AMO() < DateAdd(DateInterval.Month, 5, NatureAssuranceDateTimePicker.Value) Then
                    'If DateDiff(DateInterval.Month, NatureAssuranceDateTimePicker.Value, Date_Droits_AMO) > 4 Then
                    MsgBox("Droits maternité invalides" + Chr(10) + ">4 mois avant accouchement")
                    Return False
                End If
            End If

        End If
        Return True
    End Function

    Private Function CONTROLE_CompatibilitActes_NatureAssurance() As Boolean
        For r = 0 To Vente.RowCount - 2
            If UCase(Vente.Item(VenteType.Index, r).Value) <> "VENTE DIRECTE" Then
                Dim datatable As DataTable = Me.Compatibilités_codes_prestation_nature_assuranceTableAdapter1.GetDataBy_CodePrestation(Vente.Item(VenteCodeActe.Index, r).Value)
                If datatable.Rows.Count = 0 Then
                    MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " ABSENT TABLE DES COMPATIBILITÉ NATURE ASSURRANCE." + Chr(10) + "PAS DE CONTROLE COMPATIBILIÉ POSSIBLE", MsgBoxStyle.Information)
                    Return True
                Else
                    Select Case NatureAssurance_Button.Text
                        Case "MALADIE"
                            For c = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c).ColumnName = "MALADIE" Then
                                    If datatable(0).Item(c) = False Then
                                        MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " INCOMPATIBLE AVEC NATURE ASSURANCE MALADIE", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                End If
                            Next
                        Case "MATERNITE"
                            For c = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c).ColumnName = "MATERNITE" Then
                                    If datatable(0).Item(c) = False Then
                                        MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " INCOMPATIBLE AVEC NATURE ASSURANCE MATERNITE", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                End If
                            Next
                        Case "ACCIDENT DU TRAVAIL"
                            For c = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c).ColumnName = "ACCIDENTDUTRAVAIL" Then
                                    If datatable(0).Item(c) = False Then
                                        MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " INCOMPATIBLE AVEC NATURE ASSURANCE ACCIDENT DU TRAVAIL", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                End If
                            Next
                        Case "PREVENTION"
                            Return True
                        Case "SMG"
                            For c = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c).ColumnName = "SMG" Then
                                    If datatable(0).Item(c) = False Then
                                        MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " INCOMPATIBLE AVEC NATURE ASSURRANCE SMG", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                End If
                            Next
                    End Select
                End If
            End If
        Next

        Return True
    End Function

    Private Function CONTROLE_CompatibilitActes_qualité_bénéficiaire() As Boolean
        For r = 0 To Vente.RowCount - 2
            If UCase(Vente.Item(VenteType.Index, r).Value) <> "VENTE DIRECTE" Then
                Dim datatable As DataTable = Me.Compatibilités__codes_prestation__qualité_bénéficiaireTableAdapter1.GetDataBy_Code_Prestation(Vente.Item(VenteCodeActe.Index, r).Value)
                If datatable.Rows.Count = 0 Then
                    MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " ABSENT TABLE DES COMPATIBILITÉ QUALITÉ DU BÉNÉFICIAIRE." + Chr(10) + "PAS DE CONTROLE COMPATIBILIÉ POSSIBLE", MsgBoxStyle.Information)
                    Return True
                Else
                    Select Case CurrentBenéficiaire.G104C14
                        Case "00"
                            For c = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c).ColumnName = "Assuré" Then
                                    If datatable(0).Item(c) = False Then
                                        MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " INCOMPATIBLE AVEC QUALITÉ DU BÉNÉFICIAIRE: Assuré", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                End If
                            Next
                        Case "01"
                            For c = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c).ColumnName = "Ascendant" Then
                                    If datatable(0).Item(c) = False Then
                                        MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " INCOMPATIBLE AVEC QUALITÉ DU BÉNÉFICIAIRE: Ascendant, descendant, collatéraux ascendants", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                End If
                            Next
                        Case "02"
                            For c = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c).ColumnName = "Conjoint" Then
                                    If datatable(0).Item(c) = False Then
                                        MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " INCOMPATIBLE AVEC QUALITÉ DU BÉNÉFICIAIRE: Conjoint", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                End If
                            Next
                        Case "02"
                            For c = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c).ColumnName = "Conjoint" Then
                                    If datatable(0).Item(c) = False Then
                                        MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " INCOMPATIBLE AVEC QUALITÉ DU BÉNÉFICIAIRE: Conjoint", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                End If
                            Next
                        Case "03"
                            For c = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c).ColumnName = "Conjoint_Divorcé" Then
                                    If datatable(0).Item(c) = False Then
                                        MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " INCOMPATIBLE AVEC QUALITÉ DU BÉNÉFICIAIRE: Conjoint Divorcé", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                End If
                            Next
                        Case "04"
                            For c = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c).ColumnName = "Concubin" Then
                                    If datatable(0).Item(c) = False Then
                                        MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " INCOMPATIBLE AVEC QUALITÉ DU BÉNÉFICIAIRE: Concubin", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                End If
                            Next
                        Case "05"
                            For c = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c).ColumnName = "ConjointSéparé" Then
                                    If datatable(0).Item(c) = False Then
                                        MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " INCOMPATIBLE AVEC QUALITÉ DU BÉNÉFICIAIRE: Conjoint Séparé", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                End If
                            Next
                        Case "06"
                            For c = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c).ColumnName = "Enfant" Then
                                    If datatable(0).Item(c) = False Then
                                        MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " INCOMPATIBLE AVEC QUALITÉ DU BÉNÉFICIAIRE: Enfant", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                End If
                            Next
                        Case "08"
                            For c = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c).ColumnName = "ConjointVeuf" Then
                                    If datatable(0).Item(c) = False Then
                                        MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " INCOMPATIBLE AVEC QUALITÉ DU BÉNÉFICIAIRE: Conjoint Veuf", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                End If
                            Next
                        Case "09"
                            For c = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c).ColumnName = "Autre_ayant_droit" Then
                                    If datatable(0).Item(c) = False Then
                                        MsgBox("CODE ACTE " + Vente.Item(VenteCodeActe.Index, r).Value + " INCOMPATIBLE AVEC QUALITÉ DU BÉNÉFICIAIRE: Autre ayant droit", MsgBoxStyle.Exclamation)
                                        Return False
                                    End If
                                End If
                            Next
                    End Select
                End If
            End If
        Next

        Return True
    End Function

    Private Function CONTROLE_Nécessité_Entente_Préalable_pour_LPP(ByVal DateDroit As String) As Boolean
        'verification nécessité entente préalable pour LPP
        For r = 0 To Vente.RowCount - 2
            If Me.LPPTableAdapter.Select_Entente_Préalable(Vente.Item(VenteLPP.Index, r).Value, Val(Format(Date_Droits_AMO(), "yyyyMMdd"))) = True Then
                Dim EP_Saisie As Boolean = False
                'If CurrentFactureVitale.G1840.Length < 2 Then
                '    MsgBox("FACTURATION INTEROMPUE" + Chr(10) + "ENTENTE PRÉALABLE OBLIGATOIRE POUR LPP " + Vente.Item(VenteLPP.Index, r).Value, MsgBoxStyle.Exclamation)
                '    Return False
                'End If
                For i = 0 To CurrentFactureVitale.G1840.Length - 1
                    If CurrentFactureVitale.G1840(i).G1840C1 = r + 1 Then
                        EP_Saisie = True
                        If CurrentFactureVitale.G1840(i).G1840C2 = "" Then
                            MsgBox("FACTURATION INTEROMPUE" + Chr(10) + "ENTENTE PRÉALABLE OBLIGATOIRE POUR LPP " + Vente.Item(VenteLPP.Index, r).Value, MsgBoxStyle.Exclamation)
                            Return False
                        End If
                    End If
                Next
                If EP_Saisie = False Then
                    MsgBox("FACTURATION INTEROMPUE" + Chr(10) + "ENTENTE PRÉALABLE OBLIGATOIRE POUR LPP " + Vente.Item(VenteLPP.Index, r).Value, MsgBoxStyle.Exclamation)
                    Return False
                End If
            End If
        Next
        Return True
    End Function

    Private Function CONTROLE_Top_Codage_Affiné() As Boolean
        For r = 0 To Vente.RowCount - 1
            Dim datatable = Me.CodePrestationsTableAdapter.GetDataBy_CodeActe(Vente.Item(VenteCodeActe.Index, r).Value)
            If datatable.Rows.Count > 0 Then
                For c = 0 To datatable.Columns.Count - 1
                    If datatable.Columns.Item(c).ColumnName = "Top_Codage_Affiné" Then
                        If datatable(0).Item(c) = True Then
                            For c2 = 0 To datatable.Columns.Count - 1
                                If datatable.Columns.Item(c2).ColumnName = "TypeNomenclature" Then
                                    Select Case datatable(0).Item(c2)
                                        Case "Frais PH"
                                            If Vente.Item(VenteCIP.Index, r).Value = "" And Vente.Item(VenteEAN13.Index, r).Value = "" Then
                                                MsgBox("ABSENCE DE CODE CIP POUR " + Vente.Item(VenteCodeActe.Index, r).Value + Chr(10) + "FACTURATION INTERROMPUE", MsgBoxStyle.Exclamation)
                                                Return False
                                            End If
                                        Case "LPP"
                                            If Vente.Item(VenteLPP.Index, r).Value = "" Then
                                                MsgBox("ABSENCE DE CODE LPP POUR " + Vente.Item(VenteCodeActe.Index, r).Value + Chr(10) + "FACTURATION INTERROMPUE", MsgBoxStyle.Exclamation)
                                                Return False
                                            End If
                                    End Select
                                End If
                            Next
                        End If
                    End If
                Next
            End If
        Next
        Return True
    End Function

#End Region
    Public Function Mode_Gestion() As Boolean
        Dim code_service_amo As String = ""
        '-----------------
        'CDC 2.1.3.3.4 Aide Médicale d’Etat
        If CurrentBenéficiaire.AMC_NumMutuelle = "75500017" Then
            If CurrentFactureVitale.Mode_Gestion = "" Then
                If SGD_LireChamp(NumeroSessionVitale, 101, 1, 2, ValeurChamp, 20) = 0 Then
                    CurrentFactureVitale.Mode_Gestion = "AME_Compl"
                Else
                    If MsgBox("L'assuré bénéficie-til d'une AME de base ou d'une AME complémentaire?" + Chr(10) + _
                              "-> OUI pour Base" + Chr(10) + "-> Non pour Complémentaire", 36) = MsgBoxResult.Yes Then
                        CurrentFactureVitale.Mode_Gestion = "AME_Base"
                    Else
                        CurrentFactureVitale.Mode_Gestion = "AME_Compl"
                    End If
                End If
            End If
            Return True
        End If
        '-----------------
        CurrentFactureVitale.Mode_Gestion = ""
        CurrentFactureVitale.TOP_CMU = False
        CurrentFactureVitale.Sortant_CMU = False
        If ToolStripMenuItem_Forcer_Code_Service_AMO.Checked = True Then
            code_service_amo = ToolStripTextBox__Forcer_Code_Service_AMO.Text 'forçage
        ElseIf CurrentBenéficiaire.G104C15 <> "" Then
            code_service_amo = CurrentBenéficiaire.G104C15 'Code service AMO bénéficiaire
        Else
            code_service_amo = CurrentBenéficiaire.G102C1 'Code service AMO Famille
        End If
        'pas de complémentaire
        If CurrentBenéficiaire.AMC_NumOrganisme = "" And CurrentBenéficiaire.AMC_NumMutuelle = "" Or (CurrentFactureVitale.TP_AMC = False And CheckBox_Facturation_AMC.Checked = False) Then
            Select Case code_service_amo
                Case "01", "02", "03", "1", "2", "3"
                    CurrentFactureVitale.TOP_CMU = True
                    CurrentFactureVitale.Mode_Gestion = "RO"
                Case "10"
                    CurrentFactureVitale.TOP_CMU = True
                    CurrentFactureVitale.Sortant_CMU = True
                    CurrentFactureVitale.Mode_Gestion = "RO"
            End Select
        End If
        'Mutuelle en carte ou convention "RO"
        If (CurrentConvention.selected = True And CurrentConvention.type_Identifiant_org_signataire = "RO") _
            Or (CurrentBenéficiaire.AMC_NumMutuelle = CurrentBenéficiaire.G107C1 And CurrentBenéficiaire.AMC_NumMutuelle <> "") Then
            Select Case code_service_amo
                Case "10"
                    CurrentFactureVitale.TOP_CMU = True
                    CurrentFactureVitale.Sortant_CMU = True
                    CurrentFactureVitale.Mode_Gestion = "RO"
                Case "11"
                    CurrentFactureVitale.Mode_Gestion = "RO"
                Case Else
                    Select Case CurrentBenéficiaire.AMC_NumMutuelle
                        Case "99999997"
                            CurrentFactureVitale.TOP_CMU = True
                            CurrentFactureVitale.Mode_Gestion = "RO"
                        Case "88888888"
                            CurrentFactureVitale.TOP_CMU = True
                            CurrentFactureVitale.Mode_Gestion = "RO"
                        Case "55555551"
                            CurrentFactureVitale.TOP_CMU = True
                            CurrentFactureVitale.Sortant_CMU = True
                            CurrentFactureVitale.Mode_Gestion = "RO"
                        Case Else
                            CurrentFactureVitale.Mode_Gestion = "RO"
                    End Select

            End Select
        End If
        'AMC en carte ou AMC "manuelle"
        If (CurrentConvention.selected = True And CurrentConvention.type_Identifiant_org_signataire <> "RO") _
            Or (CurrentBenéficiaire.AMC_NumOrganisme <> "" And (CurrentBenéficiaire.AMC_NumOrganisme = CurrentBenéficiaire.G109C1 _
            Or CurrentBenéficiaire.AMC_NumOrganisme <> Mid(CurrentBenéficiaire.G107C5, 1, 10))) Then
            Select Case code_service_amo
                Case "03", "3"
                    CurrentFactureVitale.TOP_CMU = True
                    If MsgBox("Présentation d'une attestation papier AMC permettant le mode de gestion séparée?" + Chr(10) + "(sinon assimilation au mode de gestion unique)", 36) = MsgBoxResult.No Then
                        CurrentFactureVitale.Mode_Gestion = "RO"
                    Else
                        CurrentFactureVitale.Mode_Gestion = ""
                    End If
                Case "10"
                    CurrentFactureVitale.TOP_CMU = True
                    CurrentFactureVitale.Sortant_CMU = True
            End Select
        End If

        'forçage gestion unique
        If ToolStripMenuItem_Forcer_Gestion_Unique.Checked = True Or MUT_NumMutuelle_TextBox.Text <> "" Then
            CurrentFactureVitale.Mode_Gestion = "RO"
        End If


        'choix manuel CMU
        If CurrentBenéficiaire.AMC_TypeContrat = "CMU" Then
            CurrentFactureVitale.TOP_CMU = True
        ElseIf CurrentBenéficiaire.AMC_TypeContrat = "CMU-TPcoord" Then
            CurrentFactureVitale.TOP_CMU = True
            CurrentFactureVitale.Mode_Gestion = "RO"
        End If

        Select Case CurrentBenéficiaire.AMC_Indicateurdetrairement
            Case "60", "62", "63", "71", "72", "73"
                If CurrentFactureVitale.TOP_CMU = False Then
                    If MsgBox("L'assuré a-t-il un justificatif (papier) de droits CMU.C délivré par l'organisme obligatoire ?", 36) = MsgBoxResult.Yes Then
                        CurrentBenéficiaire.AMC_TypeContrat = "CMU"
                        AMC_Couverture_TextBox.Text = "CMU"
                    End If
                End If
        End Select
        Return True
    End Function

    Public Function Forçages() As Boolean
        CodeSituation(Date_Droits_AMO(), True)

        'FORCAGES CDC Annexe 1 - Partie A
        Dim indicateur_AMO_niveau_facture As String = ""
        Dim indicateur_AMC_niveau_facture As String = ""
        '---------------------------------------------------
        If ToolStripMenuItem_Forcer_Gestion_Unique.Checked = True Then
            CurrentFactureVitale.Mode_Gestion = "RO"
        End If
        '---------------------------------------------------
        'CDC Annexe 1-A 3.2.1.1 Forçage des droits à exonération du ticket modérateur liées à la maternité
        If NatureAssurance_Button.Text = "MATERNITE" Then

            If RadioButtonDateAccouchement.Checked = True Then

                If DateDiff(DateInterval.Day, NatureAssuranceDateTimePicker.Value, Date_Droits_AMO) > 12 Then
                    Select Case MsgBox("Droits maternité invalides" + Chr(10) + ">12 jours après accouchement" + Chr(10) + "Voulez vous forcer la date de fin « théorique » de droits à l’exonération du ticket modérateur au titre de la maternité?", 36)
                        Case MsgBoxResult.Yes
                            CurrentFactureVitale.G1440C1 = CurrentFactureVitale.G1440C1 + "M"
                        Case MsgBoxResult.No
                            Return False
                    End Select
                End If
            ElseIf RadioButtonDateDébutGrossesse.Checked = True Then
                If Date_Droits_AMO() < DateAdd(DateInterval.Month, 5, NatureAssuranceDateTimePicker.Value) Then
                    MsgBox("Droits maternité invalides" + Chr(10) + ">4 mois avant accouchement", MsgBoxStyle.Information)
                    Return False
                End If
            End If

        End If
        '---------------------------------------------------
        '3.2.1.2 Annexe 1-A Forçage d’une situation d’exonération modulation du ticket modérateur(forçage ALD)
        'traité dans Sub FacturationVitale(), secteur Verif ALD
        '---------------------------------------------------
        'CDC 3.2.1.3 Annexe 1-A Forçage des zones « service AMO famille» et « service AMO bénéficiaire »
        If ToolStripMenuItem_Forcer_Code_Service_AMO.Checked = True Then
            CurrentFactureVitale.G1440C1 = CurrentFactureVitale.G1440C1 + "S"
        End If
        '---------------------------------------------------
        'CDC 3.2.1.4 Annexe 1-A Forçage des données liées à la nature d’assurance AT ou aux accidents de la vie privée
        'traité par Function groupe1513
        '---------------------------------------------------
        'CDC 3.2.1.7 Annexe 1-A Forçage de l’accès au tiers payant
        If Recherche_Période_AMO() = False Then

            For i = 0 To Vente.RowCount - 2

                If UCase(Vente(VenteType.Index, i).Value) = "ASSURANCE" Then

                    Select Case MsgBox("DATES DROITS AMO EN CARTE VITALE DÉPASSÉES" + Chr(10) + "Voulez vous forcer les droits?" + Chr(10) + "ATTESTATION PAPIER OBLIGATOIRE", 35)
                        Case MsgBoxResult.Cancel
                            Return False
                        Case MsgBoxResult.No
                            CurrentFactureVitale.TP_AMO = False
                        Case MsgBoxResult.Yes
                            If CurrentFactureVitale.TOP_CMU = False Then
                                CurrentFactureVitale.G1440C1 = CurrentFactureVitale.G1440C1 + "Y"
                            Else
                                CurrentFactureVitale.G1440C1 = CurrentFactureVitale.G1440C1 + "N"
                            End If
                    End Select

                    Exit For

                End If
            Next

        End If
        '---------------------------------------------------
        'CDC 3.2.2.1 Annexe 1-A Annexe 1 Principes de forçage des données de la zone AMC
        If AMC_NumAMC_TextBox.Text <> "" And AMC_NumAMC_TextBox.Text = CurrentBenéficiaire.G109C1 And AMC_Piècejustificative_ComboBox.SelectedIndex = 4 And CurrentFactureVitale.TP_AMC = True Then
            If (AMC_DateDebut_MaskedTextBox.Text <> "" And AMC_DateDebut_MaskedTextBox.Text <> "  /  /" And _
                Val(Mid(AMC_DateDebut_MaskedTextBox.Text, 7, 4) & Mid(AMC_DateDebut_MaskedTextBox.Text, 4, 2) & Mid(AMC_DateDebut_MaskedTextBox.Text, 1, 2)) > Val(Format(Date_Droits_AMC2, "yyyyMMdd"))) Or _
                (AMC_DateFin_MaskedTextBox.Text <> "" And AMC_DateFin_MaskedTextBox.Text <> "  /  /" And _
                 Val(Mid(AMC_DateFin_MaskedTextBox.Text, 7, 4) & Mid(AMC_DateFin_MaskedTextBox.Text, 4, 2) & Mid(AMC_DateFin_MaskedTextBox.Text, 1, 2)) < Val(Format(Date_Droits_AMC2, "yyyyMMdd"))) Then
                Select Case MsgBox("DROITS AMC FERMÉS" + Chr(10) + "Voulez vous forcer les droits?", 35)
                    Case MsgBoxResult.Cancel
                        Return False
                    Case MsgBoxResult.No
                        CurrentBenéficiaire.AMC_NumOrganisme = ""
                        CurrentBenéficiaire.AMC_NumMutuelle = ""
                        CurrentBenéficiaire.AMC_NumAdherent = ""
                        If Mode_Gestion() = False Then
                            Return False
                        End If
                    Case MsgBoxResult.Yes
                        If AMC_Piècejustificative_ComboBox.SelectedIndex = 4 Then
                            CurrentFactureVitale.G1440C2 = "D"
                        End If
                End Select
            End If
        End If
        '---------------------------------------------------
        'CDC 3.2.2.2 Annexe 1-A Principes de forçage des données de la zone mutuelle
        'Forçage de la période de droits complémentaires et garanties effectives
        If (MUT_NumMutuelle_TextBox.Text <> "" And MUT_NumMutuelle_TextBox.Text = CurrentBenéficiaire.G107C1) _
            And AMC_Piècejustificative_ComboBox.SelectedIndex = 4 And CurrentFactureVitale.TP_AMC = True Then


            If (AMC_DateDebut_MaskedTextBox.Text <> "" And AMC_DateDebut_MaskedTextBox.Text <> "  /  /" And _
                Val(Mid(AMC_DateDebut_MaskedTextBox.Text, 7, 4) & Mid(AMC_DateDebut_MaskedTextBox.Text, 4, 2) & Mid(AMC_DateDebut_MaskedTextBox.Text, 1, 2)) > Val(Format(Date_Droits_AMC2, "yyyyMMdd"))) Or _
               (AMC_DateFin_MaskedTextBox.Text <> "" And AMC_DateFin_MaskedTextBox.Text <> "  /  /" And _
                Val(Mid(AMC_DateFin_MaskedTextBox.Text, 7, 4) & Mid(AMC_DateFin_MaskedTextBox.Text, 4, 2) & Mid(AMC_DateFin_MaskedTextBox.Text, 1, 2)) < Val(Format(Date_Droits_AMC2, "yyyyMMdd"))) Then
                Select Case MsgBox("DATE DROITS MUTUELLE DÉPASSÉES" + Chr(10) + "Voulez vous forcer les droits?", 35)
                    Case MsgBoxResult.Cancel
                        Return False
                    Case MsgBoxResult.No
                        CurrentBenéficiaire.AMC_NumOrganisme = ""
                        CurrentBenéficiaire.AMC_NumMutuelle = ""
                        CurrentBenéficiaire.AMC_NumAdherent = ""
                        If Mode_Gestion() = False Then
                            Return False
                        End If
                    Case MsgBoxResult.Yes
                        If AMC_Piècejustificative_ComboBox.SelectedIndex = 4 Then
                            If CurrentFactureVitale.TOP_CMU = False Then
                                CurrentFactureVitale.G1440C1 = CurrentFactureVitale.G1440C1 + "D"
                            Else
                                CurrentFactureVitale.G1440C1 = CurrentFactureVitale.G1440C1 + "N"
                            End If
                        End If
                End Select
            End If
        End If

        'Mutuelle non présente en carte ou Mutuelle différente de celle contenue dans la carte
        If CurrentFactureVitale.TP_AMC = True And AMC_Piècejustificative_ComboBox.SelectedIndex <> 4 And _
        ((AMC_DateDebut_MaskedTextBox.Text <> "" And AMC_DateDebut_MaskedTextBox.Text <> "  /  /" And _
          Val(Mid(AMC_DateDebut_MaskedTextBox.Text, 7, 4) & Mid(AMC_DateDebut_MaskedTextBox.Text, 4, 2) & Mid(AMC_DateDebut_MaskedTextBox.Text, 1, 2)) > Val(Format(Date_Droits_AMC2, "yyyyMMdd"))) Or _
        (AMC_DateFin_MaskedTextBox.Text <> "" And AMC_DateFin_MaskedTextBox.Text <> "  /  /" And _
         Val(Mid(AMC_DateFin_MaskedTextBox.Text, 7, 4) & Mid(AMC_DateFin_MaskedTextBox.Text, 4, 2) & Mid(AMC_DateFin_MaskedTextBox.Text, 1, 2)) < Val(Format(Date_Droits_AMC2, "yyyyMMdd")))) Then
            Select Case MsgBox("DATE DROITS MUTUELLE DÉPASSÉES" + Chr(10) + "Voulez continuer la facturation sans tiers payant sur la part complémentaire?", 36)
                Case MsgBoxResult.No
                    Return False
                Case MsgBoxResult.Yes
                    CurrentBenéficiaire.AMC_NumOrganisme = ""
                    CurrentBenéficiaire.AMC_NumMutuelle = ""
                    CurrentBenéficiaire.AMC_NumAdherent = ""
                    If Mode_Gestion() = False Then
                        Return False
                    End If
            End Select
        End If

        If (MUT_NumMutuelle_TextBox.Text <> "" And MUT_NumMutuelle_TextBox.Text <> CurrentBenéficiaire.G107C1 And AMC_Piècejustificative_ComboBox.SelectedIndex <> 4 And CurrentFactureVitale.TP_AMC = True) Or _
        (MUT_NumMutuelle_TextBox.Text <> "" And MUT_NumMutuelle_TextBox.Text <> CurrentBenéficiaire.G107C1 And AMC_Piècejustificative_ComboBox.SelectedIndex <> 4 And CurrentFactureVitale.TP_AMC = True) Then
            If CurrentConvention.selected = True Or ToolStripMenuItem_Forcer_Gestion_Unique.Checked = True Then
                CurrentFactureVitale.G1440C1 = CurrentFactureVitale.G1440C1 + "N"
                CurrentFactureVitale.G1440C2 = ""
            End If
        End If
        '---------------------------------------------------
        'CDC 3.2.2.3 Annexe 1-A Principes de forçage pour des données liées à un bénéficiaire de la CMU-C à un sortant de CMU-C

        If CurrentFactureVitale.TOP_CMU = True And (AMC_Piècejustificative_ComboBox.SelectedIndex <> "4" Or CurrentFactureVitale.G1440C2 <> "") Then
            CurrentFactureVitale.G1440C1 = CurrentFactureVitale.G1440C1 + "N"
            CurrentFactureVitale.G1440C2 = ""
        End If


        If InStr(CurrentFactureVitale.G1440C1, "Y") <> 0 Then
            CurrentFactureVitale.G1440C1 = "Y"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "M") <> 0 And InStr(CurrentFactureVitale.G1440C1, "D") <> 0 Then
            CurrentFactureVitale.G1440C1 = "O"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "M") <> 0 And InStr(CurrentFactureVitale.G1440C1, "N") <> 0 Then
            CurrentFactureVitale.G1440C1 = "P"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "M") <> 0 And InStr(CurrentFactureVitale.G1440C1, "S") <> 0 Then
            CurrentFactureVitale.G1440C1 = "R"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "S") <> 0 And InStr(CurrentFactureVitale.G1440C1, "D") <> 0 Then
            CurrentFactureVitale.G1440C1 = "G"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "S") <> 0 And InStr(CurrentFactureVitale.G1440C1, "N") <> 0 Then
            CurrentFactureVitale.G1440C1 = "H"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "A") <> 0 And InStr(CurrentFactureVitale.G1440C1, "D") <> 0 Then
            CurrentFactureVitale.G1440C1 = "I"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "A") <> 0 And InStr(CurrentFactureVitale.G1440C1, "N") <> 0 Then
            CurrentFactureVitale.G1440C1 = "J"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "Z") <> 0 And InStr(CurrentFactureVitale.G1440C1, "Z") <> 0 Then
            CurrentFactureVitale.G1440C1 = "T"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "M") <> 0 Then
            CurrentFactureVitale.G1440C1 = "M"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "N") <> 0 Then
            CurrentFactureVitale.G1440C1 = "N"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "D") <> 0 Then
            CurrentFactureVitale.G1440C1 = "D"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "S") <> 0 Then
            CurrentFactureVitale.G1440C1 = "S"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "A") <> 0 Then
            CurrentFactureVitale.G1440C1 = "A"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "O") <> 0 Then
            CurrentFactureVitale.G1440C1 = "O"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "P") <> 0 Then
            CurrentFactureVitale.G1440C1 = "P"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "R") <> 0 Then
            CurrentFactureVitale.G1440C1 = "R"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "G") <> 0 Then
            CurrentFactureVitale.G1440C1 = "G"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "H") <> 0 Then
            CurrentFactureVitale.G1440C1 = "H"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "I") <> 0 Then
            CurrentFactureVitale.G1440C1 = "I"
        End If
        If InStr(CurrentFactureVitale.G1440C1, "J") <> 0 Then
            CurrentFactureVitale.G1440C1 = "J"
        End If

        Return True

    End Function

    'Calcul TauxAMO par CodeActe/CodeRegime/CodeSituation
    Public Function CalculTauxAMO(ByVal CodeActe As String, ByVal CodeRegime As String, ByVal CodeSituation As String)
        Dim Out As Integer = 0
        '--------------------------------------------------------------------------------
        'Contaceptif Urgence mineure
        If CurrentBenéficiaire.G101C8 = Config.Data_ContaceptifUrgence_NIR And CodeActe = "PH7" Then
            Return 100
        End If

        '--------------------------------------------------------------------------------
        'AME de base
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Then Return 0
        If CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            If Not Me.Taux_CodeSituationTableAdapter.Taux("0100", CodeActe, Val(Format(Now, "yyyyMMdd"))) Is Nothing Then
                Return Me.Taux_CodeSituationTableAdapter.Taux("0100", CodeActe, Val(Format(Now(), "yyyyMMdd")))
            End If
        End If

        '--------------------------------------------------------------------------------
        'par code régime
        If Not Me.Taux_CodeRégimeTableAdapter.Taux(CodeRegime, CodeActe, Val(Format(Now, "yyyyMMdd"))) Is Nothing Then
            Out = Me.Taux_CodeRégimeTableAdapter.Taux(CodeRegime, CodeActe, Val(Format(Now, "yyyyMMdd")))
        ElseIf Not Me.Taux_CodeRégimeTableAdapter.Taux("**", CodeActe, Val(Format(Now, "yyyyMMdd"))) Is Nothing Then
            Out = Me.Taux_CodeRégimeTableAdapter.Taux("**", CodeActe, Val(Format(Now, "yyyyMMdd")))
        End If
        '--------------------------------------------------------------------------------
        'par code situation
        Select Case CodeSituation
            Case "0000", "0101", "0201", "0404", "0405", "0415", "0501", "1001", "1601", "9001", "0102", "0103", "0202", "0203", "0302", "0303", "0406", "0412", _
            "0502", "0503", "1602", "1603", "9002", "9003", "0104", "0204", "0409", "0504", "9004", "0105", "0108", "0408", "0106", "0109", "0110", "0407", "0107", _
            "0413", "0205", "0206", "0207", "0304", "0400", "0402", "0410", "0411", "0414", "0700", "1002", "1003", "1004"
                If Not Me.Taux_CodeSituationTableAdapter.Taux(CodeSituation, CodeActe, Val(Format(Now, "yyyyMMdd"))) Is Nothing Then
                    Out = Me.Taux_CodeSituationTableAdapter.Taux(CodeSituation, CodeActe, Val(Format(Now(), "yyyyMMdd")))
                End If

            Case "0100" 'non remboursé si accident sinon pas exonération ni modulation
                If Not Me.Taux_CodeSituationTableAdapter.Taux(CodeSituation, CodeActe, Val(Format(Now, "yyyyMMdd"))) Is Nothing Then
                    Out = Me.Taux_CodeSituationTableAdapter.Taux(CodeSituation, CodeActe, Val(Format(Now, "yyyyMMdd")))
                End If
                If CurrentBenéficiaire.G101C10 = "02" Then
                    If MsgBox("Enrapport avec un accident?", 36) = MsgBoxResult.Yes Then ' ne sais plus pourquoi, à verifier.spécificité regime agricole???
                        Out = 0
                    End If
                End If

            Case "0100", "0200", "0300", "0301", "0403", "0500", "1000", "1600", "9000"
                'pas de changement

            Case "0225", "0226", "0227"
                If MsgBox("En rapport avec un accident de la vie privée?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
                    MsgBox("non remboursé" + Chr(10) + "Si le numéro de la caisse gestionnaire maladie appartient à la table des caisses gestionnaires ne gérant pas les accidents de la vie privée alors le PS ne peut pas effectuer de feuille soins électronique" + Chr(10) + "CF Règle 35 du cahier des charges SESAM-Vitale")
                    Out = 0
                Else
                    If Not Me.Taux_CodeSituationTableAdapter.Taux(CodeSituation, CodeActe, Val(Format(Now, "yyyyMMdd"))) Is Nothing Then
                        Out = Me.Taux_CodeSituationTableAdapter.Taux(CodeSituation, CodeActe, Val(Format(Now, "yyyyMMdd")))
                    End If
                End If

            Case "0401"
                TauxSNCF = False
                MédecinSNCF = False
                If MsgBox("PRESCRIPTION ETABLIE PAR MEDECIN SNCF" + Chr(10) + " (sur imprimé 1032 ou avec mention de Médecin SNCF)?", 36) = MsgBoxResult.Yes Then
                    TauxSNCF = True
                    MédecinSNCF = True
                End If
                If TauxSNCF = False Then
                    If MsgBox("la spécialité du prescripteur présente dans cette liste?" + Chr(10) + "Gynécologie-obstétrique" + Chr(10) + "Stomatologie" + Chr(10) + "Chirurgie dentaire" + Chr(10) + "Chirurgien dentiste spécialiste O.D.F" + Chr(10) + "Gynécologie Médicale" + Chr(10) + "Obstétrique" + Chr(10) + "Gynécologie obstétrique et gynécologie médicale", 36) = MsgBoxResult.Yes Then
                        TauxSNCF = True
                        MédecinSNCF = False
                    End If
                End If
                If TauxSNCF = True Then
                    'If Me.Taux_CodeSituationTableAdapter.Taux(CodeSituation, CodeActe).HasValue Then
                    '    Out = Me.Taux_CodeSituationTableAdapter.Taux(CodeSituation, CodeActe)
                    'End If
                    Out = 100
                End If

            Case "9020", "9021", "9022", "9024"
                'MsgBox("non remboursé" + Chr(10) + "Pour la CAVIMAC et pour les codes situation 9020 à 9024, il ne faut pas effectuer de Feuille de Soins électronique Sécurisée SESAM-Vitale." + Chr(10) + "CF Règle 18 du cahier des charges SESAM-Vitale")
                Out = 0
        End Select
        Return Out

    End Function

    'Calcul TauxAMC par CodeACte/Id Typecontrat
    Private Function CalculTauxAMC(ByVal CodeACte As String, ByVal Id As String)
        If CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
            Return 100
        End If
        'If CurrentFactureVitale.Mode_Gestion = "AME_Compl" Then
        '    Return 40
        'End If
        If Id = "" Then
            Return 0
        Else
            Dim mydatatable As DataTable
            mydatatable = Me.AMC_Contrat_TypeTableAdapter.GetDataBy_Id2(Id)
            For c = 0 To mydatatable.Columns.Count - 1
                If mydatatable.Columns.Item(c).ColumnName = CodeACte Then
                    Return Val(mydatatable(0).Item(c).ToString)
                End If
            Next
        End If
        Return 0
    End Function

    'FacturationButton_Click   
    Private Sub PictureBox_Facturation_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox_Facturation.Click
        PictureBox_Facturation.Focus()

        '_____________________________________________________________________________________________________________________________
        'verifier présence code acte
        For r = 0 To Vente.Rows.Count - 1
            If UCase(Vente.Item(VenteType.Index, r).Value) <> "VENTE DIRECTE" And Vente.Item(VenteType.Index, r).Value <> "" And Vente.Item(VenteCodeActe.Index, r).Value = "" Then
                MsgBox("Renseigner Code(s) Acte manquant(s)", MsgBoxStyle.Exclamation)
                Exit Sub
            End If
        Next
        '_____________________________________________________________________________________________________________________________
        If CurrentBenéficiaire.AMC_NumMutuelle = "" And CurrentBenéficiaire.AMC_NumOrganisme = "" And CurrentFactureVitale.TOP_CMU = False Then
            CheckBox_Facturation_AMC.Checked = False
        End If

        CurrentFactureVitale.Clear(False)


        '_____________________________________________________________________________________________________________________________
        'tableau vente vide
        If Vente.RowCount = 1 Then
            Me.Enabled = True
            Exit Sub
        End If
        '____________________________________________________________________________________________________
        'boolean pour verifier si lignes déja traités
        ReDim Preserve tab_Lignes_Vente(Vente.RowCount - 2)
        For j = 0 To tab_Lignes_Vente.Length - 1
            tab_Lignes_Vente(j).Ligne_traitée = False
        Next


        '_____________________________________________________________________________________________________________________________
        'retire les db null de vente(datagrid)
        For r = 0 To Vente.RowCount - 1
            For c = 0 To Vente.ColumnCount - 1
                If Vente.Item(c, r).Value Is DBNull.Value Or Vente.Item(c, r).Value Is Nothing Then
                    Vente(c, r).Value = ""
                End If
            Next
        Next
        '------------------------------------------------------------------------------
        ''initialise certaine valeur dans vente si defaut
        'For r = 0 To Vente.RowCount - 1
        '    If Val(Vente.Item(VenteTFRprix.Index, r).Value) = 0 Then
        '        Vente.Item(VenteTFRprix.Index, r).Value = Vente.Item(VentePrix.Index, r).Value
        '    End If
        'Next
        '------------------------------------------------------------------------------
        'TEST_TECH Formater_Facture 3.88 Possibilité de réaliser une facture sécurisée en mode SESAM sans Vitale lorsque le produit LPP a pour type de service "L"
        'ou pour des prestations AAR, MAD et AAD quel que soit le type de service.
        Dim possibilité As Boolean = True
        For i = 0 To tab_Lignes_Vente.Length - 1
            If Me.ProduitsTableAdapter.Select_LPP_Type_Service(Vente(VenteCIP.Index, i).Value, Vente(VenteEAN13.Index, i).Value, Vente(Ventecab.Index, i).Value, Vente(Vente_produits.Index, i).Value) <> "L" And Vente(VenteCodeActe.Index, i).Value <> "AAR" And Vente(VenteCodeActe.Index, i).Value <> "MAD" And Vente(VenteCodeActe.Index, i).Value <> "AAD" Then
                possibilité = False
            End If
        Next
        '------------------------------------------------------------------------------
        'appel facturation Vitale pour lignetraitées(i)=false
        'For i = 0 To tab_Lignes_Vente.Length - 1
        For i = 0 To Vente.RowCount - 1
            'If tab_Lignes_Vente(i).Ligne_traitée = False Then
            If UCase(Vente.Item(VenteType.Index, i).Value) <> "VENTE DIRECTE" Then
                If CheckBoxModeDegradé.Checked = True Then
                    ModeSecur = "5"
                Else
                    ModeSecur = "3"
                End If
                '------------------------------------------------------------------------------
                ''TEST_TECH Formater_Facture 3.88
                If possibilité = True Then
                    Select Case MsgBox("Voulez-vous sécuriser cette facture en mode SESAM sans Vitale?", 35)
                        Case MsgBoxResult.Yes
                            ModeSecur = "1"
                        Case MsgBoxResult.Cancel
                            Exit Sub
                    End Select
                End If
                '------------------------------------------------------------------------------
                'desynchronisé?
                Dim ConfigXml As New XmlDocument
                ConfigXml.Load(Application.StartupPath + "\config.xml")
                Dim XMLelementliste As XmlNodeList
                XMLelementliste = ConfigXml.GetElementsByTagName("Configuration")
                If XMLelementliste.Item(0).Item("Desynchroniser").InnerText = "oui" Then
                    ModeSecur = "4"
                End If
                '------------------------------------------------------------------------------
                If FacturationVitale() = False Then
                    PictureBox_Facturation.Visible = True
                    Me.Enabled = True
                    Exit Sub
                End If

                Exit For

            End If

        Next

        '-------------------------------------------------------------------------------------------------------------
        'Ventes Directes
        Dim VenteDirecteCréée As Boolean = False
        For i = 0 To tab_Lignes_Vente.Length - 1 '
            If UCase(Vente(VenteType.Index, i).Value.ToString) = "VENTE DIRECTE" Then
                If VenteDirecteCréée = False Then
                    CurrentFactureVenteDirecte.NumVenteDirecte = Me.Facture_VenteDirecteTableAdapter1.SelectMaxNum + 1
                    CurrentFactureVenteDirecte.Nir = CurrentBenéficiaire.G101C8
                    CurrentFactureVenteDirecte.Nom = CurrentBenéficiaire.G104C1
                    CurrentFactureVenteDirecte.Prénom = CurrentBenéficiaire.G104C3
                    CurrentFactureVenteDirecte.Date_ = Format(Now, "yyyyMMddhhmmss")
                    CurrentFactureVenteDirecte.Total = 0
                    ReDim CurrentFactureVenteDirecte.lignes(0)
                    VenteDirecteCréée = True
                End If

                ReDim Preserve CurrentFactureVenteDirecte.lignes(CurrentFactureVenteDirecte.lignes.Length)
                CurrentFactureVenteDirecte.lignes(CurrentFactureVenteDirecte.lignes.Length - 2).CIP = Vente(VenteCIP.Index, i).Value
                CurrentFactureVenteDirecte.lignes(CurrentFactureVenteDirecte.lignes.Length - 2).EAN13 = Vente(VenteEAN13.Index, i).Value
                CurrentFactureVenteDirecte.lignes(CurrentFactureVenteDirecte.lignes.Length - 2).PrixUnitaire = Vente(VentePrix.Index, i).Value
                CurrentFactureVenteDirecte.lignes(CurrentFactureVenteDirecte.lignes.Length - 2).Quantité = Vente(VenteQuantité.Index, i).Value
                CurrentFactureVenteDirecte.lignes(CurrentFactureVenteDirecte.lignes.Length - 2).Remise = Vente(VenteRemise.Index, i).Value
                CurrentFactureVenteDirecte.lignes(CurrentFactureVenteDirecte.lignes.Length - 2).Total = Vente(VenteTotal.Index, i).Value
                CurrentFactureVenteDirecte.Total = CurrentFactureVenteDirecte.Total + CurrentFactureVenteDirecte.lignes(CurrentFactureVenteDirecte.lignes.Length - 2).Total
                tab_Lignes_Vente(i).Ligne_traitée = True
                SauvegardeActes(i, "", CurrentFactureVenteDirecte.NumVenteDirecte.ToString) 'enregistrements actes bdd
                tab_Lignes_Vente(i).Ligne_traitée = True
            End If
        Next
        If CurrentFactureVenteDirecte.NumVenteDirecte <> 0 Then
            Me.Facture_VenteDirecteTableAdapter1.Insert(CurrentFactureVenteDirecte.NumVenteDirecte, CurrentFactureVenteDirecte.Nir, CurrentFactureVenteDirecte.Nom, CurrentFactureVenteDirecte.Prénom, CurrentFactureVenteDirecte.Date_, CurrentFactureVenteDirecte.Total)
        End If
        VenteDirecteCréée = Nothing
        '____________________________________________________________________________________________________
        'Update Stock
        For i = 0 To Vente.RowCount - 1
            If Vente.Item(VenteCIP.Index, i).Value <> "" Then
                UpdateStock(Vente.Item(VenteCIP.Index, i).Value, Val(Vente.Item(VenteQuantité.Index, i).Value) * (-1))
            Else
                If Vente.Item(VenteEAN13.Index, i).Value <> "" Then
                    UpdateStock(Vente.Item(VenteEAN13.Index, i).Value, Val(Vente.Item(VenteQuantité.Index, i).Value) * (-1))
                End If
            End If
        Next
        '____________________________________________________________________________________________________
        'affiche vente
        Vente.Visible = False
        PictureBox_Facturation.Visible = False
        PictureBox_Printer.Visible = False
        VenteForm.ShowDialog()

    End Sub
    'FacturationVitale
    Public Function FacturationVitale() As Boolean
        'verification si facturation vitale
        Dim FactureTypeVitale As Boolean = False
        For j = 0 To Vente.RowCount - 2
            If Vente(VenteType.Index, j).Value = "assurance" Or Vente(VenteType.Index, j).Value = "ALD" Or Vente(VenteType.Index, j).Value = "PREV" Or Vente(VenteType.Index, j).Value = "SP" Then
                FactureTypeVitale = True
            End If
        Next
        If FactureTypeVitale = False Then
            FactureTypeVitale = Nothing
            Me.Enabled = True
            Return True

        End If
        '_____________________________________________________________________________________________________________________
        FI118_nombre_enregistrements_types_4 = 0

        If CONTROLE_Date_Maternité() = False Then
            Return False
        End If
        If CONTROLE_CompatibilitActes_NatureAssurance() = False Then
            Return False
        End If
        If CONTROLE_CompatibilitActes_qualité_bénéficiaire() = False Then
            Return False
        End If
        If CONTROLE_Nécessité_Entente_Préalable_pour_LPP(Format(Date_Droits_AMO(), "yyyyMMdd")) = False Then
            Return False
        End If
        If CONTROLE_Top_Codage_Affiné() = False Then
            Return False
        End If
        'If NatureAssurance_Button.Text = "SMG" Then
        '    If CONTROLE_SMG_Ordre_Saisie_Actes() = False Then
        '        Return False
        '    End If
        'End If

        Me.Enabled = False
        '____________________________________________________________________________________________________

        'verif ALD
        Dim NbreLignesALD As Integer = 0
        For r = 0 To Vente.Rows.Count - 1
            If Vente(VenteType.Index, r).Value = "ALD" Then
                NbreLignesALD = NbreLignesALD + 1
            End If
        Next
        Select Case NbreLignesALD
            Case 0
                If Val(CodeALD(CurrentFactureVitale.G1440C1, Date_Droits_AMO)) <> 0 Then
                    If MsgBox("Présence d'un code ALD." + Chr(10) + "Aucune ligne n'est renseignée ALD." + Chr(10) + "Continuer?", 36) = MsgBoxResult.No Then
                        Me.Enabled = True
                        Return False
                    End If
                End If
            Case Else
                If Val(CodeALD(CurrentFactureVitale.G1440C1, Date_Droits_AMO)) = 0 Then
                    If MsgBox(NbreLignesALD.ToString + " ligne(s) ALD." + Chr(10) + "Aucun code ALD n'est renseignée" + Chr(10) + "Continuer en forçant le code ALD?", 36) = MsgBoxResult.No Then
                        Me.Enabled = True
                        Return False
                    Else
                        CurrentFactureVitale.G1440C1 = "A"
                    End If
                End If
        End Select
        '_____________________________________________________________________________________________________________________________
        'verification specialité CPS
        ValeurChamp = "@@"
        SGD_LireChamp(NumeroSessionCPS, 2, Occurence_Grp2, 14, ValeurChamp, 2)
        Select Case ValeurChamp
            Case "@@"
                If ModeSecur <> "4" Then
                    MsgBox("AUCUNE CARTE PS N'A ÉTÉE LUE" + Chr(10) + "VÉRIFIEZ CARTE PS", MsgBoxStyle.Critical)
                    Me.Enabled = True
                    Return False
                End If
            Case "50"
            Case Else
                MsgBox("LA CARTE PS INTRODUITE N'EST PAS UNE CARTE DE PHARMACIEN" + Chr(10) + "Il n'est pas possible d'utiliser cette carte", MsgBoxStyle.Critical)
                Me.Enabled = True
                Return False
        End Select
        '____________________________________________________________________________________________________
        'verification selection prescripteur
        If FactureTypeVitale = True And CurrentBenéficiaire.IDPrescripteur = "" And CurrentBenéficiaire.G101C8 <> Config.Data_ContaceptifUrgence_NIR Then
            MsgBox("PRESCRIPTEUR DOIT ETRE RENSEIGNE", MsgBoxStyle.Information)
            Me.Enabled = True
            Return False
        End If
        '___________________________________________________________________________________________________
        If CurrentBenéficiaire.G101C8 = Config.Data_ContaceptifUrgence_NIR Then
            ModeSecur = "1"
        End If
        '____________________________________________________________________________________________________
        'Verification que lecture vitale est faite avant facturation
        If FactureTypeVitale = True Then
            ValeurChamp = "@@@@@@@@@@@@@"
            TailleMax = 13
            If SGD_LireChamp(NumeroSessionVitale, 101, 1, 8, ValeurChamp, TailleMax) <> 0 And ModeSecur = "3" Then
                MsgBox("ERREUR ACQUISITION DROIT VITALE", MsgBoxStyle.Exclamation)
                Me.Enabled = True
                Return False
            End If
        End If
        'verif pas de warning lecture droit vitale
        If Warning_Lecture_Vitale <> 0 Then
            MsgBox("ERREUR ACQUISITION DROIT VITALE" + Chr(10) + Warning_Lecture_Vitale.ToString, MsgBoxStyle.Exclamation)
            Me.Enabled = True
            Return False
        End If
        '____________________________________________________________________________________________________
        'Accident du Travail
        FS_Papier = False
        If NatureAssurance_Button.Text = "ACCIDENT DU TRAVAIL" Then

            Accident_Travail.ShowDialog()
            If current_AT.selected = False And FS_Papier = False Then
                Me.Enabled = True
                Return False
            End If
        End If


        '____________________________________________________________________________________________________
        'verification données AMC
        If AMC_NumAMC_TextBox.Text <> "" And AMC_Piècejustificative_ComboBox.SelectedIndex = -1 And CheckBox_Facturation_AMC.Checked = True _
        And CurrentFactureVitale.TP_AMC = True Then
            MsgBox("INDIQUEZ PIECE JUSTIFICATIVE POUR AMC", MsgBoxStyle.Information)
            Me.Enabled = True
            Return False
        End If
        '____________________________________________________________________________________________________
        'Listes et stupefiants
        'stupéfiants
        For numligne = 0 To tab_Lignes_Vente.Length - 1

            If UCase(Vente.Item(VenteListe.Index, numligne).Value) = "STUP" Or _
            Me.ProduitsTableAdapter.Select_Assimilestupefiant(Vente(Ventecab.Index, numligne).Value.ToString, Vente(VenteCIP.Index, numligne).Value.ToString, _
            Vente(VenteEAN13.Index, numligne).Value.ToString, Vente(VenteDésignation.Index, numligne).Value.ToString) = "1" Then
                If MsgBox(Vente(VenteDésignation.Index, numligne).Value.ToString + Chr(10) + "S'agit-il d'un deconditionement?", 36) = MsgBoxResult.Yes Then
                    tab_Lignes_Vente(numligne).deconditionement = True
                Else
                    tab_Lignes_Vente(numligne).deconditionement = False
                End If
            Else
                tab_Lignes_Vente(numligne).deconditionement = False
            End If

        Next
        For numligne = 0 To tab_Lignes_Vente.Length - 1
            If tab_Lignes_Vente(numligne).deconditionement = True Then
                tab_Lignes_Vente(numligne).deconditionement_prix_unitaire = Val(InputBox(Vente(VenteDésignation.Index, numligne).Value.ToString + Chr(10) + "Prix unitaire de l’unité délivrée dans le cadre du déconditionnement?" + Chr(10) + "EN CENTIME D'€URO"))
                tab_Lignes_Vente(numligne).deconditionement_quantité = Val(InputBox(Vente(VenteDésignation.Index, numligne).Value.ToString + Chr(10) + "Quantité d’unités délivrées dans le cadre du déconditionnement?"))
                tab_Lignes_Vente(numligne).deconditionement_NmbreBoites = Val(InputBox(Vente(VenteDésignation.Index, numligne).Value.ToString + Chr(10) + "Nombre de conditionnements (boites) utilisés dans le cadre du déconditionnement?"))
            End If
        Next
        '____________________________________________________________________________________________________
        Mode_Gestion()
        '____________________________________________________________________________________________________
        'utilisation des conventions oui/non
        If CurrentConvention.selected = False Then
            Dim ConfigXml As New XmlDocument
            ConfigXml.Load(Application.StartupPath + "\config.xml")
            Dim XMLelementliste As XmlNodeList
            XMLelementliste = ConfigXml.GetElementsByTagName("Conventions")
            If UCase(XMLelementliste.Item(0).Item("Activer").InnerText) = "OUI" And (AMC_NumAMC_TextBox.Text <> "" Or MUT_NumMutuelle_TextBox.Text <> "") And CheckBox_Facturation_AMC.Checked = True Then
                Vente.Visible = False
                Détail_Bénéficiaire_Panel.Visible = False
                PictureBox_Facturation.Visible = False
                Choix_Convention_Facturation.ShowDialog()
            End If
        End If
        '____________________________________________________________________________________________________
        'choix TP
        'FS_Papier = False 'déja initialiser dans la partie accident du travail
        Choix_Facturation_TP_retour = False
        Vente.Visible = False
        Détail_Bénéficiaire_Panel.Visible = False
        Choix_Facturation_TP.ShowDialog()
        If Choix_Facturation_TP_retour = False Then
            Me.Enabled = True
            Return False
        End If
        If FS_Papier = True Then
            Me.Enabled = True
            Return False
        End If
        'Table 11.4
        If FS_Papier = False And CurrentBenéficiaire.G101C10 = "02" And (CurrentBenéficiaire.G101C11 = "571" Or _
                                                                         CurrentBenéficiaire.G101C11 = "575" Or _
                                                                         CurrentBenéficiaire.G101C11 = "579" Or _
                                                                         CurrentBenéficiaire.G101C11 = "671" Or _
                                                                         CurrentBenéficiaire.G101C11 = "675" Or _
                                                                         CurrentBenéficiaire.G101C11 = "679" Or _
                                                                         CurrentBenéficiaire.G101C11 = "681" Or _
                                                                         CurrentBenéficiaire.G101C11 = "685" Or _
                                                                         CurrentBenéficiaire.G101C11 = "689") Then
            If MsgBox("FSE relative à un Accident de la Vie Privée?", 36) = MsgBoxResult.Yes Then
                MsgBox("Caisses gestionnaires du régime agricole n’autorisant pas l’envoi de FSE relative à un Accident de la Vie Privée", MsgBoxStyle.Information)
                Me.Enabled = True
                Return False
            End If
        End If 'Table 11.4
        '___________________________________________________________________________________________________
        Dim que_des_PHN As Boolean = True
        For r = 0 To Vente.RowCount - 2
            If Vente.Item(VenteCodeActe.Index, r).Value.ToString <> "PHN" Then
                que_des_PHN = False
                Exit For
            End If
        Next
        If que_des_PHN = True And NatureAssurance_Button.Text <> "SMG" Then
            CurrentFactureVitale.TP_AMO = False
        End If
        '____________________________________________________________________________________________________
        Mode_Gestion()
        '____________________________________________________________________________________________________
        If CurrentFactureVitale.Mode_Gestion <> "RO" And CurrentFactureVitale.Mode_Gestion <> "AME_Base" And CurrentFactureVitale.Mode_Gestion <> "AME_Compl" _
        And Config.OCT_UtilisationOCT = False And CurrentConvention.selected = False And CheckBox_Facturation_AMC.Checked = True Then
            MsgBox("Pas de DRE possible en gestion séparée sans convention choisie", MsgBoxStyle.Information)
            Me.Enabled = True
            Return False
        End If

        '____________________________________________________________________________________________________


        'CDC 4.2.1.5.2 Détermination du service ouvert pour l’assuré par la complémentaire
        'a) determination de l'indicateur de traitement

        'If AMC_Piècejustificative_ComboBox.SelectedIndex = 4 Then
        '    CurrentBenéficiaire.AMC_Indicateurdetrairement = AMC_Indicateurdetrairement_TextBox.Text
        'End If

        If CurrentFactureVitale.Mode_Gestion <> "RO" Then 'Gestion séparée

            If CurrentConvention.selected = True And CurrentConvention.usage_attestation_papier = "0" And CurrentBenéficiaire.AMC_Piecejustificative <> "4" Then
                If AMC_Indicateurdetrairement_TextBox.Text = "" Then
                    CurrentBenéficiaire.AMC_Indicateurdetrairement = "00"
                Else
                    CurrentBenéficiaire.AMC_Indicateurdetrairement = AMC_Indicateurdetrairement_TextBox.Text
                End If
            ElseIf CurrentConvention.selected = True And CurrentConvention.usage_attestation_papier = "1" And CurrentBenéficiaire.AMC_Piecejustificative <> "4" Then
                CurrentBenéficiaire.AMC_Indicateurdetrairement = "32"
            End If
        Else 'Gestion unique
            If CurrentBenéficiaire.AMC_Indicateurdetrairement = "" Then
                CurrentBenéficiaire.AMC_Indicateurdetrairement = "01"
            End If
            If CurrentFactureVitale.TOP_CMU = True Then
                CurrentBenéficiaire.AMC_Indicateurdetrairement = "62"
            End If

        End If


        'b) determination du service ouvert
        If CurrentFactureVitale.Mode_Gestion <> "RO" And CurrentFactureVitale.Mode_Gestion <> "AME_Base" And Config.OCT_UtilisationOCT = False Then 'Gestion séparée

            Select Case Mid(CurrentBenéficiaire.AMC_Indicateurdetrairement, 1, 1)

                Case "1" 'Hors tiers payant
                    If CurrentFactureVitale.TP_AMC = True Then
                        Select Case MsgBox("L'indicateur de traitement indique que le service tiers payant pour la part complémentaire n'est pas ouvert." + Chr(10) + _
                               "Voulez vous facturer sans TP complémentaire", 36)
                            Case MsgBoxResult.Yes
                                CurrentFactureVitale.TP_AMC = False
                            Case MsgBoxResult.No
                                Me.Enabled = True
                                Return False
                        End Select
                    End If

                Case "2", "6", "7" 'Tiers Payant
                    If CurrentFactureVitale.TP_AMC = False And CheckBox_Facturation_AMC.Checked = True Then
                        MsgBox("L'indicateur de traitement indique que le service hors tiers payant pour la part complémentaire n'est pas ouvert." + Chr(10) + "Vous pouvez decocher Inclure Assurance Complémentaire", MsgBoxStyle.Information)
                        Me.Enabled = True
                        Return False
                    End If

                Case "0"
                    If (CurrentFactureVitale.TP_AMC = True Or CheckBox_Facturation_AMC.Checked = True) _
                    And CurrentFactureVitale.Mode_Gestion <> "RO" And CurrentFactureVitale.Mode_Gestion <> "AME_Base" And CurrentFactureVitale.Mode_Gestion <> "AME_Compl" Then
                        MsgBox("L'indicateur de traitement indique : Pas de DRE possible." + Chr(10) _
                                   + "Vous pouvez decocher transmettre Assurance Complémentaire et facturer en Hors TP part complémentaire", MsgBoxStyle.Information)
                        CurrentConvention.clear()
                        Me.Enabled = True
                        Return False
                    End If

                Case ""
                    If (CurrentFactureVitale.TP_AMC = True Or CheckBox_Facturation_AMC.Checked = True) _
                    And CurrentFactureVitale.Mode_Gestion <> "RO" And CurrentFactureVitale.Mode_Gestion <> "AME_Base" And CurrentFactureVitale.Mode_Gestion <> "AME_Compl" Then
                        MsgBox("Absence d'indicateur de traitement indique : Pas de DRE possible." + Chr(10) _
                                   + "Vous pouvez decocher transmettre Assurance Complémentaire et facturer en Hors TP part complémentaire", MsgBoxStyle.Information)

                        Me.Enabled = True
                        Return False
                    End If


            End Select


        Else 'Gestion unique
            Select Case CurrentBenéficiaire.AMC_Indicateurdetrairement
                Case "00"
                    If CurrentFactureVitale.TP_AMC = True Or CheckBox_Facturation_AMC.Checked = True Then
                        MsgBox("L'indicateur de traitement indique : Pas de transmission d'information complémentaire." + Chr(10) + _
                                   "Vous pouvez decocher Inclure Assurance Complémentaire et facturer en Hors TP part complémentaire", MsgBoxStyle.Information)
                        Me.Enabled = True
                        Return False
                    End If

                Case ""
                    CurrentBenéficiaire.AMC_Indicateurdetrairement = "01"

            End Select

        End If
        '____________________________________________________________________________________________________
        'CDC 4.2.3.1 Cas particulier de la MFGAM, la MUTAME et la MGAT (ne pas prendre en compte la date de fin de droits mutuelle) pour les carte V1bis(CurrentBenéficiaire.G101C3 = "")

        If CurrentBenéficiaire.G101C3 = "" _
        And (CurrentBenéficiaire.G101C10.ToString = "91" Or CurrentBenéficiaire.G101C10.ToString = "92" Or CurrentBenéficiaire.G101C10.ToString = "93" Or _
        CurrentBenéficiaire.G101C10.ToString = "94" Or CurrentBenéficiaire.G101C10.ToString = "95" Or CurrentBenéficiaire.G101C10.ToString = "96" Or _
        (CurrentBenéficiaire.G101C10.ToString = "99" And (CurrentBenéficiaire.G101C12 = "0609" Or _
                                                          (CurrentBenéficiaire.G101C11 = "281" And CurrentBenéficiaire.G101C12 = "0613") Or _
                                                          (CurrentBenéficiaire.G101C11 = "441" And CurrentBenéficiaire.G101C12 = "0613")))) _
                                                          Then
            If CurrentFactureVitale.TOP_CMU = False And _
            CurrentBenéficiaire.AMC_NumOrganisme = CurrentBenéficiaire.G107C1 And AMC_Piècejustificative_ComboBox.SelectedIndex = 4 And _
            (Val(CurrentBenéficiaire.G104C14) <> 6 Or Val(Format(Date_Droits_AMC2, "yyyyMMdd")) - Val(Mid(CurrentBenéficiaire.G104C12, 1, 8)) < 160000) Then
                AMC_DateFin_MaskedTextBox.Text = ""
            End If
        End If

        '____________________________________________________________________________________________________
        'Forçages

        If Forçages() = False Then
            Me.Enabled = True
            Return False
        End If
        '____________________________________________________________________________________________________
        'Médicaments_Détournables
        Médicaments_Détournables = False
        If MédicamentsDétournablesAutrePharmacienPréciséSurOrdonnanceToolStripMenuItem.Checked = True Then
            For r = 0 To Vente.RowCount - 1
                If UCase(Vente.Item(VenteType.Index, r).Value) <> "VENTE DIRECTE" Then
                    Dim datatable As DataTable = Me.BDM_médicaments_detournablesTableAdapter.GetDataBy_CIP(Vente.Item(VenteEAN13.Index, r).Value, Vente.Item(VenteCIP.Index, r).Value)
                    If datatable.Rows.Count > 0 Then
                        Médicaments_Détournables = True
                        Exit For
                    End If
                End If
            Next
        End If
        '____________________________________________________________________________________________________
        'STS
        If Config.STS_Activer = True Then
            ReDim Tab_Valeur_STS(0)
            'ReDim tab_current_formule_STS(0)
            If CurrentFactureVitale.Mode_Gestion <> "RO" Or CurrentFactureVitale.TP_AMC = True Then 'pas de STS en RO sans TpAMC
                If Config.STS_Activer = True And (CurrentConvention.selected = False Or (CurrentConvention.selected = True And CurrentConvention.indic_desactivation_STS <> "1")) Then
                    If STS() = False Then
                        If MsgBox("Erreur pour les modules STS, Continuer la facturation?" + Chr(10) + "(Les montant AMC seront calculés par le progiciel en fonction de la couverture choisie.)", 36) = MsgBoxResult.No Then
                            CurrentConvention.selected = False
                            ReDim tab_current_formule_STS(0)
                            Me.Enabled = True
                            Return False
                        Else

                            'reinitialise le tableau modifié par STS
                            For j = 0 To tab_Lignes_Vente.Length - 1
                                If UCase(Vente(VenteType.Index, j).Value.ToString) = "VENTE DIRECTE" Then
                                    tab_Lignes_Vente(j).Ligne_traitée = True
                                Else
                                    tab_Lignes_Vente(j).Ligne_traitée = False
                                End If
                            Next

                            'indic forçage amc
                            For j = 0 To CurrentFactureVitale.TabLigneFacture.Length - 1
                                CurrentFactureVitale.TabLigneFacture(j).G2010C2 = "1"
                            Next

                        End If
                    End If
                Else
                    If CurrentConvention.selected = True And CurrentConvention.indic_desactivation_STS = "1" And CurrentBenéficiaire.AMC_TypeContrat = "" Then
                        If MsgBox("Les services de tarification spécifiques (STS) sont desactiver pour la convention choisie," + Chr(10) + "Aucune couverture n'est renseignée," + Chr(10) _
                                  + "Voulez vous continuer en hors tiers payant part complémenatire?", 36) = MsgBoxResult.Yes Then
                            CurrentFactureVitale.TP_AMC = False

                            'reinitialise le tableau modifié par STS
                            For j = 0 To tab_Lignes_Vente.Length - 1
                                If UCase(Vente(VenteType.Index, j).Value.ToString) = "VENTE DIRECTE" Then
                                    tab_Lignes_Vente(j).Ligne_traitée = True
                                Else
                                    tab_Lignes_Vente(j).Ligne_traitée = False
                                End If
                            Next

                        Else
                            Me.Enabled = True
                            Return False
                        End If
                    End If
                End If 'If Config.STS_Activer = True
            End If
        End If
        '--------------------------------------------------------------------
        'Trace
        Trace_Reset_compteur()
        FichierTrace = Application.StartupPath + "\traces\Formater_Facture_in.txt"
        '____________________________________________________________________________________________________
        'reserve une session pour la facture
        SGD_LibererSession(NumeroSessionFacture)
        SGD_ReserverSession(20000, NumeroSessionFacture)
        '____________________________________________________________________________________________________
        CurrentFactureVitale.num = FacturesTableAdapter.SelectMaxNum + 1
        Dim NumFacture_SV As Integer
        If CurrentFactureVitale.num > 999999999 Then
            NumFacture_SV = (CurrentFactureVitale.num Mod 1000000000) + 1
        Else
            NumFacture_SV = CurrentFactureVitale.num
        End If
        Me.FacturesTableAdapter.Insert1(CurrentFactureVitale.num)

        '--------------------------------------------------------------------
        'groupe 1110 à 1450
        groupe1110(NumeroSessionFacture, NumFacture_SV.ToString)
        groupe1120(NumeroSessionFacture)
        groupe1130(NumeroSessionFacture)
        groupe1140(NumeroSessionFacture)
        If groupe1150(NumeroSessionFacture) = False Then
            Return False
        End If
        groupe1160(NumeroSessionFacture)
        groupe1170(NumeroSessionFacture)
        groupe1211_1213_1214(NumeroSessionFacture, CurrentBenéficiaire.IDPrescripteur, DatePrecription.Value)
        groupe1230(NumeroSessionFacture)
        If groupe1310(NumeroSessionFacture) = False Then
            Me.Enabled = True
            Return False
        End If
        CurrentBenéficiaire.AMC_NumOrganisme = AMC_NumAMC_TextBox.Text
        CurrentBenéficiaire.AMC_NumAdherent = AMC_Numadhérent_TextBox.Text

        'If CurrentFactureVitale.TP_AMC = True Then
        If CheckBox_Facturation_AMC.Checked = True Or CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Or (CurrentFactureVitale.TOP_CMU = True And CheckBox_Facturation_AMC.Checked = True) Then
            If groupe1321(NumeroSessionFacture) = False Then
                Me.Enabled = True
                Return False
            End If
            groupe1330(NumeroSessionFacture)
        End If
        groupe1410(NumeroSessionFacture)
        If ModeSecur = "5" Or ModeSecur = "1" Or NatureAssurance_Button.Text = "SMG" Then
            groupe1420(NumeroSessionFacture)
        End If
        groupe1440(NumeroSessionFacture)
        groupe1450(NumeroSessionFacture)
        'groupe 1511-1512-1513
        Select Case NatureAssurance_Button.Text
            Case "MALADIE"
                groupe1511(NumeroSessionFacture)
            Case "MATERNITE"
                groupe1512(NumeroSessionFacture, NatureAssuranceDateTimePicker.Value)
            Case "ACCIDENT DU TRAVAIL"
                If current_AT.selected = False Or groupe1513(NumeroSessionFacture, current_AT.DateAT, current_AT.NumAT, current_AT.CléAT) = False Then
                    Me.Enabled = True
                    Return False
                End If
            Case "PREVENTION"
                groupe1514(NumeroSessionFacture)
            Case "SMG"
                groupe1515(NumeroSessionFacture)
                SMG.Clear()
                SMG.Calcul_Montant_PEC_SMG_2()

            Case Else
                MsgBox("ERREUR NATURE ASSURANCE", MsgBoxStyle.Critical)
                SGD_LibererSession(NumeroSessionFacture)
                Me.Enabled = True
                Return False
        End Select

        'groupe 1610 et (1730 ou 1740)
        Dim Occurence1610 As Integer = 0
        Nombre_de_Prestations = 0
        Dim Total_des_Montants_Facturés As Double = 0
        Dim Total_Remboursable_par_AMO As Double = 0
        Dim Total_Théorique_Remboursable_par_AMC As Double = 0
        Dim Total_Remboursable_par_AMC As Double = 0
        For i = 0 To Vente.RowCount - 2 'parcours les lignes du tableau(graphique)vente
            If tab_Lignes_Vente(i).Ligne_traitée = False Then 'si la ligne du tableau(graphique)vente n'a pas encore étée traitée
                Select Case UCase(Vente(VenteType.Index, i).Value.ToString) 'determine les lignes pour lesquelles il faut etablire une FSE
                    'Case "VENTE DIRECTE"
                    '    VenteDirecte(i)
                    '    lignestraitées(i) = True
                    '    SauvegardeActes(i, "") 'enregistrements actes bdd
                    Case "ASSURANCE", "ALD", "PREV", "SP"
                        'groupe 1610,1730,1740,1820,1840,1850,
                        Dim TypeNomenclature As String
                        TypeNomenclature = Me.CodePrestationsTableAdapter.SelectTypeNomenclatureByCodeActe(Vente(VenteCodeActe.Index, i).Value.ToString)
                        Select Case TypeNomenclature
                            Case "LPP"
                                If GrouperLPPToolStripMenuItem.Checked = True Then
                                    groupe1610LPP_regroup(NumeroSessionFacture, i, Nombre_de_Prestations, Total_des_Montants_Facturés, Total_Remboursable_par_AMO, Total_Théorique_Remboursable_par_AMC, Total_Remboursable_par_AMC)
                                Else
                                    groupe1610LPP(NumeroSessionFacture, i, Nombre_de_Prestations, Total_des_Montants_Facturés, Total_Remboursable_par_AMO, Total_Théorique_Remboursable_par_AMC, Total_Remboursable_par_AMC)
                                End If
                                ReDim CurrentFactureVitale.TabLigneFacture(i).DétailLpp(0)
                                groupe1820(NumeroSessionFacture, Nombre_de_Prestations, Vente(VenteType.Index, i).Value.ToString)
                                groupe1840(NumeroSessionFacture, Nombre_de_Prestations)
                                If RenouvellementToolStripTextBox.Text <> "0" Then
                                    groupe1850(NumeroSessionFacture, Nombre_de_Prestations, RenouvellementToolStripTextBox.Text)
                                End If
                                groupe2000(NumeroSessionFacture, Nombre_de_Prestations, Vente(VenteCodeActe.Index, i).Value.ToString)
                                groupe2010(NumeroSessionFacture, Nombre_de_Prestations)
                                groupe2030(NumeroSessionFacture, Nombre_de_Prestations)
                                If GrouperLPPToolStripMenuItem.Checked = True Then
                                    'regroupement Même actes LPP
                                    Dim Occurence1730 = 0
                                    For j = 0 To Vente.RowCount - 2 'parcours les lignes du tableau(graphique)vente pour trouver même code acte
                                        If Vente(VenteCodeActe.Index, i).Value = Vente(VenteCodeActe.Index, j).Value And Vente(VenteType.Index, i).Value = Vente(VenteType.Index, j).Value Then
                                            groupe1730_regroup(NumeroSessionFacture, Nombre_de_Prestations, j, Occurence1730)
                                            tab_Lignes_Vente(j).Ligne_traitée = True
                                            Vente(VenteAMO.Index, j).Value = CurrentFactureVitale.TabLigneFacture(Nombre_de_Prestations).G1610C13
                                            If Val(Occurence1730) > 10 Then
                                                MsgBox("Plus de 10 lignes avec code prestations " + Vente(VenteCodeActe.Index, i).Value.ToString + Chr(10) + "la facture ne peut pas être sécurisée")
                                                Return False
                                            End If
                                            'SauvegardeActes(j, NumFacture, "") 'enregistrements actes bdd
                                        End If
                                    Next 'parcours les lignes du tableau(graphique)vente pour trouver même code acte
                                Else
                                    If Vente(VenteLPP.Index, i).Value.ToString <> "" Then
                                        groupe1730(NumeroSessionFacture, Nombre_de_Prestations, i)
                                    End If
                                    tab_Lignes_Vente(i).Ligne_traitée = True
                                End If


                            Case Else 'Médicaments
                                groupe1610Médicaments(NumeroSessionFacture, i, Nombre_de_Prestations, Total_des_Montants_Facturés, Total_Remboursable_par_AMO, Total_Théorique_Remboursable_par_AMC, Total_Remboursable_par_AMC)
                                groupe1820(NumeroSessionFacture, Nombre_de_Prestations, Vente(VenteType.Index, i).Value.ToString)
                                groupe1840(NumeroSessionFacture, Nombre_de_Prestations)
                                If RenouvellementToolStripTextBox.Text <> "0" Then
                                    groupe1850(NumeroSessionFacture, Nombre_de_Prestations, RenouvellementToolStripTextBox.Text)
                                End If
                                groupe2000(NumeroSessionFacture, Nombre_de_Prestations, Vente(VenteCodeActe.Index, i).Value.ToString)
                                groupe2010(NumeroSessionFacture, Nombre_de_Prestations)
                                groupe2030(NumeroSessionFacture, Nombre_de_Prestations)
                                groupe1740(NumeroSessionFacture, Nombre_de_Prestations, i)
                                groupe1741(NumeroSessionFacture, Nombre_de_Prestations)
                                tab_Lignes_Vente(i).Ligne_traitée = True
                                'SauvegardeActes(i, NumFacture, "") 'enregistrements actes bdd
                        End Select
                End Select 'determine les lignes pour lesquelles il faut etablire une FSE
            End If
        Next 'parcours les lignes du tableau(graphique)vente
        '____________________________________________________________________________________________________
        'SMG Droupe DPS ET SGN
        If UCase(NatureAssurance_Button.Text) = "SMG" Then
            If SMG.présence_Prestation_Remboursable_AMO = True Then
                SMG.groupe1610DPS(NumeroSessionFacture, Nombre_de_Prestations, Total_des_Montants_Facturés, Total_Remboursable_par_AMO)
                Me.ActesTableAdapter.Insert2(Me.ActesTableAdapter.SelectMaxNumActe + 1, CurrentBenéficiaire.G104C1, CurrentBenéficiaire.G104C3, Format(DateExecution.Value, "yyyyMMddhhmm"), "assurance", "", "", "DPS", _
                "supplément Dérogatoire SMG sur Prestations Sanitaires remboursables", "1", SMG.Montant_PEC_SMG_restant / 100, SMG.Montant_PEC_SMG_restant / 100, SMG.Montant_PEC_SMG_restant / 100, "0", CurrentFactureVitale.G1110C1, CurrentBenéficiaire.G101C8, "", _
                100, "", "", 0)
            End If
            If SMG.présence_Prestation_NON_Remboursable_AMO = True Then
                SMG.groupe1610SGN(NumeroSessionFacture, Nombre_de_Prestations, Total_des_Montants_Facturés, Total_Remboursable_par_AMO)
                If SMG.présence_Prestation_Remboursable_AMO = True Then
                    Me.ActesTableAdapter.Insert2(Me.ActesTableAdapter.SelectMaxNumActe + 1, CurrentBenéficiaire.G104C1, CurrentBenéficiaire.G104C3, Format(DateExecution.Value, "yyyyMMddhhmm"), "assurance", "", "", "SGN", _
               "supplément Dérogatoire SMG sur Prestations Sanitaires non remboursables", "1", 0, 0, 0, "0", CurrentFactureVitale.G1110C1, CurrentBenéficiaire.G101C8, "", 100, "", "", 0)
                Else
                    Me.ActesTableAdapter.Insert2(Me.ActesTableAdapter.SelectMaxNumActe + 1, CurrentBenéficiaire.G104C1, CurrentBenéficiaire.G104C3, Format(DateExecution.Value, "yyyyMMddhhmm"), "assurance", "", "", "SGN", _
               "supplément Dérogatoire SMG sur Prestations Sanitaires non remboursables", "1", SMG.Montant_PEC_SMG_restant / 100, SMG.Montant_PEC_SMG_restant / 100, SMG.Montant_PEC_SMG_restant / 100, "0", CurrentFactureVitale.G1110C1, CurrentBenéficiaire.G101C8, "", _
               100, "", "", 0)
                End If
            End If
        End If

        '____________________________________________________________________________________________________


        'groupe1910
        If groupe1910(NumeroSessionFacture, Nombre_de_Prestations, Total_des_Montants_Facturés, Total_Remboursable_par_AMO.ToString, Total_Théorique_Remboursable_par_AMC, Total_Remboursable_par_AMC) = False Then
            Return False
        End If
        '____________________________________________________________________________________________________
        'enregistrement client
        EnregistreDonnéesClientversBDD()
        '____________________________________________________________________________________________________
        'FI n°118 Limitation du nombre d’enregistrements de types 4 dans une facture
        If FI118_nombre_enregistrements_types_4 > 999 Then
            MsgBox(FI118_nombre_enregistrements_types_4.ToString + " enregistrements de types 4, 999 max, la facture ne peut pas être formatée", MsgBoxStyle.Exclamation)
            Return False
        End If
        '____________________________________________________________________________________________________
        'formatage facture
        Dim erreur As Integer
        Dim FactureAcreer As String = ""

        If (Config.OCT_UtilisationOCT = True And Config.OCT_FSEenrichies = True) Or _
        CurrentFactureVitale.Mode_Gestion = "RO" Or CurrentFactureVitale.Mode_Gestion = "AME_Base" Or CurrentFactureVitale.Mode_Gestion = "AME_Compl" Or _
        CurrentFactureVitale.G1321C2 = "" Or _
        ToolStripMenuItem_Forcer_Gestion_Unique.Checked = True Then
            FactureAcreer = "1"
        ElseIf CheckBox_Facturation_AMC.Checked = True And Val(Total_des_Montants_Facturés) > Val(Total_Remboursable_par_AMO) Then
            If (Val(Total_Remboursable_par_AMO) > 0) And (NePasGénérerDeFSEToolStripMenuItem.Checked = False) Then
                FactureAcreer = "3"
            Else
                If (Val(Total_Remboursable_par_AMO) > 0) And (NePasGénérerDeFSEToolStripMenuItem.Checked = True) Then
                    MsgBox("MONTANT REMBOURSABLE AMO NON NUL, FSE GÉNÉRÉE", MsgBoxStyle.Information)
                    FactureAcreer = "3"
                Else
                    FactureAcreer = "2"
                End If
            End If
        Else
            FactureAcreer = "1"
        End If
        '___________________________________________________________________________________________________
        'desynchronisation
        If ModeSecur = "3" And Config.Configuration_Desynchroniser = True Then
            ModeSecur = "4"
        End If
        '___________________________________________________________________________________________________
        'Enregistrement facture dans bdd
        CurrentFactureVitale.FactureAcree = FactureAcreer
        CurrentFactureVitale.ModeSecur = ModeSecur
        CurrentFactureVitale.Bénéficiaire = ComboBoxLECTURE_VITALE.Text
        CurrentFactureVitale.Assuré = CurrentBenéficiaire.Assuré
        SaveFactureBdd(CurrentFactureVitale.num)
        '___________________________________________________________________________________________________
        'enregistrement actes(table actes)
        For i = 0 To Vente.RowCount - 1
            If UCase(Vente.Item(VenteType.Index, i).Value) <> "VENTE DIRECTE" And Vente.Item(VenteType.Index, i).Value <> "" Then
                SauvegardeActes(i, CurrentFactureVitale.num, "") 'enregistrements actes bdd
            End If
        Next
        '------------------------------------------------------
        If Config.STS_Activer = False And CurrentFactureVitale.TOP_CMU = False Then
            MsgBox("Attention, les montants de la part complémentaire proposés ne sont pas issus des moteurs de tarification SESAM-Vitale", MsgBoxStyle.Information)
        End If
        If Config.OCT_UtilisationOCT = True And Config.OCT_FSEenrichies = True Then
            FactureAcreer = "1"
        End If
        Me.Refresh()
        '___________________________________________________________________________________________________
        'R18 - Condition d’élaboration d’une Feuille de Soins Electronique en fonction de la situation du bénéficiaire
        If CodeSituation(Date_Droits_AMO, True) = "9020" Or CodeSituation(Date_Droits_AMO, True) = "9021" Or CodeSituation(Date_Droits_AMO, True) = "9022" Or CodeSituation(Date_Droits_AMO, True) = "9023" _
        Or CodeSituation(Date_Droits_AMO, True) = "9024" And (FactureAcreer = "1" Or FactureAcreer = "3") Then
            MsgBox("Pour la CAVIMAC et pour les codes situation 9020 à 9024, il ne faut pas effectuer de Feuille de Soins électronique Sécurisée SESAM-Vitale." + Chr(10) + "CF Règle 18 du cahier des charges SESAM-Vitale")
            Me.FacturesTableAdapter.DeleteByNum(CurrentFactureVitale.num)
            Me.Facture_LigneFactureTableAdapter1.Delete_By_Num_Facture(CurrentFactureVitale.num)
            Me.Facture_DétailCodeCIPTableAdapter1.Delete_By_Num_Facture(CurrentFactureVitale.num)
            Me.Facture_DétailLppTableAdapter1.Delete_By_Num_Facture(CurrentFactureVitale.num)
            Me.ActesTableAdapter.Delete_by_NumFacturesSV(CurrentFactureVitale.num)
            Me.Enabled = True
            Return False
        End If
        '___________________________________________________________________________________________________
        erreur = SIS_FormaterFactures(NomRessourcePS, NomRessourceLecteur, "", FactureAcreer, ModeSecur, NumeroSessionFacture)
        AfficheErreur(erreur)

        If erreur <> 0 Then
            Me.FacturesTableAdapter.DeleteByNum(CurrentFactureVitale.num)
            Me.Facture_LigneFactureTableAdapter1.Delete_By_Num_Facture(CurrentFactureVitale.num)
            Me.Facture_DétailCodeCIPTableAdapter1.Delete_By_Num_Facture(CurrentFactureVitale.num)
            Me.Facture_DétailLppTableAdapter1.Delete_By_Num_Facture(CurrentFactureVitale.num)
            Me.ActesTableAdapter.Delete_by_NumFacturesSV(CurrentFactureVitale.num)
            Me.Enabled = True
            Return False
        End If
        '------------------------------------------------------
        'Visu_API agrement CNDA
        If Visu_API = True Then
            Technique_MAIN.LireSession_Out_VersFichier2(NumeroSessionFacture, Application.StartupPath + "\traces\Formater_Facture_out.txt")
        End If
        '------------------------------------------------------
        'Enregistrement des FSE et DRE (fichier)
        'CurrentFactureVitale.FactureAcree = FactureAcreer
        SaveFactureFichier(CurrentFactureVitale.num, FactureAcreer)
        'CurrentFactureVitale.Bénéficiaire = ComboBoxLECTURE_VITALE.Text
        'CurrentFactureVitale.Assuré = CurrentBenéficiaire.Assuré
        'SaveFactureBdd(NumFacture)

        '------------------------------------------------------
        'ResetForm()
        SGD_LibererSession(NumeroSessionFacture)
        Me.Enabled = True
        Return True
        'Me.Enabled = True

    End Function

    'VENTE DIRECTE
    Public Sub VenteDirecte(ByVal indexligne As Integer)
        MsgBox("ALORS JUJU IL FAUT PROGRAMMER LES VENTES DIRECTES" + Chr(10) + "ligne:" + indexligne.ToString, MsgBoxStyle.Critical)
    End Sub

    'Test de la présence d'un client dans la bdd
    Public Function ClientConnu()
        If Me.VitaleTableAdapter.selecetcountfromvitale(CurrentBenéficiaire.G101C8, CurrentBenéficiaire.G101C9, CurrentBenéficiaire.G104C1, CurrentBenéficiaire.G104C2, CurrentBenéficiaire.G104C3, CurrentBenéficiaire.G104C12, CurrentBenéficiaire.G104C13, CurrentBenéficiaire.G104C14) = 0 Then
            Return False
        Else
            Return True
        End If
    End Function
#End Region
#Region "Prescripteur"
    Private Sub recherche_prescripteur()
        Dim mydatatable As DataTable = Me.PrescripteursTableAdapter.recherche_prescripteur1(PrescripteurTextBox.Text)
        Select Case mydatatable.Rows.Count
            Case 1
                For i = 0 To mydatatable.Columns.Count - 1
                    Select Case mydatatable.Columns.Item(i).ColumnName
                        Case "IDinterne"
                            CurrentBenéficiaire.IDPrescripteur = mydatatable(0).Item(i).ToString
                        Case "NomPrénom"
                            PrescripteurTextBox.Text = mydatatable(0).Item(i).ToString
                        Case "Numidentification"
                            TextBox_Prescripteur_NumID.Text = mydatatable(0).Item(i).ToString
                        Case "CodeSpécialité"
                            Prescripteur_Spécialité_TextBox.Text = Traduction_CodeSpécialité_Prescripteur(mydatatable(0).Item(i).ToString)
                    End Select
                Next
            Case Else
                Choix_Prescripteur.Visible = True
        End Select
    End Sub


    Private Sub PrescripteurTextBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles PrescripteurTextBox.KeyDown
        If e.KeyCode = Keys.Enter Then
            recherche_prescripteur()
        End If
    End Sub
    Private Sub PrescripteurTextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles PrescripteurTextBox.Validated
        recherche_prescripteur()
    End Sub

    Private Sub Affiche_prescripteur_By_ID(ByRef ID As String)
        Dim mydatatable As DataTable = Me.PrescripteursTableAdapter.GetPrescripteurDataByIDinterne(ID)
        Select Case mydatatable.Rows.Count
            Case 1
                For i = 0 To mydatatable.Columns.Count - 1
                    Select Case mydatatable.Columns.Item(i).ColumnName
                        Case "NomPrénom"
                            PrescripteurTextBox.Text = mydatatable(0).Item(i).ToString
                        Case "Numidentification"
                            TextBox_Prescripteur_NumID.Text = mydatatable(0).Item(i).ToString
                    End Select
                Next
            Case Else
                ID = ""
                TextBox_Prescripteur_NumID.Text = ""
        End Select
    End Sub
#End Region

#Region "RÉÉDITION FACTURE"


    Public Sub HistoriqueNumFactureTextBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles HistoriqueNumFactureTextBox.KeyDown
        If e.KeyCode = Keys.Enter Then
            CurrentFactureVitale.Clear(True)
            CurrentBenéficiaire.clear()
            Dim mydatatable = Me.FacturesTableAdapter.GetFactureDataByNum1(Val(HistoriqueNumFactureTextBox.Text))
            Select Case mydatatable.Rows.Count
                Case 0
                    MsgBox("Il n'y a pas de facture avec le num " + HistoriqueNumFactureTextBox.Text.ToString, MsgBoxStyle.Information)
                    Exit Sub
                Case 1
                    For i = 0 To mydatatable.Columns.Count - 1
                        Select Case mydatatable.Columns.Item(i).ColumnName

                            Case "Num"
                                CurrentFactureVitale.num = mydatatable(0).Item(i)
                            Case "Bénéficiaire"
                                CurrentFactureVitale.Bénéficiaire = mydatatable(0).Item(i).ToString
                            Case "Assuré"
                                CurrentFactureVitale.Assuré = mydatatable(0).Item(i).ToString
                            Case "CRLdeFSE"
                                CurrentFactureVitale.CRLdeFSE = mydatatable(0).Item(i).ToString
                            Case "CRLdeDRE"
                                CurrentFactureVitale.CRLdeDRE = mydatatable(0).Item(i).ToString
                                'Case "Num_Lot"
                                '    CurrentFactureVitale.Num_Lot = mydatatable(0).Item(i).ToString
                                'Case "Date_Lot"
                                '    CurrentFactureVitale.Date_Lot = mydatatable(0).Item(i).ToString
                            Case "G1110C1"
                                CurrentFactureVitale.G1110C1 = mydatatable(0).Item(i).ToString
                            Case "G1110C2"
                                CurrentFactureVitale.G1110C2 = mydatatable(0).Item(i).ToString
                            Case "G1110C3"
                                DateExecution.Value = Mid(mydatatable(0).Item(i).ToString, 7, 2) + "/" + Mid(mydatatable(0).Item(i).ToString, 5, 2) + "/" + Mid(mydatatable(0).Item(i).ToString, 1, 4)
                                CurrentFactureVitale.G1110C3 = mydatatable(0).Item(i).ToString
                            Case "G1110C4"
                                CurrentFactureVitale.G1110C4 = mydatatable(0).Item(i).ToString
                            Case "G1120C1"
                                CurrentFactureVitale.G1120C1 = mydatatable(0).Item(i).ToString
                            Case "G1130C1"
                                CurrentBenéficiaire.G101C7 = mydatatable(0).Item(i).ToString
                                CurrentFactureVitale.G1130C1 = mydatatable(0).Item(i).ToString
                            Case "G1130C2"
                                CurrentBenéficiaire.G101C8 = mydatatable(0).Item(i).ToString
                                CurrentFactureVitale.G1130C2 = mydatatable(0).Item(i).ToString
                            Case "G1130C3"
                                CurrentBenéficiaire.G101C9 = mydatatable(0).Item(i).ToString
                                CurrentFactureVitale.G1130C3 = mydatatable(0).Item(i).ToString
                            Case "G1130C4"
                                CurrentBenéficiaire.G104C12 = mydatatable(0).Item(i).ToString
                                CurrentFactureVitale.G1130C4 = mydatatable(0).Item(i).ToString
                            Case "G1130C5"
                                CurrentBenéficiaire.G104C13 = mydatatable(0).Item(i).ToString
                                CurrentFactureVitale.G1130C5 = mydatatable(0).Item(i).ToString
                            Case "G1130C6"
                                CurrentBenéficiaire.G104C14 = mydatatable(0).Item(i).ToString
                                CurrentFactureVitale.G1130C6 = mydatatable(0).Item(i).ToString
                            Case "G1130C7"
                                CurrentBenéficiaire.G106C3(0) = mydatatable(0).Item(i).ToString
                                CurrentFactureVitale.G1130C7 = mydatatable(0).Item(i).ToString
                            Case "G1130C8"
                                CurrentBenéficiaire.G106C4(0) = mydatatable(0).Item(i).ToString
                                CurrentFactureVitale.G1130C8 = mydatatable(0).Item(i).ToString
                            Case "G1160C1"
                                CurrentBenéficiaire.G104C9 = mydatatable(0).Item(i).ToString
                                CurrentFactureVitale.G1160C1 = mydatatable(0).Item(i).ToString
                            Case "G1160C2"
                                CurrentBenéficiaire.G104C10 = mydatatable(0).Item(i).ToString
                                CurrentFactureVitale.G1160C2 = mydatatable(0).Item(i).ToString
                            Case "G1211C1"
                                CurrentFactureVitale.G1211C1 = mydatatable(0).Item(i).ToString
                            Case "G1211C2"
                                CurrentFactureVitale.G1211C2 = mydatatable(0).Item(i).ToString
                            Case "G1211C3"
                                CurrentFactureVitale.G1211C3 = mydatatable(0).Item(i).ToString
                            Case "G1211C4"
                                CurrentFactureVitale.G1211C4 = mydatatable(0).Item(i).ToString
                            Case "G1211C5"
                                CurrentFactureVitale.G1211C5 = mydatatable(0).Item(i).ToString
                            Case "G1211C6"
                                CurrentFactureVitale.G1211C6 = mydatatable(0).Item(i).ToString
                            Case "G1211C7"
                                CurrentFactureVitale.G1211C7 = mydatatable(0).Item(i).ToString
                            Case "G1213C1"
                                CurrentFactureVitale.G1213C1 = mydatatable(0).Item(i).ToString
                            Case "G1213C2"
                                CurrentFactureVitale.G1213C2 = mydatatable(0).Item(i).ToString
                            Case "G1213C3"
                                CurrentFactureVitale.G1213C3 = mydatatable(0).Item(i).ToString
                            Case "G1213C4"
                                CurrentFactureVitale.G1213C4 = mydatatable(0).Item(i).ToString
                            Case "G1213C5"
                                CurrentFactureVitale.G1213C5 = mydatatable(0).Item(i).ToString
                            Case "G1213C6"
                                CurrentFactureVitale.G1213C6 = mydatatable(0).Item(i).ToString
                            Case "G1213C7"
                                CurrentFactureVitale.G1213C7 = mydatatable(0).Item(i).ToString
                            Case "G1213C8"
                                CurrentFactureVitale.G1213C8 = mydatatable(0).Item(i).ToString
                            Case "G1214C1"
                                CurrentFactureVitale.G1214C1 = mydatatable(0).Item(i).ToString
                            Case "G1214C2"
                                CurrentFactureVitale.G1214C2 = mydatatable(0).Item(i).ToString
                            Case "G1214C3"
                                CurrentFactureVitale.G1214C3 = mydatatable(0).Item(i).ToString
                            Case "G1214C4"
                                CurrentFactureVitale.G1214C4 = mydatatable(0).Item(i).ToString
                            Case "G1214C5"
                                CurrentFactureVitale.G1214C5 = mydatatable(0).Item(i).ToString
                            Case "G1214C6"
                                CurrentFactureVitale.G1214C6 = mydatatable(0).Item(i).ToString
                            Case "G1214C7"
                                CurrentFactureVitale.G1214C7 = mydatatable(0).Item(i).ToString
                            Case "G1214C8"
                                CurrentFactureVitale.G1214C8 = mydatatable(0).Item(i).ToString
                            Case "G1230C1"
                                CurrentFactureVitale.G1230C1 = mydatatable(0).Item(i).ToString

                            Case "G1310C1"
                                CurrentBenéficiaire.G101C10 = mydatatable(0).Item(i).ToString
                                CurrentFactureVitale.G1310C1 = mydatatable(0).Item(i).ToString
                            Case "G1310C2"
                                CurrentBenéficiaire.G101C11 = mydatatable(0).Item(i).ToString
                                CurrentFactureVitale.G1310C2 = mydatatable(0).Item(i).ToString
                            Case "G1310C3"
                                CurrentBenéficiaire.G101C12 = mydatatable(0).Item(i).ToString
                                CurrentFactureVitale.G1310C3 = mydatatable(0).Item(i).ToString
                            Case "G1310C4"
                                CurrentFactureVitale.G1310C4 = mydatatable(0).Item(i).ToString
                            Case "G1310C5"
                                CurrentFactureVitale.G1310C5 = mydatatable(0).Item(i).ToString

                            Case "G1321C1"
                                CurrentFactureVitale.G1321C1 = mydatatable(0).Item(i).ToString
                            Case "G1321C2"
                                CurrentFactureVitale.G1321C2 = mydatatable(0).Item(i).ToString
                            Case "G1321C3"
                                CurrentFactureVitale.G1321C3 = mydatatable(0).Item(i).ToString
                            Case "G1321C4"
                                CurrentFactureVitale.G1321C4 = mydatatable(0).Item(i).ToString
                            Case "G1321C5"
                                CurrentFactureVitale.G1321C5 = mydatatable(0).Item(i).ToString
                            Case "G1321C6"
                                CurrentFactureVitale.G1321C6 = mydatatable(0).Item(i).ToString
                            Case "G1321C7"
                                CurrentFactureVitale.G1321C7 = mydatatable(0).Item(i).ToString
                            Case "G1321C8"
                                CurrentFactureVitale.G1321C8 = mydatatable(0).Item(i).ToString
                            Case "G1321C9"
                                CurrentFactureVitale.G1321C9 = mydatatable(0).Item(i).ToString
                            Case "G1321C10"
                                CurrentFactureVitale.G1321C10 = mydatatable(0).Item(i).ToString
                            Case "G1321C11"
                                CurrentFactureVitale.G1321C11 = mydatatable(0).Item(i).ToString
                            Case "G1321C12"
                                CurrentFactureVitale.G1321C12 = mydatatable(0).Item(i).ToString

                            Case "G1410C1"
                                CurrentFactureVitale.G1410C1 = mydatatable(0).Item(i).ToString
                                Select Case Val(CurrentFactureVitale.G1410C1)
                                    Case 1
                                        CurrentFactureVitale.TP_AMC = False
                                        CurrentFactureVitale.TP_AMO = False
                                    Case 2
                                        CurrentFactureVitale.TP_AMC = False
                                        CurrentFactureVitale.TP_AMO = True
                                    Case 3, 5
                                        CurrentFactureVitale.TP_AMC = True
                                        CurrentFactureVitale.TP_AMO = True
                                    Case 4
                                        CurrentFactureVitale.TP_AMC = True
                                        CurrentFactureVitale.TP_AMO = False
                                End Select

                            Case "G1420C1"
                                CurrentFactureVitale.G1420C1 = mydatatable(0).Item(i).ToString
                            Case "G1420C2"
                                CurrentFactureVitale.G1420C2 = mydatatable(0).Item(i).ToString
                            Case "G1420C3"
                                CurrentFactureVitale.G1420C3 = mydatatable(0).Item(i).ToString

                            Case "G1440C1"
                                CurrentFactureVitale.G1440C1 = mydatatable(0).Item(i).ToString
                            Case "G1440C2"
                                CurrentFactureVitale.G1440C2 = mydatatable(0).Item(i).ToString
                            Case "G1440C3"
                                CurrentFactureVitale.G1440C3 = mydatatable(0).Item(i).ToString

                            Case "G1511C1"
                                If mydatatable(0).Item(i).ToString <> "" Then
                                    NatureAssuranceDateTimePicker.Value = Mid(mydatatable(0).Item(i).ToString, 7, 2) + "/" + Mid(mydatatable(0).Item(i).ToString, 5, 2) + "/" + Mid(mydatatable(0).Item(i).ToString, 1, 4)
                                    NatureAssurance_Button.Text = "ACCIDENT DE DROIT COMMUN"
                                End If
                                CurrentFactureVitale.G1511C1 = mydatatable(0).Item(i).ToString
                            Case "G1511C2"
                                CurrentFactureVitale.G1511C2 = mydatatable(0).Item(i).ToString

                            Case "G1512C1"
                                If mydatatable(0).Item(i).ToString <> "" Then
                                    NatureAssuranceDateTimePicker.Value = Mid(mydatatable(0).Item(i).ToString, 7, 2) + "/" + Mid(mydatatable(0).Item(i).ToString, 5, 2) + "/" + Mid(mydatatable(0).Item(i).ToString, 1, 4)
                                    NatureAssurance_Button.Text = "MATERNITE"
                                    CurrentFactureVitale.G1512C1 = mydatatable(0).Item(i).ToString
                                End If

                            Case "G1513C1"
                                If mydatatable(0).Item(i).ToString <> "" Then
                                    NatureAssuranceDateTimePicker.Value = Mid(mydatatable(0).Item(i).ToString, 7, 2) + "/" + Mid(mydatatable(0).Item(i).ToString, 5, 2) + "/" + Mid(mydatatable(0).Item(i).ToString, 1, 4)
                                    CurrentFactureVitale.G1513C1 = mydatatable(0).Item(i).ToString
                                    NatureAssurance_Button.Text = "ACCIDENT DU TRAVAIL"
                                End If
                                'Case "G1513C2"
                                '    If mydatatable(0).Item(i).ToString <> "" Then
                                '        NumeroAccidentTravail.Text = mydatatable(0).Item(i).ToString
                                '        CurrentFactureVitale.G1513C2 = mydatatable(0).Item(i).ToString
                                '    End If
                                'Case "G1513C3"
                                '    If mydatatable(0).Item(i).ToString <> "" Then
                                '        CleaccidentTravail.Text = mydatatable(0).Item(i).ToString
                                '        CurrentFactureVitale.G1513C3 = mydatatable(0).Item(i).ToString
                                '    End If

                            Case "G1514C1"
                                CurrentFactureVitale.G1514C1 = mydatatable(0).Item(i).ToString
                            Case "G1514C2"
                                CurrentFactureVitale.G1514C2 = mydatatable(0).Item(i).ToString
                            Case "G1514C3"
                                CurrentFactureVitale.G1514C3 = mydatatable(0).Item(i).ToString
                            Case "G1514C4"
                                CurrentFactureVitale.G1514C4 = mydatatable(0).Item(i).ToString

                            Case "G1910C1"
                                CurrentFactureVitale.G1910C1 = mydatatable(0).Item(i).ToString
                            Case "G1910C2"
                                CurrentFactureVitale.G1910C2 = mydatatable(0).Item(i).ToString
                            Case "G1910C3"
                                CurrentFactureVitale.G1910C3 = mydatatable(0).Item(i).ToString
                            Case "G1910C4"
                                CurrentFactureVitale.G1910C4 = mydatatable(0).Item(i).ToString
                            Case "G1910C5"
                                CurrentFactureVitale.G1910C5 = mydatatable(0).Item(i).ToString
                            Case "G1910C6"
                                CurrentFactureVitale.G1910C6 = mydatatable(0).Item(i).ToString
                            Case "IDPrescripteur"
                                CurrentBenéficiaire.IDPrescripteur = mydatatable(0).Item(i).ToString
                                CurrentFactureVitale.IDPrescripteur = mydatatable(0).Item(i).ToString
                            Case "FactureAcreer"
                                If mydatatable(0).Item(i).ToString <> "1" Then
                                    CheckBox_DRE_annulation.Visible = True
                                    CheckBox_DRE_rectificative.Visible = True
                                End If


                        End Select
                    Next
                    GetDataBénéficiaire()

                    'recherche des lignes cip
                    Dim mydatatableCIP = Me.Facture_DétailCodeCIPTableAdapter1.GetDataByNumFacture(Val(HistoriqueNumFactureTextBox.Text))
                    Dim numligne As Integer = 0
                    For r = 0 To mydatatableCIP.Rows.Count - 1
                        Vente.Rows.Add()
                        For c = 0 To mydatatableCIP.Columns.Count - 1
                            Select Case mydatatableCIP.Columns.Item(c).ColumnName
                                Case "G1740C3"
                                    '    If mydatatableCIP(r).Item(c).ToString.Length = 13 Then Vente.Item(VenteEAN13.Index, numligne).Value = mydatatableCIP(r).Item(c).ToString
                                    '    If mydatatableCIP(r).Item(c).ToString.Length = 7 Then Vente.Item(VenteCIP.Index, numligne).Value = mydatatableCIP(r).Item(c).ToString
                                    '    Vente.CurrentCell = Vente.Item(VenteCIP.Index, numligne)
                                    '    Vente_CellValidated(Nothing, Nothing)
                                    '    Vente.CurrentCell = Vente.Item(VenteEAN13.Index, numligne)
                                    '    Vente_CellValidated(Nothing, Nothing)
                                    Vente.Item(Vente_produits.Index, numligne).Value = mydatatableCIP(r).Item(c).ToString
                                    Vente_CellValidated(Nothing, Nothing)
                                Case "G1740C5"
                                    Vente.Item(VenteQuantité.Index, numligne).Value = mydatatableCIP(r).Item(c).ToString
                            End Select
                            Vente.CurrentCell = Vente.Item(VenteQuantité.Index, numligne)
                            Vente_CellValidated(Nothing, Nothing)
                        Next
                        numligne = numligne + 1
                    Next

                    'recherche des lignes lpp
                    Vente.Rows.Clear()
                    Dim mydatatableLPP = Me.Facture_DétailLppTableAdapter1.GetDataByNumFacture(Val(HistoriqueNumFactureTextBox.Text))
                    For r = 0 To mydatatableLPP.Rows.Count - 1
                        Vente.Rows.Add()
                        For c = 0 To mydatatableLPP.Columns.Count - 1
                            Select Case mydatatableLPP.Columns.Item(c).ColumnName
                                Case "G1730C2"
                                    Vente.Item(VenteLPP.Index, numligne).Value = mydatatableLPP(r).Item(c).ToString
                                Case "G1730C8"
                                    Vente.Item(VenteQuantité.Index, numligne).Value = mydatatableLPP(r).Item(c).ToString
                            End Select
                        Next
                        numligne = numligne + 1
                    Next

                    CheckBox_DRE_annulation.Visible = True
                    CheckBox_DRE_rectificative.Visible = True

                    MsgBox("PROGRAMMER AFFICHAGE DES DONNÉES ASSURÉ ET DÉTAIL PRODUIT")

                Case Else
                    MsgBox("Il y a plusieurs factures avec le num " + HistoriqueNumFactureTextBox.Text.ToString, MsgBoxStyle.Critical)
                    Exit Sub
            End Select

        End If
    End Sub

    Private Sub HistoriqueNumFactureTextBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HistoriqueNumFactureTextBox.Click
        HistoriqueNumFactureTextBox.Clear()
    End Sub
#End Region
#Region "FORMULAIRE"

#Region "COULEURS"
    Private Sub ChangeCouleurObjetActif(ByVal sender As Object, ByVal e As System.EventArgs) Handles DateExecution.Enter, ComboBoxLECTURE_VITALE.Enter, PrescripteurTextBox.Enter ', NatureAssuranceComboBox.Enter
        sender.BackColor = Color.Yellow
    End Sub

    Private Sub PrescripteurTextBox_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles DateExecution.LostFocus, ComboBoxLECTURE_VITALE.LostFocus, PrescripteurTextBox.LostFocus ', NatureAssuranceComboBox.LostFocus
        sender.BackColor = Color.White

    End Sub
#End Region
#Region "Graphics"

    Private Sub resize_form()
        Dim div_height, div_width As Single
        div_height = 1000 / Screen.PrimaryScreen.Bounds.Height
        div_width = 1600 / Screen.PrimaryScreen.Bounds.Width
        If div_height > 1 And div_width > 1 Then
            Me.Height = Int(Me.Height / div_height)
            Me.Width = Int(Me.Width / div_width)
            For Each obj In Controls
                Select Case obj.GetType.FullName.ToString

                    Case "System.Windows.Forms.PictureBox"
                        Dim pict As System.Windows.Forms.PictureBox
                        pict = obj
                        pict.Width = Int(pict.Width / div_width)
                        pict.Height = Int(pict.Height / div_height)
                        pict.Location = New Point(Int(pict.Location.X / div_width), Int(pict.Location.Y / div_height))

                    Case "System.Windows.Forms.PictureBox"
                        Dim lab As System.Windows.Forms.Label
                        lab = obj
                        lab.Width = Int(lab.Width / div_width)
                        lab.Height = Int(lab.Height / div_height)
                        lab.Location = New Point(Int(lab.Location.X / div_width), Int(lab.Location.Y / div_height))

                    Case "System.Windows.Forms.DataGridView"
                        Dim dat As System.Windows.Forms.DataGridView
                        dat = obj
                        dat.Width = Int(dat.Width / div_width)
                        dat.Height = Int(dat.Height / div_height)
                        dat.Location = New Point(Int(dat.Location.X / div_width), Int(dat.Location.Y / div_height))

                    Case "System.Windows.Forms.GroupBox"
                        Dim grp As System.Windows.Forms.GroupBox
                        grp = obj
                        grp.Width = Int(grp.Width / div_width)
                        grp.Height = Int(grp.Height / div_height)
                        grp.Location = New Point(Int(grp.Location.X / div_width), Int(grp.Location.Y / div_height))

                    Case "System.Windows.Forms.Panel"
                        Dim pan As System.Windows.Forms.Panel
                        pan = obj
                        pan.Width = Int(pan.Width / div_width)
                        pan.Height = Int(pan.Height / div_height)
                        pan.Location = New Point(Int(pan.Location.X / div_width), Int(pan.Location.Y / div_height))

                    Case "System.Windows.Forms.Button"
                        Dim but As System.Windows.Forms.Button
                        but = obj
                        but.Width = Int(but.Width / div_width)
                        but.Height = Int(but.Height / div_height)
                        but.Location = New Point(Int(but.Location.X / div_width), Int(but.Location.Y / div_height))

                    Case "System.Windows.Forms.DateTimePicker"
                        Dim dtp As System.Windows.Forms.DateTimePicker
                        dtp = obj
                        dtp.Width = Int(dtp.Width / div_width)
                        dtp.Height = Int(dtp.Height / div_height)
                        dtp.Location = New Point(Int(dtp.Location.X / div_width), Int(dtp.Location.Y / div_height))

                End Select


            Next
        End If
    End Sub

    'Private Sub Détail_Bénéficiaire_Panel_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Détail_Bénéficiaire_Panel.Paint
    '    Dim gp As GraphicsPath
    '    gp = GetRoundedRectPath(Me.Détail_Bénéficiaire_Panel.ClientRectangle, 45)
    '    'e.Graphics.FillPath(Brushes.Green, gp)
    '    Détail_Bénéficiaire_Panel.BackColor = Color.FromArgb(64, 64, 64)
    '    e.Graphics.FillPath(New SolidBrush(Color.Green), gp)

    '    e.Graphics.SmoothingMode = SmoothingMode.HighQuality

    'End Sub

    'Private Sub Vente_Validated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Vente.Validated
    '    If e.ColumnIndex = VenteQuantité.Index Then
    '        If Vente.CurrentRow.Index + 1 >= Vente.RowCount Then Exit Sub
    '        If Vente.Item(Vente_produits.Index, Vente.CurrentCell.RowIndex + 1).Value Is Nothing Then
    '            If Vente.Item(VenteCodeActe.Index, Vente.CurrentCell.RowIndex + 1).Value Is Nothing Then
    '                Vente.CurrentCell = Vente.Item(Vente_produits.Index, Vente.CurrentCell.RowIndex)
    '            End If
    '        End If
    '    End If
    'End Sub





    Private Sub Vente_CellPainting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles Vente.CellPainting
        resize_form()

        If e.ColumnIndex = Vente_Delete.Index And e.RowIndex <> -1 Then
            e.Paint(e.CellBounds, DataGridViewPaintParts.All And Not DataGridViewPaintParts.ContentForeground)
            e.Graphics.DrawImage(Image.FromFile(Application.StartupPath + "\images\vente_suppr_ligne.bmp"), e.CellBounds)
            e.Handled = True
        ElseIf e.ColumnIndex = Vente_Détail.Index And e.RowIndex <> -1 Then
            e.Paint(e.CellBounds, DataGridViewPaintParts.All And Not DataGridViewPaintParts.ContentForeground)
            e.Graphics.DrawImage(Image.FromFile(Application.StartupPath + "\images\logo_loupe.bmp"), e.CellBounds)
            e.Handled = True
        End If
    End Sub
#End Region
    Private Sub COMPTOIR_MAIN_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        ResetForm()
    
        ConfigXml.Load(Application.StartupPath + "\config.xml")


        Dates_Label.Text = Format(Now, "dd/MM/yyyy")

        If Config.Logiciel_ModeFonctionement = "Test" Then
            Mode_Fonctionement_Label.Text = "Mode TEST"
        ElseIf Config.Logiciel_ModeFonctionement = "Démonstration" Then
            Mode_Fonctionement_Label.Text = "Mode DEMO"
        Else
            Mode_Fonctionement_Label.Text = ""
        End If

        'Commandes_Panel
        If Screen.PrimaryScreen.Bounds.Width < 1800 Then
            Commandes_Panel.Width = 0
            Commandes_Panel.Location = New Point(Screen.PrimaryScreen.Bounds.Width, 0)
            Commandes_Panel.Height = Screen.PrimaryScreen.Bounds.Height
        Else
            Commandes_Panel.Width = 200
            Commandes_Panel.Location = New Point(Screen.PrimaryScreen.Bounds.Width - 200, 0)
            Commandes_Panel.Height = Screen.PrimaryScreen.Bounds.Height
        End If



    End Sub
    'Panel détail bénéficiaire
    Private Sub Détail_Bénéficiaire_PictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Détail_Bénéficiaire_PictureBox.Click
        If Détail_Bénéficiaire_Panel.Visible = False Then
            Vente.Visible = False
            Détail_Bénéficiaire_Panel.Visible = True
            Détail_Bénéficiaire_Label.Text = "VOIR PRODUITS"
            Détail_Bénéficiaire_PictureBox.BackgroundImage = System.Drawing.Image.FromFile(Application.StartupPath + "\images\produits.jpg")
        Else

            Détail_Bénéficiaire_Panel.Visible = False
            Vente.Visible = True
            Détail_Bénéficiaire_Label.Text = "VOIR ASSU. COMPL."
            Détail_Bénéficiaire_PictureBox.BackgroundImage = System.Drawing.Image.FromFile(Application.StartupPath + "\images\organismes compémentaires.jpg")
        End If
    End Sub

    'Reset Formulaire ,NumeroSessionVitale, CurrentBenéficiaire, CurrentFacture
    Public Sub ResetForm()
        DateFacture.Value = Now
        For i = 0 To ComboBoxLECTURE_VITALE.Items.Count - 1
            ComboBoxLECTURE_VITALE.Items.Remove(i)
        Next
        ComboBoxLECTURE_VITALE.Text = ""
        ClearGroupBox(AssuréGroupBox, True)
        ClearGroupBox(ASSURANCE_COMPLEMENTAIREGroupBox, False)
        ClearGroupBox(PrescripteurGroupBox, True)
        CurrentBeneficiaireRichTextBox.Clear()
        SGD_LibererSession(NumeroSessionVitale)
        If SGD_ReserverSession(0, NumeroSessionVitale) <> 0 Then
            MsgBox("ERREUR POUR LA RESERVATION DE SESSION VITALE")
        End If
        PrescripteurTextBox.Clear()
        Vente.Rows.Clear()

        CurrentBenéficiaire.clear()
        CurrentFactureVitale.Clear(True)
        CurrentFactureVenteDirecte.Clear()



        'CheckBoxDRE.Enabled = False
        'CheckBoxDRE.Checked = False
        'CheckBoxFSE.Enabled = False
        'CheckBoxFSE.Checked = False
        CheckBoxModeDegradé.Checked = False
        DatePrecription.Enabled = True
        DateExecution.Enabled = True
        DateFacture.Enabled = True
        CheckBox_DRE_annulation.Checked = False
        CheckBox_DRE_annulation.Visible = False
        CheckBox_DRE_rectificative.Checked = False
        CheckBox_DRE_rectificative.Visible = False

        'If OCT = True Then
        '    CheckBoxFSE.Visible = False
        '    CheckBoxDRE.Visible = False
        '    CheckBoxFSE.Checked = True
        'Else
        '    CheckBoxFSE.Visible = True
        '    CheckBoxDRE.Visible = True
        'End If

        'ventetype_index_defaut = 1
        ventetype_defaut = "Vente Directe"

        ReDim tab_current_formule_STS(0)
        current_formule_STS.Clear()
        CurrentConvention.clear()

        OriginePrescriptionToolStripMenuItem.Checked = False
        PreventioncommuneAMOAMCToolStripMenuItem.Checked = False

        Date_part_complémentaire_Item_Date_Éxécution.Checked = True
        Date_part_complémentaire_Item_Date_Facturation.Checked = False
        Date_part_complémentaire_Item_Date_Prescription.Checked = False

    End Sub

    'fonction de transferts des data de la grille de recherche vers la grille de vente
    Public Sub transfertrechercheversvente(ByVal lignevente As Integer, ByVal lignerecherche As Integer)
        'Dim Produit_déja_en_vente = False
        'For r = 0 To Vente.Rows.Count - 1
        '    If Vente.Item(Vente_produits.Index, r).Value = RechercheProduits(RechercheProduitsDesignation.Index, lignerecherche).Value Then
        '        Produit_déja_en_vente = True
        '        If lignevente <> r Then
        '            Vente.Item(Vente_produits.Index, lignevente).Value = ""
        '            Vente.Item(VenteQuantité.Index, r).Value = Vente.Item(VenteQuantité.Index, r).Value + 1
        '            Vente(VenteTotal.Index, r).Value = Vente(VenteQuantité.Index, r).Value * Vente(VentePrix.Index, r).Value
        '        End If
        '    End If
        'Next
        'If Produit_déja_en_vente = False Then

        Vente(Ventecab.Index, lignevente).Value = RechercheProduits(RechercheProduitsCAB.Index, lignerecherche).Value

        Vente(VenteDésignation.Index, lignevente).Value = RechercheProduits(RechercheProduitsDesignation.Index, lignerecherche).Value
        If Vente(Vente_produits.Index, lignevente).Value <> RechercheProduits(RechercheProduitsDesignation.Index, lignerecherche).Value Then
            Vente(Vente_produits.Index, lignevente).Value = RechercheProduits(RechercheProduitsDesignation.Index, lignerecherche).Value
        End If
        Vente(VenteCIP.Index, lignevente).Value = RechercheProduits(RechercheProduitsCIP.Index, lignerecherche).Value
        Vente(VenteEAN13.Index, lignevente).Value = RechercheProduits(RechercheProduitsEAN13.Index, lignerecherche).Value
        Vente(VenteLPP.Index, lignevente).Value = RechercheProduits(RechercheProduitsLPP.Index, lignerecherche).Value
        Vente(VenteCodeActe.Index, lignevente).Value = RechercheProduits(RechercheProduitsPrestation.Index, lignerecherche).Value
        Vente(VenteListe.Index, lignevente).Value = RechercheProduits(RechercheProduitsListe.Index, lignerecherche).Value
        Vente(VentePrix.Index, lignevente).Value = RechercheProduits(RechercheProduitsPrixventeTTC.Index, lignerecherche).Value
        Vente(VenteStock.Index, lignevente).Value = RechercheProduits(RechercheProduitsStock.Index, lignerecherche).Value
        Vente(VenteDus.Index, lignevente).Value = RechercheProduits(RechercheProduitsDus.Index, lignerecherche).Value
        Vente(VenteTFRtype.Index, lignevente).Value = RechercheProduits(RechercheProduitsTFRtype.Index, lignerecherche).Value
        Vente(VenteRemise.Index, lignevente).Value = "0"
        Vente(VenteTFRprix.Index, lignevente).Value = Me.BdM_PrixTableAdapter1.Select_TFR(RechercheProduits(RechercheProduitsEAN13.Index, lignerecherche).Value, RechercheProduits(RechercheProduitsCIP.Index, lignerecherche).Value, Format(DateExecution.Value, "yyyyMMdd")) / 100
        Vente(VenteQuantité.Index, lignevente).Value = "1"
        'Vente(VenteTotal.Index, lignevente).Value = Vente(VenteQuantité.Index, lignevente).Value * Vente(VentePrix.Index, lignevente).Value
        'End If

    End Sub

    'validation de data dans la grille vente
    Private Sub Vente_CellValidated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Vente.CellValidated

        lignevente = Vente.CurrentCell.RowIndex

        Select Case Vente.CurrentCell.ColumnIndex

            Case Vente_produits.Index
                If Valide_VenteCells = False Then Exit Sub
                If Vente.CurrentCell.Value Is Nothing Then Exit Sub
                If Vente.CurrentCell.Value.ToString <> "" Then
                    Select Case Me.ProduitsTableAdapter.selectcountproduit(Vente.CurrentCell.Value.ToString, Vente.CurrentCell.Value.ToString, Vente.CurrentCell.Value.ToString, Vente.CurrentCell.Value.ToString)
                        Case 1 '1 produit correspondant trouvé dans la base
                            Me.ProduitsTableAdapter.selectproduit(Me.PharmaDataSet.Produits, Vente.CurrentCell.Value.ToString, Vente.CurrentCell.Value.ToString, Vente.CurrentCell.Value.ToString, Vente.CurrentCell.Value.ToString)
                            transfertrechercheversvente(lignevente, 0)
                            Valide_VenteCells = False
                            Vente.CurrentCell = Vente.Item(VenteQuantité.Index, Vente.CurrentRow.Index)
                        Case 0 'aucun produit correspondant trouvée dans la base
                            MsgBox("INCONNU", MsgBoxStyle.Exclamation)
                        Case Else 'Plusieurs CAB correspondant trouvés dans la base
                            RechercheProduits.Visible = True
                            Vente.Visible = False
                            Me.ProduitsTableAdapter.selectproduit(Me.PharmaDataSet.Produits, Vente.CurrentCell.Value.ToString, Vente.CurrentCell.Value.ToString, Vente.CurrentCell.Value.ToString, Vente.CurrentCell.Value.ToString)
                    End Select
                End If

            Case VenteQuantité.Index, VentePrix.Index
                If Vente.Item(VentePrix.Index, Vente.CurrentRow.Index).Value IsNot DBNull.Value And Vente.Item(VentePrix.Index, Vente.CurrentRow.Index).Value IsNot Nothing And _
                   Vente.Item(VenteQuantité.Index, Vente.CurrentRow.Index).Value IsNot DBNull.Value And Vente.Item(VenteQuantité.Index, Vente.CurrentRow.Index).Value IsNot Nothing Then
                    If Vente.CurrentRow.Index + 1 < Vente.RowCount Then
                        If Vente.CurrentCell.Value.ToString <> "" And Vente(VentePrix.Index, lignevente).Value.ToString <> "" Then
                            Vente(VenteTotal.Index, lignevente).Value = (Vente(VentePrix.Index, lignevente).Value * Vente(VenteQuantité.Index, lignevente).Value)
                        End If
                    End If
                End If
                'MsgBox("cell validated")

            Case VenteType.Index
                If Vente.CurrentCell.Value <> "" Then
                    If Vente.CurrentCell.Value = "ALD" And NatureAssurance_Button.Text <> "MALADIE" And NatureAssurance_Button.Text <> "ACCIDENT DE DROIT COMMUN" Then
                        MsgBox("ALD INCOMPATIBLE AVEC NATURE ASSURANCE", MsgBoxStyle.Critical)
                        Vente.CurrentCell.Value = "assurance"
                    End If
                End If
                Select Case Vente.CurrentCell.Value
                    Case "assurance"
                        'ventetype_index_defaut = 0
                        ventetype_defaut = "assurance"
                    Case "Vente Directe"
                        'ventetype_index_defaut = 1
                        ventetype_defaut = "Vente Directe"
                    Case "ALD"
                        'ventetype_index_defaut = 2
                        ventetype_defaut = "ALD"
                    Case "PREV"
                        'ventetype_index_defaut = 3
                        ventetype_defaut = "PREV"
                    Case "SP"
                        'ventetype_index_defaut = 3
                        ventetype_defaut = "SP"
                End Select

            Case VenteCodeActe.Index
                If Vente.CurrentRow.Index + 1 < Vente.RowCount Then
                    If UCase(Vente.Item(VenteType.Index, Vente.CurrentRow.Index).Value.ToString) <> "VENTE DIRECTE" And Vente.CurrentCell.Value = "" Then
                        Choix_CodeActe.ShowDialog()
                    End If
                End If
        End Select

        If Vente.CurrentRow.Index + 1 < Vente.RowCount Then
            'Dim CBox As DataGridViewComboBoxCell = CType(Vente.Rows(Vente.CurrentRow.Index).Cells.Item(VenteType.Index), DataGridViewComboBoxCell)
            'Dim CCol As DataGridViewComboBoxColumn = CType(Vente.Columns(VenteType.Index), DataGridViewComboBoxColumn)
            'CBox.Value = CCol.Items(ventetype_index_defaut)
            Vente.Rows(Vente.CurrentRow.Index).Cells.Item(VenteType.Index).Value = ventetype_defaut
        End If

        'Vente(VenteTotal.Index, lignevente).Value = (Vente(VentePrix.Index, lignevente).Value * Vente(VenteQuantité.Index, lignevente).Value)

        Valide_VenteCells = False
    End Sub

    Private Sub Vente_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Vente.CellValueChanged
        If e.ColumnIndex = Vente_produits.Index Then Valide_VenteCells = True
    End Sub

    'Choix d'un produit dans la grille de recherhce
    Private Sub RechercheProduits_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles RechercheProduits.CellClick

        If e.RowIndex = -1 Then
            Exit Sub
        End If

        transfertrechercheversvente(lignevente, RechercheProduits.CurrentCell.RowIndex)
        Vente(VenteQuantité.Index, lignevente).Value = 1
        'Select Case ventetype_index_defaut
        '    Case 0
        '        Vente(VenteType.Index, lignevente).Value = "assurance"
        '    Case 1
        '        Vente(VenteType.Index, lignevente).Value = "Vente Directe"
        '    Case 2
        '        Vente(VenteType.Index, lignevente).Value = "ALD"
        '    Case 3
        '        Vente(VenteType.Index, lignevente).Value = "PREV"
        'End Select
        Vente(VenteType.Index, lignevente).Value = ventetype_defaut
        RechercheProduits.Visible = False
        Vente.Visible = True
        Vente.Focus()
        Vente.Enabled = True
        Vente.CurrentCell = Vente(VenteQuantité.Index, lignevente)
    End Sub

    ' Edition_Prescripteur
    Private Sub PictureBox_Edition_Prescripteur_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox_Edition_Prescripteur.Click
        Edition_Prescripteurs.Visible = True
    End Sub




    'mode degradé CheckedChanged
    Private Sub CheckBoxModeDegradé_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBoxModeDegradé.CheckedChanged
        Select Case CheckBoxModeDegradé.Checked
            Case True
                G1511C2_CheckBox1.Visible = True
            Case False
                G1511C2_CheckBox1.Visible = False
                G1511C2_CheckBox1.Checked = False
        End Select
    End Sub

    'Indicateur Régime Alsace - Moselle CheckedChanged
    Private Sub G1511C2_CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles G1511C2_CheckBox1.CheckedChanged
        Select Case G1511C2_CheckBox1.Checked
            Case True
                CurrentBenéficiaire.G1511C2 = "O"
            Case False
                CurrentBenéficiaire.G1511C2 = "N"
        End Select
    End Sub

    'CheckBox_DRE_annulation_CheckedChanged
    Private Sub CheckBox_DRE_annulation_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox_DRE_annulation.CheckedChanged
        If CheckBox_DRE_annulation.Checked = True Then
            'CheckBoxFSE.Checked = False
            'CheckBoxFSE.Enabled = False
            'CheckBoxDRE.Checked = True
            'CheckBoxDRE.Enabled = False
            CheckBox_DRE_rectificative.Checked = False
            CheckBox_DRE_rectificative.Enabled = False
        Else
            'CheckBoxFSE.Enabled = True
            'CheckBoxDRE.Enabled = True
            CheckBox_DRE_rectificative.Enabled = True
        End If
    End Sub

    'CheckBox_DRE_rectificative_CheckedChanged
    Private Sub CheckBox_DRE_rectificative_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox_DRE_rectificative.CheckedChanged
        If CheckBox_DRE_rectificative.Checked = True Then
            'CheckBoxFSE.Checked = False
            'CheckBoxFSE.Enabled = False
            'CheckBoxDRE.Checked = True
            'CheckBoxDRE.Enabled = False
            CheckBox_DRE_annulation.Checked = False
            CheckBox_DRE_annulation.Enabled = False
        Else
            'CheckBoxFSE.Enabled = True
            'CheckBoxDRE.Enabled = True
            CheckBox_DRE_annulation.Enabled = True
        End If
    End Sub

    'impressions

    Private Sub PictureBox_Printer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox_Printer.Click
        VenteForm.ShowDialog()
    End Sub




    'Private Sub AMC_Piècejustificative_ComboBox_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles AMC_Piècejustificative_ComboBox.Click
    '    If AMC_Piècejustificative_ComboBox.Items.Count = 5 Then
    '        AMC_Piècejustificative_ComboBox.Items.RemoveAt(4)
    '    End If
    'End Sub

    Private Sub AMC_Piècejustificative_ComboBox_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles AMC_Piècejustificative_ComboBox.GotFocus
        If AMC_Piècejustificative_ComboBox.Items.Count > 4 Then
            AMC_Piècejustificative_ComboBox.Items.RemoveAt(4)
        End If
    End Sub

    Private Sub Vente_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Vente.CellClick
        Select Case Vente.CurrentCell.ColumnIndex
            Case VenteCodeActe.Index
                Choix_CodeActe.ShowDialog()
            Case Vente_Delete.Index

                If Vente.RowCount > 1 And Vente.CurrentRow.Index <> Vente.RowCount - 1 Then
                    Vente.Rows.Remove(Vente.CurrentRow)
                End If
                CurrentFactureVitale.PEC.clear()
                ReDim CurrentFactureVitale.G1840(0)
                ReDim CurrentFactureVitale.G1740C7(0)
                ReDim CurrentFactureVitale.Forçage_Part_AMO(0)
                ReDim CurrentFactureVitale.G1741(0)
            Case Vente_Détail.Index
                Dim detail As New DETAIL_Ligne_Vente
                For c = 0 To Vente.ColumnCount - 1
                    'MsgBox(Vente.Columns.Item(c).Name.ToString)
                    detail.Mystring = detail.Mystring + Chr(10) + Vente.Columns.Item(c).Name.ToString + ": "
                    If Not Vente.Item(c, Vente.CurrentRow.Index).Value Is Nothing Then
                        detail.Mystring = detail.Mystring + Vente.Item(c, Vente.CurrentRow.Index).Value.ToString
                    End If

                Next
                detail.ShowDialog()
        End Select
    End Sub
    Private Sub Button_AMC_suppr_type_contrat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_AMC_suppr_type_contrat.Click
        CurrentBenéficiaire.AMC_TypeContrat = ""
        AMC_Couverture_TextBox.Text = ""
    End Sub
    Private Sub STS_Choix_formule_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles STS_Choix_formule.Click
        STS_Choix_Formule_STS.Visible = True
    End Sub
    Private Sub Date_part_complémentaire_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Date_part_complémentaire_Item_Date_Éxécution.Click, Date_part_complémentaire_Item_Date_Facturation.Click, Date_part_complémentaire_Item_Date_Prescription.Click
        'Private Sub EntentePréalableToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EntentePréalableToolStripMenuItem1.Click, EntentePréalableToolStripMenuItem2.Click, EntentePréalableToolStripMenuItem3.Click

        If sender.Checked = True Then
            Date_part_complémentaire_Item_Date_Éxécution.Checked = False
            Date_part_complémentaire_Item_Date_Facturation.Checked = False
            Date_part_complémentaire_Item_Date_Prescription.Checked = False
            sender.Checked = True
        End If
    End Sub


    Private Sub AMC_Dates_TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If sender.Text.Length = 2 Or sender.Text.Length = 5 Then
            sender.AppendText("/")
        End If
        If sender.Text.Length = sender.MaxLength Then
            Me.SelectNextControl(sender, True, True, True, True)
        End If
    End Sub

    Private Sub AMC_Dates_TextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs)
        If Mid(sender.text, 3, 1) <> "/" Or Mid(sender.text, 6, 1) <> "/" Then
            sender.text = ""
        End If
    End Sub

    Private Sub RadioButtonDateDébutGrossesse_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButtonDateDébutGrossesse.CheckedChanged
        RadioButtonDateAccouchement.Checked = Not (RadioButtonDateDébutGrossesse.Checked)
    End Sub

    Private Sub RadioButtonDateAccouchement_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButtonDateAccouchement.CheckedChanged
        RadioButtonDateDébutGrossesse.Checked = Not (RadioButtonDateAccouchement.Checked)
    End Sub
#End Region
#Region "STOCK"
    Public Sub UpdateStock(ByVal CIP_EAN13 As String, ByVal ModifStock As Integer)
        Me.ProduitsTableAdapter.UpdateStock(ModifStock, CIP_EAN13)
    End Sub

#End Region
#Region "CONTROLES COHERENCE DATA"

    'DatePrecription
    Private Sub DatePrecription_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles DatePrecription.Validated
        If DatePrecription.Value > DateExecution.Value Or DateExecution.Value > DateFacture.Value Then
            MsgBox("LA DATE DE PRESCRIPTION DOIT ETRE < ou = A LA DATE D'EXECUTION")
            DatePrecription.Value = DateExecution.Value
        End If
    End Sub

    'DateExecution
    Private Sub DateExecution_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles DateExecution.Validated
        If DateExecution.Value < DatePrecription.Value Or DateExecution.Value > DateFacture.Value Then
            MsgBox("LA DATE D'EXECUTION DOIT ETRE > ou = A LA DATE DE PRESCRIPTION" + Chr(10) + "LA DATE D'EXECUTION DOIT ETRE < ou = A LA DATE DE FACTURATION")
            DateExecution.Value = DatePrecription.Value
        End If
    End Sub


#End Region
#Region "CONTRACEPTIF URGENCE"
    Private Sub ContraceptifDUrgenceToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContraceptifDUrgenceToolStripMenuItem.Click

        'contaceptif urgence
        CurrentBenéficiaire.clear()
        CurrentBenéficiaire.G101C1 = "R"
        CurrentBenéficiaire.G101C7 = "A"
        CurrentBenéficiaire.G101C8 = Config.Data_ContaceptifUrgence_NIR
        CurrentBenéficiaire.G101C9 = Config.Data_ContaceptifUrgence_cle
        CurrentBenéficiaire.G101C10 = "01"
        CurrentBenéficiaire.G101C11 = Config.Data_ContaceptifUrgence_CaisseGest
        CurrentBenéficiaire.G101C12 = Config.Data_ContaceptifUrgence_CentreGest
        CurrentBenéficiaire.G104C12 = Config.Data_ContaceptifUrgence_datenaissance
        CurrentBenéficiaire.G104C13 = "1"
        CurrentBenéficiaire.G104C14 = "6"

        Select Case MsgBox("Le patient accepte-t-il de communiquer sa date de naissance?", 35)
            Case MsgBoxResult.Yes
                Me.Enabled = False
                Contraceptif_Urg_saisie_date_naissance.Visible = True
            Case MsgBoxResult.Cancel
                Exit Sub
        End Select


        Vente.Rows.Clear()
        Vente.Rows.Add()
        'ventetype_index_defaut = 0
        ventetype_defaut = "PREV"
        'Vente.Item(VenteCIP.Index, 0).Value = XMLelementliste.Item(0).Item("ContraceptifCIP").InnerText
        'Vente.CurrentCell = Vente(VenteCIP.Index, 0)
        'Vente.CurrentCell = Vente(VenteCIP.Index + 1, 0)
        Vente.CurrentCell = Vente(Vente_produits.Index, 0)
        Vente.Item(Vente_produits.Index, 0).Value = Config.Data_ContaceptifUrgence_ContraceptifCIP
        Vente.CurrentCell = Vente(VenteQuantité.Index, 0)
        'Vente.CurrentCell = Vente(Vente_produits.Index + 1, 0)
        Vente.Item(VenteQuantité.Index, 0).Value = "1"
        Vente.CurrentCell = Vente(Vente_produits.Index, 0)
        ventetype_defaut = "assurance"
        'Vente.Item(VenteType.Index, 0).Value = "assurance"
        CheckBoxModeDegradé.Enabled = False
        CheckBoxModeDegradé.Checked = True
        CheckBox_Facturation_AMC.Checked = False
        NatureAssurance_Button.Text = "MALADIE"

        ''_____________________________________________________________________________________________________________________________
        ''appel facturation Vitale (mode SESAM sans Vitale) FSE seule
        'ModeSecur = "1"
        'FacturationVitale()

        ''____________________________________________________________________________________________________
        ''Update Stock
        'For i = 0 To Vente.RowCount - 1
        '    If Vente.Item(VenteCIP.Index, i).Value <> "" Then
        '        UpdateStock(Vente.Item(VenteCIP.Index, i).Value, Val(Vente.Item(VenteQuantité.Index, i).Value) * (-1))
        '    Else
        '        If Vente.Item(VenteEAN13.Index, i).Value <> "" Then
        '            UpdateStock(Vente.Item(VenteEAN13.Index, i).Value, Val(Vente.Item(VenteQuantité.Index, i).Value) * (-1))
        '        End If
        '    End If
        'Next
        ''____________________________________________________________________________________________________
        ''affiche vente
        'Me.Enabled = False
        'VenteForm.Visible = True
    End Sub
#End Region

    Private Sub NatureAssurance_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NatureAssurance_Button.Click
        Dim affichage As Control
        affichage = Vente 'defaut
        If Détail_Bénéficiaire_Panel.Visible = True Then
            affichage = Détail_Bénéficiaire_Panel
        End If

        affichage.Visible = False
        Choix_Nature_Assurance.ShowDialog()
        affichage.Visible = True
    End Sub

    Private Sub NatureAssurance_Button_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles NatureAssurance_Button.TextChanged
        Select Case NatureAssurance_Button.Text
            Case "MALADIE", "PREVENTION"
                NatureAssuranceDateTimePickerLabel.Text = ""
                NatureAssuranceDateTimePicker.Visible = False
                CheckBox_Facturation_AMC.Enabled = True
                RadioButtonDateAccouchement.Visible = False
                RadioButtonDateDébutGrossesse.Visible = False
                CheckBox_Facturation_AMC.Enabled = True
                CheckBox_Facturation_AMC.Checked = True
            Case "MATERNITE"
                RadioButtonDateAccouchement.Visible = True
                RadioButtonDateDébutGrossesse.Visible = True
                RadioButtonDateDébutGrossesse.Checked = True
                NatureAssuranceDateTimePickerLabel.Text = ""
                NatureAssuranceDateTimePicker.Visible = True
                If Vente.RowCount > 0 Then
                    For i = 0 To Vente.RowCount - 1
                        If Vente(VenteType.Index, i).Value = "ALD" Then
                            Vente(VenteType.Index, i).Value = "assurance"
                        End If
                    Next
                End If
                CheckBox_Facturation_AMC.Enabled = True
                CheckBox_Facturation_AMC.Checked = True
                Montant_PEC_SMG_TextBox1.Visible = False
            Case "ACCIDENT DU TRAVAIL"
                NatureAssuranceDateTimePickerLabel.Text = ""
                NatureAssuranceDateTimePicker.Visible = False
                If Vente.RowCount > 0 Then
                    For i = 0 To Vente.RowCount - 1
                        If Vente(VenteType.Index, i).Value = "ALD" Then
                            Vente(VenteType.Index, i).Value = "assurance"
                        End If
                    Next
                End If
                CheckBox_Facturation_AMC.Enabled = True
                CheckBox_Facturation_AMC.Checked = True
                RadioButtonDateAccouchement.Visible = False
                RadioButtonDateDébutGrossesse.Visible = False
                Montant_PEC_SMG_TextBox1.Visible = False
            Case "ACCIDENT DE DROIT COMMUN"
                NatureAssuranceDateTimePickerLabel.Text = "Date d’accident de droit commun"
                NatureAssuranceDateTimePicker.Visible = True
                If Vente.RowCount > 0 Then
                    For i = 0 To Vente.RowCount - 1
                        If Vente(VenteType.Index, i).Value = "ALD" Then
                            Vente(VenteType.Index, i).Value = "assurance"
                        End If
                    Next
                End If
                CheckBox_Facturation_AMC.Enabled = True
                CheckBox_Facturation_AMC.Checked = True
                RadioButtonDateAccouchement.Visible = False
                RadioButtonDateDébutGrossesse.Visible = False
                Montant_PEC_SMG_TextBox1.Visible = False
            Case "SMG"
                NatureAssuranceDateTimePickerLabel.Text = "Montant PEC SMG (en c€nts)"
                NatureAssuranceDateTimePicker.Visible = True
                CheckBox_Facturation_AMC.Enabled = False
                CheckBox_Facturation_AMC.Checked = False
                RadioButtonDateAccouchement.Visible = False
                RadioButtonDateDébutGrossesse.Visible = False
                Montant_PEC_SMG_TextBox1.Visible = True
        End Select
    End Sub

    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
        Me.Dispose()
    End Sub

    Private Sub AMC_Indicateurdetrairement_TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AMC_Indicateurdetrairement_TextBox.TextChanged

    End Sub

    Private Sub Détail_Bénéficiaire_Button_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        If Val(CodeALD("", Date_Droits_AMO())) > 0 Then
            If MsgBox("les soins sont-ils en rapport avec le protocole ALD?", 36) = MsgBoxResult.Yes Then
                'ventetype_index_defaut = 2
                ventetype_defaut = "ALD"
            End If
        End If
    End Sub

    

#Region "PEC"
    Private Sub MontantGlobalPriseEnchargeToolStripTextBox_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MontantGlobalPriseEnchargeToolStripTextBox.TextChanged
        '______________________________________
        If MontantGlobalPriseEnchargeToolStripTextBox.Text = "" Then
            CurrentFactureVitale.PEC.MontantGlobal = Nothing
            CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global = Nothing
            CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global_STS = Nothing
            '_______________________
        ElseIf Not IsNumeric(MontantGlobalPriseEnchargeToolStripTextBox.Text) Then
            MontantGlobalPriseEnchargeToolStripTextBox.Text = ""
            Beep()
            Exit Sub
            '______________________________________
        Else
            ReDim CurrentFactureVitale.PEC.Montants_Actes(-1)
            CurrentFactureVitale.PEC.MontantGlobal = Val(MontantGlobalPriseEnchargeToolStripTextBox.Text)
            CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global = Val(MontantGlobalPriseEnchargeToolStripTextBox.Text)
            CurrentFactureVitale.PEC.Reste_Ventilation_Montant_Global_STS = Val(MontantGlobalPriseEnchargeToolStripTextBox.Text)
        End If
    End Sub
#End Region

    Private Sub AMC_Code_Aiguillage_STS_TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AMC_Code_Aiguillage_STS_TextBox.TextChanged

    End Sub





    Private Sub Montant_PEC_SMG_TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Montant_PEC_SMG_TextBox1.TextChanged
        If Not IsNumeric(Montant_PEC_SMG_TextBox1.Text) Then
            Beep()
            Montant_PEC_SMG_TextBox1.Text = ""
        End If

    End Sub


 

    Private Sub DatePrecription_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DatePrecription.ValueChanged

    End Sub

    Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
        MENU_PRINCIPAL.COMPTOIR_MAIN_ResetForm()

    End Sub

    Private Sub COMPTOIR_MAIN_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
        If e.X > Screen.PrimaryScreen.Bounds.Width - 50 Then
            While Commandes_Panel.Width < 200
                Commandes_Panel.Location = New Point(Screen.PrimaryScreen.Bounds.Width - Commandes_Panel.Width - 1, 0)
                Commandes_Panel.Width = Commandes_Panel.Width + 1
            End While
        End If
    End Sub

    Private Sub Commandes_Panel_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Commandes_Panel.MouseLeave
        If Screen.PrimaryScreen.Bounds.Width < 1800 Then
            If MousePosition.X < Screen.PrimaryScreen.Bounds.Width - 200 Then
                While Commandes_Panel.Width > 0
                    Commandes_Panel.Width = Commandes_Panel.Width - 1
                    Commandes_Panel.Location = New Point(Commandes_Panel.Location.X + 1, 0)
                End While
            End If
        End If
    End Sub


End Class