Problème création document de transfert

Cette section est consacrée aux développements d'applications interfacées avec les logiciels Sage.

Modérateurs: Super-Apogea, Super Modérateur

Problème création document de transfert

de CoralieLu » Jeu 1 Fév 2018 18:04

Bonjour,

J'utilise les objet métier pour créer des documents de transfert de stock entre dépôt.

J'ai un rare cas où lorsque je crée un document de transfert pour une liste d'articles dans la base de données SAGE j'obtiens deux documents où le premier c'est arrêté en plein milieu d'un transfert, j'ai donc le mouvement de stock 3 mais pas le mouvement de stock 1 pour l'article, et le 2e recommence tout depuis le début mais j'ai des lignes qui disparaissent (cbMarq manquant et inexistant dans la table F_DOCLIGNE).

Je me retrouve donc avec le double de transfert pour certain produit et un produit bancale car je n'ai eu qu'un type de mouvement.

Est ce que l'un d'entre vous à déjà eu ce cas ? Ou quelque chose de similaire ?

Merci

Voici ce que j'obtiens dans la base de données SAGE

cbMarq do_piece ar_ref AG_No1 DL_qte DL_MvtStock
2573964 VD002244 DOLO00036 347411 1.000000 3
2573965 VD002244 DOLO00036 347411 1.000000 1
2573966 VD002244 DOLO00036 347412 1.000000 3
2573967 VD002244 DOLO00036 347412 1.000000 1
2573968 VD002244 HEAD00186 327746 1.000000 3
2573969 VD002244 HEAD00186 327746 1.000000 1
2573970 VD002244 SCOT00582 305324 1.000000 3
2573971 VD002244 SCOT00582 305324 1.000000 1
2573972 VD002244 SCOT00582 305326 1.000000 3
2573973 VD002244 SCOT00582 305326 1.000000 1
2573974 VD002244 SNOW00182 260443 3.000000 3
2573975 VD002244 SNOW00182 260443 3.000000 1
2573976 VD002244 SNOW00182 260445 4.000000 3
2573977 VD002244 SNOW00182 260445 4.000000 1
2573978 VD002244 SNOW00182 260444 3.000000 3
2573979 VD002244 SNOW00182 260444 3.000000 1
2573980 VD002244 SALO03293 320983 1.000000 3
2573981 VD002244 SALO03293 320983 1.000000 1
2573982 VD002244 SALO03293 320984 1.000000 3
2573983 VD002244 SALO03293 320984 1.000000 1
2573984 VD002244 SALO03293 320985 1.000000 3
2573985 VD002244 SALO03293 320985 1.000000 1
2573986 VD002244 SALO03293 320986 1.000000 3
2573987 VD002244 SALO03293 320986 1.000000 1

2573988 VD002244 SALO03293 320987 1.000000 3
2573989 VD002245 DOLO00036 347411 1.000000 3
2573990 VD002245 DOLO00036 347411 1.000000 1
2573991 VD002245 DOLO00036 347412 1.000000 3
2573992 VD002245 DOLO00036 347412 1.000000 1
?
?
2573995 VD002245 SCOT00582 305324 1.000000 3
2573996 VD002245 SCOT00582 305324 1.000000 1
?
?
2573999 VD002245 SNOW00182 260443 3.000000 3
2574000 VD002245 SNOW00182 260443 3.000000 1
2574001 VD002245 SNOW00182 260445 4.000000 3
2574002 VD002245 SNOW00182 260445 4.000000 1
2574003 VD002245 SNOW00182 260444 3.000000 3
2574004 VD002245 SNOW00182 260444 3.000000 1
2574005 VD002245 SALO03293 320983 1.000000 3
2574006 VD002245 SALO03293 320983 1.000000 1
2574007 VD002245 SALO03293 320984 1.000000 3
2574008 VD002245 SALO03293 320984 1.000000 1
2574009 VD002245 SALO03293 320985 1.000000 3
2574010 VD002245 SALO03293 320985 1.000000 1
2574011 VD002245 SALO03293 320986 1.000000 3
2574012 VD002245 SALO03293 320986 1.000000 1
2574013 VD002245 SALO03293 320987 1.000000 3
2574014 VD002245 SALO03293 320987 1.000000 1
2574015 VD002245 SALO03293 320988 1.000000 3
2574016 VD002245 SALO03293 320988 1.000000 1
2574017 VD002245 SALO03293 320989 1.000000 3
2574018 VD002245 SALO03293 320989 1.000000 1
2574019 VD002245 SALO03293 320990 1.000000 3
2574020 VD002245 SALO03293 320990 1.000000 1
2574021 VD002245 SALO03293 320991 1.000000 3
2574022 VD002245 SALO03293 320991 1.000000 1
2574023 VD002245 SALO01828 228609 1.000000 3
2574024 VD002245 SALO01828 228609 1.000000 1
2574025 VD002245 SALO01793 228078 1.000000 3
2574026 VD002245 SALO01793 228078 1.000000 1
2574027 VD002245 SALO01828 228612 1.000000 3
2574028 VD002245 SALO01828 228612 1.000000 1
2574029 VD002245 SALO01828 228613 1.000000 3
2574030 VD002245 SALO01828 228613 1.000000 1
2574031 VD002245 SALO01828 228614 1.000000 3
2574032 VD002245 SALO01828 228614 1.000000 1
2574033 VD002245 SALO01833 228685 1.000000 3
2574034 VD002245 SALO01833 228685 1.000000 1
2574035 VD002245 SALO01828 228608 1.000000 3
2574036 VD002245 SALO01828 228608 1.000000 1
2574037 VD002245 PETZ00311 0 2.000000 3
2574038 VD002245 PETZ00311 0 2.000000 1


Voici mon code pour la création des documents de transfert
Code: Tout sélectionner
/// <summary>
        /// TRansfert une quantité d'article d'un dépot à un autre
        /// </summary>
        /// <param name="origin">depot origine</param>
        /// <param name="origineEmp">emplacement origine</param>
        /// <param name="dest">depot destinataire</param>
        /// <param name="destEmp">emplacement destinataire</param>
        /// <param name="artToMvt">liste d'article pour le transfert entre ces deux dépot</param>
        /// <param name="quantity">quantite a mouvemente</param>
        /// <param name="refe">DO_ref à renseigner</param>
        public List<ArticleStock> TransfertArticle(string origin, string origineEmp, string dest, string destEmp, List<ArticleStock> artToMvt, string refe = "", Dictionary<string, string> infoLibre = null)
        {
            Log.Orders.Debug("Transfert article - Demande de transfert de " + origin + "/" + origineEmp + " vers " + dest + "/" + destEmp);
            List<ArticleStock> ignoredArticles = new List<ArticleStock>();
            //Création du document origine destination
            //Création d'un processus document
            IPMDocument pDoc = oCial.CreateProcess_Document(DocumentType.DocumentTypeStockVirement);
            IBODocumentStock3 mDoc = pDoc.Document as IBODocumentStock3;
            mDoc.DO_Ref = refe;


            //Récupération du dépot
            IBODepot3 oDepot = oCial.FactoryDepot.ReadIntitule(origin);
            mDoc.DepotOrigine = oDepot;
            IBODepot3 dDepot = oCial.FactoryDepot.ReadIntitule(dest);
            mDoc.DepotDestination = dDepot;
            mDoc.SetDefaultDO_Piece();
            mDoc.WriteDefault();

            //Parcourt des tous les produits à transferer
            foreach (ArticleStock artSto in artToMvt)
            {
                IPMDocTransferer pTransfert = oCial.CreateProcess_DocTransferer();
                pTransfert.Document = mDoc;

                //Attention différente méthode suivant le nombre de gamme
                IBOArticle3 art = oCial.FactoryArticle.ReadReference(artSto.Article1.AR_Ref1);
               
                if (art != null)
                {
                    if (artSto.Article1.EG_Enumere11 != "" && artSto.Article1.EG_Enumere21 != "")
                    {
                        pTransfert.SetDefaultArticleDoubleGamme(art.FactoryArticleGammeEnum1.ReadEnumere(artSto.Article1.EG_Enumere11), art.FactoryArticleGammeEnum2.ReadEnumere(artSto.Article1.EG_Enumere21), artSto.QteStock1);
                    }
                    else if (artSto.Article1.EG_Enumere11 != "")
                    {
                        pTransfert.SetDefaultArticleMonoGamme(art.FactoryArticleGammeEnum1.ReadEnumere(artSto.Article1.EG_Enumere11), artSto.QteStock1);
                    }
                    else
                    {
                        pTransfert.SetDefaultArticle(art, artSto.QteStock1);
                    }

                    pTransfert.DepotEmplOrigine = oDepot.FactoryDepotEmplacement.ReadCode(origineEmp);
                    pTransfert.DepotEmplDest = dDepot.FactoryDepotEmplacement.ReadCode(destEmp);
                    if (pTransfert.CanProcess == true)
                        pTransfert.Process();
                    string errorT = RecupError(pTransfert);

                    if (errorT != "")
                    {
                        ignoredArticles.Add(artSto);
                        Log.Orders.Error("Transfert article - " + artSto.Article1.AR_Ref1 + " " + artSto.Article1.EG_Enumere11 + " " +
                            artSto.Article1.EG_Enumere21 + " echec : " + errorT);
                    }
                    else
                        Log.Orders.Debug("Transfert article - Article " + artSto.Article1.AR_Ref1 + " " + artSto.Article1.EG_Enumere11 + " " +
                            artSto.Article1.EG_Enumere21 + " transfert réussit");

                }
                else
                {
                    Log.Orders.Error("Transfert article - article " + artSto.Article1.AR_Ref1 + " vide");
                    ignoredArticles.Add(artSto);
                }
            }
            if (pDoc.CanProcess == true)
            {
                pDoc.Process();
                if (infoLibre != null)
                {
                    foreach (KeyValuePair<string, string> values in infoLibre)
                    {
                        pDoc.DocumentResult.InfoLibre[values.Key] = values.Value;
                    }
                    pDoc.DocumentResult.Write();
                }
            }
            string error = RecupError(pDoc);

            if (error != "")
            {
                Log.Orders.Error("Transfert article - Error general " + error);
                throw new Exception(error);
            }
            Log.Orders.Debug("Transfert article - TTransfert du docuument terminé");

            return ignoredArticles;
        }
Posteur néophyte
Posteur néophyte
 
Messages: 2
Inscription: Jeu 1 Fév 2018 17:47

Re: Problème création document de transfert

de asr31 » Mar 20 Fév 2018 19:45

Bonjour,

Attention au fait qu'un enregistrement lié à cette procédure puisse être en cours d'utilisation (la référence article et son dépôt, en particulier)

Ne pas oublier les règles du forum : préciser la version SAGE, et là, la version OM.

Cordialement,
ASR31

En recherche de missions.
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 2975
Inscription: Mer 13 Fév 2008 15:31
Localisation: TOULOUSE

Re: Problème création document de transfert

de CoralieLu » Mer 21 Fév 2018 10:20

Merci de votre réponse.

Est ce qu'il est possible d'avoir un objet en utilisation dans SAGE et que celui-ci ne m'envoie pas d'erreur ? Car je gère celle-ci.
Est ce que les objets métiers vérouille le document sur lequel il travaille pour qu'il ne soit pas accessible par la gestion commercial ?

Version Sage : i7v810
Version objet métier : 6.0
Posteur néophyte
Posteur néophyte
 
Messages: 2
Inscription: Jeu 1 Fév 2018 17:47

Re: Problème création document de transfert

de romulus001 » Ven 9 Mar 2018 15:47

Est ce que les objets métiers vérouille le document sur lequel il travaille pour qu'il ne soit pas accessible par la gestion commercial ?

Si vous aviez suivi la formation sur les OM, vous devriez savoir que tout objet persistant est protégé pour les utilisateurs en Gescom et compta
Super Contributeur
Super Contributeur
 
Messages: 176
Inscription: Sam 28 Juin 2014 20:48


Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
cron