public void saveLigneVente(IBODocumentVenteLigne3 docLigne, Ligne ligne) { var doc = (IBODocumentVente3)docLigne.Document; if (doc.DO_Reliquat || !AuthorizedTypes.Contains(doc.DO_Type)) { throw new Exception("Le document est un relicat ou le type est interdit"); } docLigne.DL_Design = ligne.Designation; docLigne.EU_Qte = ligne.Quantite; docLigne.DL_Qte = ligne.Quantite; docLigne.TxtComplementaire = ligne.TxtComplementaire; if (ligne.DesMajDocVen == false) { docLigne.DL_PrixUnitaire = ligne.PxUVen ?? 0; if (doc.CategorieTarif.CT_PrixTTC) { docLigne.DL_PUTTC = ligne.PxUVenTTC ?? 0; } docLigne.Remise.FromString((ligne.RemiseVen ?? 0).ToString().Replace('.', ',') + '%'); } docLigne.WriteDefault(); using (SqlConnection cnx = new SqlConnection(cnxString)) { cnx.Open(); using (SqlCommand cmd = cnx.CreateCommand()) { cmd.CommandText = "UPDATE F_DOCLIGNE SET AF_RefFourniss = @refFourn, EU_Enumere = @enum WHERE DL_No = @dlNo"; cmd.Parameters.AddWithValue("@enum", ligne.Unite.Intitule); cmd.Parameters.AddWithValue("@refFourn", ligne.RefFourn ?? string.Empty); cmd.Parameters.AddWithValue("@dlNo", docLigne.InfoLibre["DLNo"]); cmd.ExecuteNonQuery(); } } }
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(); } } } } }