private void updateLigneFromIboLigne(LigneCommande ligne, IBODocumentAchatLigne3 IBOLigne) { IBOLigne.Refresh(); if (IBOLigne.ArticleGammeEnum2 != null) { ligne.QteCom = IBOLigne.Article.StockCommandeDoubleGamme(IBOLigne.ArticleGammeEnum1, IBOLigne.ArticleGammeEnum2); ligne.QteRes = IBOLigne.Article.StockReserveContremarqueDoubleGamme(IBOLigne.ArticleGammeEnum1, IBOLigne.ArticleGammeEnum2); } else if (IBOLigne.ArticleGammeEnum1 != null) { ligne.QteCom = IBOLigne.Article.StockCommandeMonoGamme(IBOLigne.ArticleGammeEnum1); ligne.QteRes = IBOLigne.Article.StockReserveContremarqueMonoGamme(IBOLigne.ArticleGammeEnum1); } else { ligne.QteCom = IBOLigne.Article.StockCommande(); ligne.QteRes = IBOLigne.Article.StockReserve(); } }
private void addVbcLigneToAbcExistant(IBODocumentVenteLigne3 ligneV, LiaisonCde liaison) { IBODocumentAchat3 docA = GetInstance().FactoryDocumentAchat.ReadPiece(DocumentType.DocumentTypeAchatCommandeConf, liaison.NumPiece); foreach (IBODocumentAchatLigne3 ligneA in docA.FactoryDocumentLigne.List) { int dlNoIn = int.Parse(ligneA.InfoLibre["DLNo"]); if (dlNoIn == liaison.DLNoIn) { // Si la quantité demandée est inférieure à la quantité de la ligne if (liaison.Qte < liaison.DlQteBL) { IBODocumentAchatLigne3 liaisonALigne = (IBODocumentAchatLigne3)docA.FactoryDocumentLigne.Create(); addArticleFromLigneAToLigneB(ligneA, liaisonALigne, liaison.Qte); // Force le prix d'achat de la ligne d'origine (peut être une cde depot) if (liaisonALigne.Fournisseur.CT_Num != ligneA.Article.FournisseurPrincipal.Fournisseur.CT_Num) { liaisonALigne.DL_PrixUnitaire = ligneA.DL_PrixUnitaire; } double conversion = 1; double convDiv = 1; foreach (IBOArticleTarifFournisseur3 tarif in ligneA.Article.FactoryArticleTarifFournisseur.List) { if (tarif.Fournisseur == docA.Fournisseur) { conversion = tarif.AF_Conversion; convDiv = tarif.AF_ConvDiv; } } liaisonALigne.DL_Qte = liaison.Qte; liaisonALigne.EU_Qte = (liaison.Qte / conversion) * convDiv; liaisonALigne.SetDefaultRemise(); liaisonALigne.Collaborateur = ligneV.Collaborateur; liaisonALigne.DO_Ref = liaison.DlNoOut.ToString(); liaisonALigne.DL_Design = ligneV.DL_Design; liaisonALigne.TxtComplementaire = ligneV.TxtComplementaire; liaisonALigne.Write(); liaisonALigne.Refresh(); dlNoIn = int.Parse(liaisonALigne.InfoLibre["DLNo"]); // Si la ligne d'origine avait déjà une contremarque if (liaison.CMQteTotal > 0) { ligneA.DL_Qte = liaison.DlQteBL - liaison.Qte; ligneA.EU_Qte = (ligneA.DL_Qte / conversion) * convDiv; ligneA.SetDefaultRemise(); ligneA.Write(); } else { // Crée une nouvelle ligne avec le delta à partir de la ligne d'origine IBODocumentAchatLigne3 ligneACopy = (IBODocumentAchatLigne3)docA.FactoryDocumentLigne.Create(); double delta = liaison.DlQteBL - liaison.Qte; addArticleFromLigneAToLigneB(ligneA, ligneACopy, delta); if (ligneACopy.Fournisseur.CT_Num != ligneA.Article.FournisseurPrincipal.Fournisseur.CT_Num) { ligneACopy.DL_PrixUnitaire = ligneA.DL_PrixUnitaire; } ligneACopy.DL_Qte = delta; ligneACopy.EU_Qte = (delta / conversion) * convDiv; ligneACopy.SetDefaultRemise(); ligneACopy.Collaborateur = ligneA.Collaborateur; ligneACopy.DL_Design = ligneA.DL_Design; ligneACopy.TxtComplementaire = ligneA.TxtComplementaire; ligneACopy.Write(); ligneACopy.Refresh(); // Supprime la ligne d'origine ligneA.Remove(); } } // Ajout de la CM using (SqlConnection cnx = new SqlConnection(cnxString)) { cnx.Open(); using (SqlCommand cmd = cnx.CreateCommand()) { cmd.CommandText = @"INSERT INTO F_CMLIEN(DL_NoOut, DL_NoIn, CM_Qte) VALUES(@dlNoOut, @dlNoIn, @cmQte)"; cmd.Parameters.AddWithValue("@dlNoOut", ligneV.InfoLibre["DLNo"]); cmd.Parameters.AddWithValue("@dlNoIn", dlNoIn); cmd.Parameters.AddWithValue("@cmQte", liaison.Qte); cmd.ExecuteNonQuery(); } } } } }