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; } } }
private double getStockReel(IBOArticle3 article, string gamme1, string gamme2) { if (gamme2 != null) { return(article.StockReelDoubleGamme( article.FactoryArticleGammeEnum1.ReadEnumere(gamme1), article.FactoryArticleGammeEnum2.ReadEnumere(gamme2))); } if (gamme1 != null) { return(article.StockReelMonoGamme(article.FactoryArticleGammeEnum1.ReadEnumere(gamme1))); } return(article.StockReel()); }
private IBODocumentLigne3 addArticleToLigne(IBODocumentLigne3 ligne, IBOArticle3 article, string gamme1, string gamme2, double qt) { if (gamme2 != null) { ligne.SetDefaultArticleDoubleGamme( article.FactoryArticleGammeEnum1.ReadEnumere(gamme1), article.FactoryArticleGammeEnum2.ReadEnumere(gamme2), qt ); return(ligne); } if (gamme1 != null) { ligne.SetDefaultArticleMonoGamme( article.FactoryArticleGammeEnum1.ReadEnumere(gamme1), qt ); return(ligne); } ligne.SetDefaultArticle(article, qt); return(ligne); }
internal void SaveLigne(LigneCommande ligne) { try { if (!openBaseCial()) { throw new Exception("Connexion base impossible, aucun enregistrement ne sera fait."); } var found = false; foreach (IBODocumentAchatLigne3 docLigne in _OMDocument.FactoryDocumentLigne.List) { if (docLigne.Article == null) { continue; } // La ligne existe déjà dans le doc if (docLigne.Article.AR_Ref == ligne.ArRef) { if (docLigne.ArticleGammeEnum1 != null && docLigne.ArticleGammeEnum1.EG_Enumere != ligne.Gamme1) { continue; } if (docLigne.ArticleGammeEnum2 != null && docLigne.ArticleGammeEnum2.EG_Enumere == ligne.Gamme2) { continue; } found = true; if (ligne.Qte == null || ligne.Qte == 0) { docLigne.Remove(); break; } docLigne.DL_Qte = (double)ligne.Qte; docLigne.EU_Qte = (double)ligne.Qte; // Set defaut remise car visiblement ça ne se fait pas via write default docLigne.SetDefaultRemise(); docLigne.WriteDefault(); updateLigneFromIboLigne(ligne, docLigne); break; } } if (ligne.Qte == null || ligne.Qte == 0) { return; } // Il faut créer la ligne if (!found) { var nl = (IBODocumentAchatLigne3)_OMDocument.FactoryDocumentLigne.Create(); IBOArticle3 a = GetInstance().FactoryArticle.ReadReference(ligne.ArRef); if (ligne.Gamme2 != null) { // Article double gamme nl.SetDefaultArticleDoubleGamme( a.FactoryArticleGammeEnum1.ReadEnumere(ligne.Gamme1), a.FactoryArticleGammeEnum2.ReadEnumere(ligne.Gamme2), (double)ligne.Qte); } else if (ligne.Gamme1 != null) { // Article mono gamme nl.SetDefaultArticleMonoGamme( a.FactoryArticleGammeEnum1.ReadEnumere(ligne.Gamme1), (double)ligne.Qte); } else { // Article normal nl.SetDefaultArticle( GetInstance().FactoryArticle.ReadReference(ligne.ArRef), (double)ligne.Qte); } // Set defaut remise car visiblement ça ne se fait pas via write default nl.SetDefaultRemise(); nl.WriteDefault(); updateLigneFromIboLigne(ligne, nl); } } catch (Exception e) { System.Windows.MessageBox.Show($"{e.Message} Veuillez relancer le programme."); } }
internal IBOArticle3 SetDefaultEmpl(string str, IBODepotEmplacement empl) { if (!openBaseCial()) { throw new Exception("Impossible de se connecter à la base"); } using (SqlConnection cnx = new SqlConnection(cnxString)) { cnx.Open(); using (SqlCommand cmd = cnx.CreateCommand()) { cmd.CommandText = @"SELECT DISTINCT A.AR_Ref, AE.AE_Ref, CO.CO_Ref, AG1.EG_Enumere AS Gamme1, AG2.EG_Enumere AS Gamme2 FROM F_ARTICLE A LEFT JOIN F_ARTGAMME AG1 ON AG1.AR_Ref = A.AR_Ref AND AG1.AG_Type = 0 LEFT JOIN F_ARTGAMME AG2 ON AG2.AR_Ref = A.AR_Ref AND AG2.AG_Type = 1 LEFT JOIN F_ARTENUMREF AE ON AE.AG_No1 = AG1.AG_No AND AE.AG_No2 = ISNULL(AG2.AG_No, 0) JOIN F_ARTFOURNISS AF ON AF.AR_Ref = A.AR_Ref LEFT JOIN F_TARIFGAM TG ON TG.AG_No1 = AG1.AG_No AND TG.AG_No2 = ISNULL(AG2.AG_No, 0) AND TG.TG_RefCF = AF.CT_Num LEFT JOIN F_CONDITION CO ON CO.AR_Ref = A.AR_Ref WHERE A.AR_Ref = @str OR AE.AE_Ref = @str OR CO.CO_Ref = @str OR A.AR_CodeBarre = @str OR AF.AF_CodeBarre = @str OR AE.AE_CodeBarre = @str OR TG.TG_CodeBarre = @str OR CO.CO_CodeBarre = @str"; cmd.Parameters.AddWithValue("@str", str); using (SqlDataReader reader = cmd.ExecuteReader()) { if (!reader.HasRows) { throw new Exception("Article non trouvé"); } reader.Read(); IBOArticle3 article = GetInstance().FactoryArticle.ReadReference(reader["AR_Ref"].ToString()); if (article.ArticleDepotPrincipal == null) { IBOArticleDepot3 ad = (IBOArticleDepot3)article.FactoryArticleDepot.Create(); ad.Depot = empl.Depot; ad.EmplacementPrincipal = empl; ad.WriteDefault(); article.Refresh(); } else { article.ArticleDepotPrincipal.EmplacementPrincipal = empl; article.ArticleDepotPrincipal.Write(); article.Refresh(); } return(article); } } } }
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); }
/// <summary> /// Cde dépot: Met à jour les prix, statut ... /// </summary> /// <param name="docAOrigin"></param> /// <param name="magPiece"></param> private void editCommandeDepot(IBODocumentAchat3 docAOrigin, string magPiece) { try { // Commande Dépôt docAOrigin.DO_Ref = magPiece; docAOrigin.DO_Statut = DocumentStatutType.DocumentStatutTypeConfirme; //docAOrigin.InfoLibre["Date Statut"] = DateTime.Now; docAOrigin.Write(); using (SqlConnection cnx = new SqlConnection(cnxString)) { cnx.Open(); using (SqlCommand cmd = cnx.CreateCommand()) { cmd.CommandText = "UPDATE F_DOCENTETE SET [Date Statut] = GETDATE() WHERE DO_Piece = @doPiece"; cmd.Parameters.AddWithValue("@doPiece", docAOrigin.DO_Piece); cmd.ExecuteNonQuery(); } } docAOrigin.Refresh(); // Simule une commande client Tarif 6 pour recup les prix remisés // et les appliquer au doc d'achat IPMDocument procDocV = GetInstance().CreateProcess_Document(DocumentType.DocumentTypeVenteCommande); IBODocumentVente3 docVEntete = (IBODocumentVente3)procDocV.Document; docVEntete.SetDefaultClient(GetInstance().CptaApplication.FactoryClient.ReadNumero("DEVEL")); docVEntete.CategorieTarif = GetInstance().FactoryCategorieTarif.ReadIntitule("Tarif Article N° 6"); IBODocumentVenteLigne3 docVLigne; foreach (IBODocumentAchatLigne3 ligneOrigin in docAOrigin.FactoryDocumentLigne.List) { if (ligneOrigin.Article != null) { Debug.Print(ligneOrigin.Article.AR_Ref); docVLigne = (IBODocumentVenteLigne3)docVEntete.FactoryDocumentLigne.Create(); IBOArticle3 a = ligneOrigin.Article; double qte = ligneOrigin.DL_Qte; docVLigne.SetDefaultArticle(a, qte); docVLigne.SetDefaultRemise(); ligneOrigin.DL_PrixUnitaire = docVLigne.DL_PrixUnitaire; ligneOrigin.Remise.FromString(docVLigne.Remise.ToString()); ligneOrigin.DO_Ref = magPiece; ligneOrigin.Write(); if (ligneOrigin.Article.AR_Ref == "DIVERS" || ligneOrigin.Article.Famille.FA_CodeFamille == "UNIQUE") { new DiversRepository().saveLigneAchat(ligneOrigin); } } } // Déverrouille le doc docAOrigin.Read(); } catch (Exception e) { throw new Exception(e.ToString()); } }