Exemplo n.º 1
0
        private void enregistrer_Click(object sender, EventArgs e)
        {
            Double quantite;

            if (materiaux.Text == "" || qtehs.Text == "")
            {
                MessageBox.Show("Tous les champs sont obligatoire", "Champs incorrects", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            try
            {
                quantite = double.Parse(qtehs.Text.Replace(",", "."));
                if (quantite <= 0)
                {
                    MessageBox.Show("Quantite saisie non valide,une quantite positive est attendue", "Quantite incorrect", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    ActiveControl = qtehs;
                    return;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Quantite saisie non valide", "Quantite incorrect", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            ActiveControl = enregistrer;

            int refmat = int.Parse(listMateriaux.Rows[materiaux.SelectedIndex][0].ToString());

            String[] info = getQuantiteMateriel(refmat);
            Double   stockreel, stockhs, nouveaustockreel;
            String   msg, piecehs, piece, date, motif;

            if (info == null)
            {
                msg = @"
                    Cet Materiau n'a jamais fait l'ojet d'un mouvement d'entree en stock.
                    Il est fortement conseille de commencer par un mouvement d'entree pour ce materiau.
                ";
                MessageBox.Show(msg, "Gestion de stock", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            else
            {
                traitement.setType(2);//mouvement d'entree

                stockreel = Double.Parse(info[0]);
                stockhs   = double.Parse(info[1]);
                piecehs   = lite.getLastLigneMvtPieceHS(2);
                piecehs   = traitement.buildPieceHS(piecehs);

                traitement.setType(1);//mouvement de sortie
                piece = lite.getLastLigneMvtPiece(1);
                piece = traitement.buildPiece(piece);
                date  = DateTime.Now.Date.ToString("yyyy-MM-dd");

                if (quantite > stockhs)
                {
                    msg = @"
                        L'etat du stock ne permet pas cette action.
                        la quantite entree est superieure au stock HS du materiau
                    ";
                    MessageBox.Show(msg, "Quantite incorrecte", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                else
                {                                                  // determiner la nouvelle valeur du stock et generer deux documents: entree et sortie
                    nouveaustockreel = stockreel + quantite;
                    double min = Math.Round(nouveaustockreel / 3); //stock minimum

                    //mise a jour du stock
                    traitement.updateStock(refmat, nouveaustockreel, stockhs - quantite, min);

                    //sortie en stock
                    motif = string.Format("inv.au {0} sortie quantite hors service", date);
                    traitement.ligneMouvInsertion(quantite, 2, date, piecehs, motif.ToUpper(), refmat, de_no);

                    //entree en stock HS
                    motif = string.Format("inv.au {0} entree quantite stock provenant de la sortie HS", date);
                    traitement.ligneMouvInsertion(quantite, 1, date, piece, motif.ToUpper(), refmat, de_no);

                    //reinitialiser l'interface
                    materiaux.SelectedIndex = 0;
                    qtehs.Text = "";
                }
            }
        }