1. #1
    Candidat au Club Avatar de Exulan
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2017
    Messages : 4
    Points : 3
    Points
    3

    Par défaut Conversion csv to xml sur plusieurs niveaux.

    Bonjour,

    J'aimerais convertir un fichier csv de factures en fichier xml,

    Voici la structure de ce fichier csv:

    numeroFactureSaisi;dateFacture;deviseFacture;typeFacture;typeTva;
    numeroMarche;numeroBonCommande;numeroFactureOrigine;modePaiement;lignePosteNumero;
    lignePosteReference;lignePosteDenomination;lignePosteQunatite;lignePosteUnite;lignePosteMontantUnitaireHT;
    lignePosteMontantRemiseHT;lignePosteTauxTva;ligneTvaTaux;ligneTvaMontantBaseHtParTaux;ligneTvaMontantTvaParTaux;
    montantHtTotal;montantTVA;montantTtcTotal;montantRemiseGlobalTTC;montantAPayer;
    commentaire

    Voici un exemple de ce fichier csv:

    49;2625017600****;SERVICE;54 208 370 *** ***;A1_FACTURE_FOURNISSEUR;49500****;03/03/2014;EUR;FACTURE;TVA_SUR_DEBIT;250562117****;BON N°2;0;VIREMENT;2;FRAISGAO;FRAIS D'EXPEDITION;1;Pièce;22,58;0;2;2;22,58;4,43;1529,69;87,32;1617,01;0;1617,01;
    49;2625017600****;SERVICE;54 208 370 *** ***;A1_FACTURE_FOURNISSEUR;49500****;06/04/2017;EUR;FACTURE;TVA_SUR_DEBIT;250562117****;BON N°3;0;VIREMENT;1;TR39N50;ORTHESE SANS ARMATURE BIVALVE;1;Pièce;924,38;0;1;1;1029,74;56,64;1029,74;56,64;1086,38;0;1086,38;
    49;2625017600****;SERVICE;54 208 370 *** ***;A1_FACTURE_FOURNISSEUR;49500****;06/04/2017;EUR;FACTURE;TVA_SUR_DEBIT;250562117****;BON N°4;0;VIREMENT;2;T39P01;MOULAGE TORSE;1;Pièce;105,36;0;1;1;1029,74;56,64;1029,74;56,64;1086,38;0;1086,38;
    49;2625017600****;SERVICE;54 208 370 *** ***;A1_FACTURE_FOURNISSEUR;49500****;12/07/2017;EUR;FACTURE;TVA_SUR_DEBIT;250562117****;BON N°5;0;VIREMENT;2;TR39N50;ORTHESE SANS ARMATURE BIVALVE;1;Pièce;924,38;0;1;1;1029,74;56,64;1029,74;56,64;1086,38;0;1086,38;Commentaires
    49;2625017600****;SERVICE;54 208 370 *** ***;A1_FACTURE_FOURNISSEUR;49500****;12/07/2017;EUR;FACTURE;TVA_SUR_DEBIT;250562117****;BON N°6;0;VIREMENT;3;T39P01;MOULAGE TORSE;1;Pièce;105,36;0;1;1;1029,74;56,64;1029,74;56,64;1086,38;0;1086,38;Commentaires
    49;2625017600****;SERVICE;54 208 370 *** ***;A1_FACTURE_FOURNISSEUR;49500****;12/07/2017;EUR;FACTURE;TVA_SUR_DEBIT;250562117****;BON N°7;0;VIREMENT;1;TR39N50;ORTHESE SANS ARMATURE BIVALVE;1;Pièce;924,38;0;1;1;1029,74;56,64;1029,74;56,64;1086,38;0;1086,38;
    49;2625017600****;SERVICE;54 208 370 *** ***;A1_FACTURE_FOURNISSEUR;49500****;12/07/2017;EUR;FACTURE;TVA_SUR_DEBIT;250562117****;BON N°8;0;VIREMENT;2;T39P01;MOULAGE TORSE;1;Pièce;105,36;0;1;1;1029,74;56,64;1029,74;56,64;1086,38;0;1086,38;

    J'arrive à le convertir de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    //Lecture dans un tableau de string
                string[] source = File.ReadAllLines("Exemple Fichier.csv");
                XElement fac = new XElement("Root",
                    from str in source
                    let fields = str.Split(';')
                    select new XElement("Facture",
                        new XElement("Site", fields[0]),
                        new XElement("codeDestinataire", fields[1]),
                        new XElement("codeServiceExecutant", fields[2]),
                        new XElement("idFournisseur", fields[3]),
                        new XElement("codeCadreFacturation", fields[4]),
                        new XElement("numeroFactureSaisi", fields[5]),
                        new XElement("dateFacture", fields[6]),
                        new XElement("deviseFacture", fields[7]),
                        new XElement("typeFacture", fields[8]),
                        new XElement("typeTva", fields[9]),
                        new XElement("numeroMarche", fields[10]),
                        new XElement("numeroBonCommande", fields[11]),
                        new XElement("numeroFactureOrigine", fields[12]),
                        new XElement("modePaiement", fields[13]),
                        new XElement("lignePoste",
                            new XElement("lignePosteNumero", fields[14]),
                            new XElement("lignePosteReference", fields[15]),
                            new XElement("lignePosteDenomination", fields[16]),
                            new XElement("lignePosteQunatite", fields[17]),
                            new XElement("lignePosteUnite", fields[18]),
                            new XElement("lignePosteMontantUnitaireHT", fields[19]),
                            new XElement("lignePosteMontantRemiseHT", fields[20]),
                            new XElement("lignePosteTauxTva", fields[21]),
                            new XElement("ligneTvaTaux", fields[22]),
                            new XElement("ligneTvaMontantBaseHtParTaux", fields[23]),
                            new XElement("ligneTvaMontantTvaParTaux", fields[24])
                            ),
                        new XElement("montantHtTotal", fields[25]),
                        new XElement("montantTVA", fields[26]),
                        new XElement("montantTtcTotal", fields[27]),
                        new XElement("montantRemiseGlobalTTC", fields[28]),
                        new XElement("montantAPayer", fields[29]),
                        new XElement("commentaire", fields[30])
                    )
                );
    Puis j'arrive à lire des informations ciblées par ce moyen:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //je récupère la conversion xml sous forme de texte car j'utilise par la suite WCF qui ne serialize pas les XDocument, mais le problème n'est pas là
                var fichier = fac.ToString();
     
                using (XmlReader reader = XmlReader.Create(new StringReader(fichier)))
                {
                    while (reader.Read())
                    {
                        //un exemple d' "information ciblée"
                        reader.Name.Equals("numeroFactureSaisi");                    
                    }
                }
    Mon problème est le suivant, le fichier csv est fait d'une telle façon qu'à chaque nouvelle ligne de commande appartenant à une même facture, cette nouvelle ligne de commande se retrouve dans la prochaine facture/ligne(du fichier csv), au "niveau" suivant dans le fichier xml.
    J'aimerais reconstruire mon xml de façon à ce que chaque facture ai toutes ses lignes de commandes à la suite.

    Voici un extrait du fichier xml converti d'une facture avec deux lignes de commandes afin d’illustrer mes propos:
    (Je précise que les deux factures ci-dessous n'en sont en fait qu'une seule.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <Root>
      <Facture>
        <Site>49</Site>
        <codeDestinataire>2625017600****</codeDestinataire>
        <codeServiceExecutant>SERVICE</codeServiceExecutant>
        <idFournisseur>54 208 370 *** ***</idFournisseur>
        <codeCadreFacturation>A1_FACTURE_FOURNISSEUR</codeCadreFacturation>
        <numeroFactureSaisi>49500****</numeroFactureSaisi>
        <dateFacture>03/03/2014</dateFacture>
        <deviseFacture>EUR</deviseFacture>
        <typeFacture>FACTURE</typeFacture>
        <typeTva>TVA_SUR_DEBIT</typeTva>
        <numeroMarche>250562117****</numeroMarche>
        <numeroBonCommande>BON N&#65533;1</numeroBonCommande>
        <numeroFactureOrigine>0</numeroFactureOrigine>
        <modePaiement>VIREMENT</modePaiement>
        <lignePoste>
          <lignePosteNumero>1</lignePosteNumero>
          <lignePosteReference>BABICOC</lignePosteReference>
          <lignePosteDenomination>MATELAS POSITIONNEMENT BABICOC</lignePosteDenomination>
          <lignePosteQunatite>1</lignePosteQunatite>
          <lignePosteUnite>Pi&#65533;ce</lignePosteUnite>
          <lignePosteMontantUnitaireHT>1507,11</lignePosteMontantUnitaireHT>
          <lignePosteMontantRemiseHT>0</lignePosteMontantRemiseHT>
          <lignePosteTauxTva>1</lignePosteTauxTva>
          <ligneTvaTaux>1</ligneTvaTaux>
          <ligneTvaMontantBaseHtParTaux>1507,11</ligneTvaMontantBaseHtParTaux>
          <ligneTvaMontantTvaParTaux>82,89</ligneTvaMontantTvaParTaux>
        </lignePoste>
        <montantHtTotal>1529,69</montantHtTotal>
        <montantTVA>87,32</montantTVA>
        <montantTtcTotal>1617,01</montantTtcTotal>
        <montantRemiseGlobalTTC>0</montantRemiseGlobalTTC>
        <montantAPayer>1617,01</montantAPayer>
        <commentaire></commentaire>
      </Facture>
      <Facture>
        <Site>49</Site>
        <codeDestinataire>2625017600****</codeDestinataire>
        <codeServiceExecutant>SERVICE</codeServiceExecutant>
        <idFournisseur>54 208 370 *** ***</idFournisseur>
        <codeCadreFacturation>A1_FACTURE_FOURNISSEUR</codeCadreFacturation>
        <numeroFactureSaisi>49500****</numeroFactureSaisi>
        <dateFacture>03/03/2014</dateFacture>
        <deviseFacture>EUR</deviseFacture>
        <typeFacture>FACTURE</typeFacture>
        <typeTva>TVA_SUR_DEBIT</typeTva>
        <numeroMarche>250562117****</numeroMarche>
        <numeroBonCommande>BON N&#65533;2</numeroBonCommande>
        <numeroFactureOrigine>0</numeroFactureOrigine>
        <modePaiement>VIREMENT</modePaiement>
        <lignePoste>
          <lignePosteNumero>2</lignePosteNumero>
          <lignePosteReference>FRAISGAO</lignePosteReference>
          <lignePosteDenomination>FRAIS D'EXPEDITION</lignePosteDenomination>
          <lignePosteQunatite>1</lignePosteQunatite>
          <lignePosteUnite>Pi&#65533;ce</lignePosteUnite>
          <lignePosteMontantUnitaireHT>22,58</lignePosteMontantUnitaireHT>
          <lignePosteMontantRemiseHT>0</lignePosteMontantRemiseHT>
          <lignePosteTauxTva>2</lignePosteTauxTva>
          <ligneTvaTaux>2</ligneTvaTaux>
          <ligneTvaMontantBaseHtParTaux>22,58</ligneTvaMontantBaseHtParTaux>
          <ligneTvaMontantTvaParTaux>4,43</ligneTvaMontantTvaParTaux>
        </lignePoste>
        <montantHtTotal>1529,69</montantHtTotal>
        <montantTVA>87,32</montantTVA>
        <montantTtcTotal>1617,01</montantTtcTotal>
        <montantRemiseGlobalTTC>0</montantRemiseGlobalTTC>
        <montantAPayer>1617,01</montantAPayer>
        <commentaire></commentaire>
      </Facture>
    Dites moi si vous ne m'avez pas compris j'essaierai d'être plus précis.

    Merci d'avance si réponse il y a.

  2. #2
    Membre expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    octobre 2008
    Messages
    1 558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 558
    Points : 3 206
    Points
    3 206
    Billets dans le blog
    6

    Par défaut

    bonsoir,

    Personnellement j opterai pour la serialisation.

    ++

  3. #3
    Candidat au Club Avatar de Exulan
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2017
    Messages : 4
    Points : 3
    Points
    3

    Par défaut

    Merci de votre réponse.
    Je me suis renseigné sur la classe XmlSerializer mais je n'ai pas trouvé comment faire pour résoudre mon problème.

  4. #4
    Membre expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    octobre 2008
    Messages
    1 558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 558
    Points : 3 206
    Points
    3 206
    Billets dans le blog
    6

    Par défaut

    Premièrement :

    Tu créés une classe serializable comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
        <Serializable>
        Public Class Root
     
    #Region " Fields "
            <XmlIgnore()>
            Private m_Facture As List(Of FactureInfos)
    #End Region
     
    #Region " Properties "
            Public Property Facture() As List(Of FactureInfos)
                Get
                    Return m_Facture
                End Get
                Set(value As List(Of FactureInfos))
                    m_Facture = value
                End Set
            End Property
    #End Region
     
    #Region " Constructor "
            Sub New()
                m_Facture = New List(Of FactureInfos)
            End Sub
    #End Region
     
    #Region " Methods "
            ''' <summary>
            ''' Charge l'état courant du fichier XML.
            ''' </summary>
            ''' <returns>Valeur de type Root</returns>
            Public Shared Function LoadFile(FilePath As String) As Root
                Dim deserializer As New XmlSerializer(GetType(Root))
                Dim read As New StreamReader(FilePath)
                Dim p As Root = DirectCast(deserializer.Deserialize(read), Root)
                read.Close()
                Return p
            End Function
     
    #End Region
     
        End Class
    Une autre classe serializable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
        <Serializable>
        Public Class FactureInfos
     
    #Region " Properties "
            Public Property Site As String
            Public Property codeDestinataire As String
            Public Property codeServiceExecutant As String
            Public Property idFournisseur As String
            Public Property codeCadreFacturation As String
            Public Property numeroFactureSaisi As String
         ' Et bien d'autres propriétés avec les types que tu veux.......etc.........
    #End Region
     
    #Region " Constructor "
            Sub New()
            End Sub
    #End Region
     
        End Class
    C'est déjà une bonne base de travail donc essayes de te creuser un peu la tête et de comprendre les ressources qui explique la Serialization !!!!

    A+

  5. #5
    Candidat au Club Avatar de Exulan
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2017
    Messages : 4
    Points : 3
    Points
    3

    Par défaut

    Je vous remercie de votre implication, j'ai commencé à travailler avec la base que vous m'avez donnée.
    J'avais aussi pensé à modifier directement le fichier csv avant la conversion, qu'en pensez-vous?


    Et bon week end.

  6. #6
    Candidat au Club Avatar de Exulan
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2017
    Messages : 4
    Points : 3
    Points
    3

    Par défaut SOLUTION

    Je poste ici ma solution pour ceux que ça pourrait intéresser.

    Dans main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    List<Facture> listfac = new List<Facture>();
                List<double> listnumfac = new List<double>();
     
                Facture fac = new Facture();
                Ligne lig = new Ligne();
     
     
                var lines = File.ReadAllLines("Exemple Fichier.csv");            
                foreach (string item in lines)
                {
                    var values = item.Split(';');
                    if (!listnumfac.Contains(double.Parse(values[5])))
                    {
                        fac = new Facture();
                        fac.lignes = new List<Ligne>();
                        lig = new Ligne();
     
                        fac.site = double.Parse(values[0]);
                        fac.codeDestinataire = double.Parse(values[1]);
                        fac.codeServiceExecutant = values[2];
                        fac.idFournisseur = double.Parse(values[3]);
                        fac.codeCadreFacturation = values[4];
                        fac.numeroFactureSaisi = double.Parse(values[5]);
                        fac.dateFacture = values[6];
                        fac.deviseFacture = values[7];
                        fac.typeFacture = values[8];
                        fac.typeTva = values[9];
                        fac.numeroMarche = double.Parse(values[10]);
                        fac.numeroBonCommande = values[11];
                        fac.numeroFactureOrigine = double.Parse(values[12]);
                        fac.modePaiement = values[13];
                        fac.montantHtTotal = double.Parse(values[25]);
                        fac.montantTVA = double.Parse(values[26]);
                        fac.montantTtcTotal = double.Parse(values[27]);
                        fac.montantRemiseGlobalTTC = double.Parse(values[28]);
                        fac.montantAPayer = double.Parse(values[29]);
                        fac.commentaire = values[30];
     
                        lig.lignePosteNumero = double.Parse(values[14]);
                        lig.lignePosteReference = values[15];
                        lig.lignePosteDenomination = values[16];
                        lig.lignePosteQunatite = double.Parse(values[17]);
                        lig.lignePosteUnite = values[18];
                        lig.lignePosteMontantUnitaireHT = double.Parse(values[19]);
                        lig.lignePosteMontantRemiseHT = double.Parse(values[20]);
                        lig.lignePosteTauxTva = double.Parse(values[21]);
                        lig.ligneTvaTaux = double.Parse(values[22]);
                        lig.ligneTvaMontantBaseHtParTaux = double.Parse(values[23]);
                        lig.ligneTvaMontantTvaParTaux = double.Parse(values[24]);
     
                        fac.lignes.Add(lig);
                        listfac.Add(fac);
                        listnumfac.Add(double.Parse(values[5]));
                    }
     
                    else
                    {
                        lig = new Ligne();
                        lig.lignePosteNumero = double.Parse(values[14]);
                        lig.lignePosteReference = values[15];
                        lig.lignePosteDenomination = values[16];
                        lig.lignePosteQunatite = double.Parse(values[17]);
                        lig.lignePosteUnite = values[18];
                        lig.lignePosteMontantUnitaireHT = double.Parse(values[19]);
                        lig.lignePosteMontantRemiseHT = double.Parse(values[20]);
                        lig.lignePosteTauxTva = double.Parse(values[21]);
                        lig.ligneTvaTaux = double.Parse(values[22]);
                        lig.ligneTvaMontantBaseHtParTaux = double.Parse(values[23]);
                        lig.ligneTvaMontantTvaParTaux = double.Parse(values[24]);
                        fac.lignes.Add(lig);
                    }
    XmlSerializer xs = new XmlSerializer(typeof(List<Facture>));
                using (StreamWriter wr = new StreamWriter("TestSerialization.xml"))
                {
                    xs.Serialize(wr, listfac);
                }
                }
    Avec une classe ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    [Serializable()]
        public class Ligne
        {
            public double lignePosteNumero { get; set; }
            public string lignePosteReference { get; set; }
            public string lignePosteDenomination { get; set; }
            public double lignePosteQunatite { get; set; }
            public string lignePosteUnite { get; set; }
            public double lignePosteMontantUnitaireHT { get; set; }
            public double lignePosteMontantRemiseHT { get; set; }
            public double lignePosteTauxTva { get; set; }
            public double ligneTvaTaux { get; set; }
            public double ligneTvaMontantBaseHtParTaux { get; set; }
            public double ligneTvaMontantTvaParTaux { get; set; }
     
     
            public Ligne()
            {
                double lignePosteNumero;
                string lignePosteReference;
                string lignePosteDenomination;
                double lignePosteQunatite;
                string lignePosteUnite;
                double lignePosteMontantUnitaireHT;
                double lignePosteMontantRemiseHT;
                double lignePosteTauxTva;
                double ligneTvaTaux;
                double ligneTvaMontantBaseHtParTaux;
                double ligneTvaMontantTvaParTaux;
            }
        }
    Et une classe facture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    [Serializable()]
        public class Facture
        {
            public double site { get; set; }
            public double codeDestinataire { get; set; }
            public string codeServiceExecutant { get; set; }
            public double idFournisseur { get; set; }
            public string codeCadreFacturation { get; set; }
            public double numeroFactureSaisi { get; set; }
            public string dateFacture { get; set; }
            public string deviseFacture { get; set; }
            public string typeFacture { get; set; }
            public string typeTva { get; set; }
            public double numeroMarche { get; set; }
            public string numeroBonCommande { get; set; }
            public double numeroFactureOrigine { get; set; }
            public string modePaiement { get; set; }
            public double montantHtTotal { get; set; }
            public double montantTVA { get; set; }
            public double montantTtcTotal { get; set; }
            public double montantRemiseGlobalTTC { get; set; }
            public double montantAPayer { get; set; }
            public string commentaire { get; set; }
            public List<Ligne> lignes { get; set; }
     
            public Facture()
            {
                double site;
                double codeDestinataire;
                string codeServiceExecutant;
                double idFournisseur;
                string codeCadreFacturation;
                double numeroFactureSaisi;
                string dateFacture;
                string deviseFacture;
                string typeFacture;
                string typeTva;
                double numeroMarche;
                string numeroBonCommande;
                double numeroFactureOrigine;
                string modePaiement;
                double montantHtTotal;
                double montantTVA;
                double montantTtcTotal;
                double montantRemiseGlobalTTC;
                double montantAPayer;
                string commentaire;
                List<Ligne> lignes;
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. conversion .csv to .xml
    Par guillaumeC65 dans le forum Langage
    Réponses: 4
    Dernier message: 28/06/2012, 11h50
  2. Réponses: 2
    Dernier message: 27/05/2012, 11h50
  3. Parser flux XML sur plusieurs niveaux
    Par Freedolphin dans le forum Syntaxe
    Réponses: 2
    Dernier message: 30/01/2012, 19h42
  4. Réponses: 5
    Dernier message: 04/07/2011, 21h55
  5. Réponses: 3
    Dernier message: 20/08/2008, 11h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo