Exemple #1
0
 private void removeLigneFromDoc(IBODocument3 doc, IBOArticle3 article, string gamme1, string gamme2)
 {
     foreach (IBODocumentLigne3 ligne in doc.FactoryDocumentLigne.List)
     {
         if (ligne.Article == null)
         {
             continue;
         }
         if (gamme2 != null &&
             ligne.Article == article &&
             (ligne.ArticleGammeEnum1 != null && ligne.ArticleGammeEnum1.EG_Enumere == gamme1) &&
             (ligne.ArticleGammeEnum2 != null && ligne.ArticleGammeEnum2.EG_Enumere == gamme2))
         {
             ligne.Remove();
             return;
         }
         if (gamme1 != null &&
             ligne.Article == article &&
             (ligne.ArticleGammeEnum1 != null && ligne.ArticleGammeEnum1.EG_Enumere == gamme1))
         {
             ligne.Remove();
             return;
         }
         if (ligne.Article == article)
         {
             ligne.Remove();
             return;
         }
     }
 }
        public void CheckDocLigneForUniqueArticle(IBODocument3 doc, Ligne ligne)
        {
            if (ligne.DlNo == null)
            {
                var newLigne = (IBODocumentLigne3)doc.FactoryDocumentLigne.Create();
                var article  = getUniqueArticle();
                article.Unite = GetInstance().FactoryUnite.ReadIntitule(ligne.Unite.Intitule);
                article.Write();
                newLigne.SetDefaultArticle(article, ligne.Quantite);
                newLigne.WriteDefault();
                ligne.ArRef = newLigne.Article.AR_Ref;

                using (var cnx = new SqlConnection(cnxString))
                {
                    cnx.Open();
                    using (var cmd = cnx.CreateCommand())
                    {
                        cmd.CommandText = "SELECT DL_No FROM F_DOCLIGNE WHERE AR_Ref = @arRef";
                        cmd.Parameters.AddWithValue("@arRef", newLigne.Article.AR_Ref);
                        using (var reader = cmd.ExecuteReader())
                        {
                            reader.Read();
                            ligne.DlNo = (int)reader["DL_No"];
                        }
                    }
                }
            }
        }
Exemple #3
0
 public void OpenDocument(IBODocument3 doc)
 {
     try
     {
         Process.Start(getSagePath(), $"{fichierGescom} -u=\"{user}\" -cmd=\"Document.Show(Type={GetProgExtDocType(doc.DO_Type)},Piece='{doc.DO_Piece}')\"");
     }
     catch (Exception ex)
     {
         Debug.Print(ex.ToString());
     }
 }
        /// <summary>
        /// TODO Transférer dans MBCore
        /// </summary>
        /// <param name="document"></param>
        internal void CheckDocumentsClosed(Document document)
        {
            if (openBaseCial())
            {
                IBODocument3 doc = GetDocument(document.DoPiece);
                try
                {
                    doc.CouldModified();
                    doc.Read();
                }
                catch (Exception)
                {
                    throw new Exception($"Veuillez fermer le document {doc.DO_Piece}");
                }

                foreach (IBODocumentLigne3 ligne in doc.FactoryDocumentLigne.List)
                {
                    if (ligne.Article != null &&
                        (ligne.Article.AR_Ref == "DIVERS" || ligne.Article.Famille.FA_CodeFamille == "UNIQUE") &&
                        ligne.FactoryDocumentLigneLienCM.List.Count > 0)
                    {
                        foreach (IBODocumentLigneLienCM cmLigne in ligne.FactoryDocumentLigneLienCM.List)
                        {
                            try
                            {
                                cmLigne.DocumentLigneIn.Document.CouldModified();
                                cmLigne.DocumentLigneIn.Document.Read();
                            }
                            catch (Exception)
                            {
                                throw new Exception($"Veuillez fermer le document {cmLigne.DocumentLigneIn.Document.DO_Piece}");
                            }
                            try
                            {
                                cmLigne.DocumentLigneOut.Document.CouldModified();
                                cmLigne.DocumentLigneOut.Document.Read();
                            }
                            catch (Exception)
                            {
                                throw new Exception($"Veuillez fermer le document {cmLigne.DocumentLigneOut.Document.DO_Piece}");
                            }
                        }
                    }
                }
            }
        }
Exemple #5
0
        public Article DeclareStock(double noteStock, Article article)
        {
            IBOArticle3  OMArticle = GetInstance().FactoryArticle.ReadReference(article.ArRef);
            double       stockReel;
            double       mouvQt;
            IBODocument3 dayDocIn = null, dayDocOut = null;

            using (SqlConnection cnx = new SqlConnection(cnxString))
            {
                cnx.Open();
                using (SqlCommand cmd = cnx.CreateCommand())
                {
                    cmd.CommandText = @"SELECT DO_Piece, DO_Type FROM F_DOCENTETE 
                        WHERE DO_Date = CAST(CURRENT_TIMESTAMP AS DATE) AND DO_Ref = 'REGUL STOCK' AND DO_Type IN (20,21)";
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                short  doType  = (short)reader["DO_Type"];
                                string doPiece = (string)reader["DO_Piece"];

                                switch (doType)
                                {
                                case 20:
                                    dayDocIn = GetInstance().FactoryDocumentStock.ReadPiece(DocumentType.DocumentTypeStockMouvIn, doPiece);
                                    dayDocIn.CouldModified();
                                    removeLigneFromDoc(dayDocIn, OMArticle, article.Gamme1, article.Gamme2);
                                    break;

                                case 21:
                                    dayDocOut = GetInstance().FactoryDocumentStock.ReadPiece(DocumentType.DocumentTypeStockMouvOut, doPiece);
                                    dayDocOut.CouldModified();
                                    removeLigneFromDoc(dayDocOut, OMArticle, article.Gamme1, article.Gamme2);
                                    break;

                                default:
                                    throw new Exception($"Type {doType} non pris en charge");
                                }
                            }
                        }
                    }
                }

                stockReel = getStockReel(OMArticle, article.Gamme1, article.Gamme2);

                // Mouvement d'entrée
                if (noteStock > stockReel)
                {
                    mouvQt = noteStock - stockReel;
                    if (dayDocIn == null)
                    {
                        IPMDocument procDocIn = GetInstance().CreateProcess_Document(DocumentType.DocumentTypeStockMouvIn);
                        dayDocIn = procDocIn.Document;
                        procDocIn.Document.DO_Ref = "REGUL STOCK";
                        addArticleToLigne((IBODocumentLigne3)dayDocIn.FactoryDocumentLigne.Create(), OMArticle, article.Gamme1, article.Gamme2, mouvQt).WriteDefault();
                        procDocIn.Process();
                    }
                    addArticleToLigne((IBODocumentLigne3)dayDocIn.FactoryDocumentLigne.Create(), OMArticle, article.Gamme1, article.Gamme2, mouvQt).WriteDefault();
                }

                // Mouvement de sortie
                if (noteStock < stockReel)
                {
                    mouvQt = stockReel - noteStock;
                    if (dayDocOut == null)
                    {
                        IPMDocument procDocOut = GetInstance().CreateProcess_Document(DocumentType.DocumentTypeStockMouvOut);
                        dayDocOut = procDocOut.Document;
                        procDocOut.Document.DO_Ref = "REGUL STOCK";
                        addArticleToLigne((IBODocumentLigne3)dayDocOut.FactoryDocumentLigne.Create(), OMArticle, article.Gamme1, article.Gamme2, mouvQt).WriteDefault();
                        procDocOut.Process();
                    }
                    addArticleToLigne((IBODocumentLigne3)dayDocOut.FactoryDocumentLigne.Create(), OMArticle, article.Gamme1, article.Gamme2, mouvQt).WriteDefault();
                }
            }

            article.Stock = getStockReel(OMArticle, article.Gamme1, article.Gamme2);
            return(article);
        }