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"]; } } } } }
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}"); } } } } } }
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); }