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;
         }
     }
 }
Exemple #2
0
 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());
 }
Exemple #3
0
 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.");
            }
        }
Exemple #5
0
        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);
                    }
                }
            }
        }
Exemple #6
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);
        }
        /// <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());
            }
        }