Bonjour à tous,

dans le cadre de mon boulot, un collègue avez créé un bout de code qui nous permettez à partir d'un code-barre de nos produits de retrouver différentes informations comme:
- l'identifiant produit
- le type de flacon
- le numéro de lot
- le numéro de flacon
- la date de péremption

par exemple de CB suivant "!328>P|%72046191" donne:

- l'identifiant produit: E21
- le type de flacon: 4
- le numéro de lot: 72046191
- le numéro de flacon: 707
- la date de péremption: 01/02/2018

Jusque là pas de problème.

Par contre ce collègue n'est plus parmi nous et nous souhaiterions modifier son code pour faire l'inverse. A savoir, à partir des différentes infos (ID produit, type de flacon ect..) recréer le CB.

C'est là ou cela se complique car mes connaissance en C# ne sont pas d'un niveau avancé et je vois pas trop comment faire (surtout la conversion des formules "mathématique").

Ci dessous la fonction que je souhaite "inverser":

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
 
public void convertReagentOrCtrCalBarcode(string sBarCode)
        {         
            int length = sBarCode.Length;
            int num = 0;
            double num2 = 0.0;
            DateTime time = default(DateTime);
            string text = "";
            string text2 = "";
 
            text2 = string.Concat(new string[]
	{
		text2,
		", Barcode: ",
		sBarCode,
		", len: ",
		length.ToString()
	});
            int num3 = length;
 
 
                        rsLotId = sBarCode.Substring(8, 8);
                        for (int i = 0; i < length - 8; i++)
                        {
                            int num4 = "!#$%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`|}~".IndexOf(sBarCode[i]);
 
                            num2 += (double)num4 * Math.Pow((double)"!#$%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`|}~".Length, (double)(length - 8 - i - 1));
                        }
                        text = num2.ToString().PadLeft(14, '0');
                        text2 = text2 + ", barcode: " + text;
                        text2 = text2 + ", lot: " + rsLotId;
                        string text3 = "01";
                        string text4 = text.Substring(num, 2);
 
                        num += 2;
                        string text5 = text.Substring(num, 2);
                        text5 = "20" + text5;
                        num += 2;
 
                        time = new DateTime(int.Parse(text5), int.Parse(text4), int.Parse(text3));
                        time = time.AddMonths(1);
                        rlExpiryDate = Convert.ToInt32(ConvertToUnixTimestamp(time));
 
                        string text6 = text.Substring(num, 5);
                        num += 5;
                        string text7 = int.Parse(text6).ToString("X4");
 
                        rsManufNbr = text7.Substring(0, 3);
                        rcVialType = text7[3];
                        riVesselNumber = int.Parse(text.Substring(num, 5));
 
 
                        label1.Text = rsManufNbr.ToString();
                        label2.Text = rsLotId.ToString();
                        label3.Text = riVesselNumber.ToString();
                        label4.Text = rcVialType.ToString();
                        label5.Text = time.ToString();
 
 
 
        }
Merci pour votre aide.