Intégration Dynamics NAV & MS Project 2010

Suite à beaucoup de demandes sur le développement de l’intégration de MS Project et Dynamics NAV, je rédige ce premier post pour expliquer comment depuis MS Project vous pouvez ajouter un bouton au ruban qui permet de récupérer les tâches des projets Dynamics NAV et les afficher dans MS Project.

Vous pouvez voir la vidéo suivant qui montre cette intégration :

L’intégration MS Project nécessite une licence MS Project ainsi qu’un accès Light User, si l’utilisateur a un accès client RTC ou classique Dynamics NAV, l’accès Light User est inclut.

Dans un premier temps nous allons préparer l’environnement Dynamics NAV :

Il suffit tout simplement de publier la page suivante dans la table des web services Dynamics NAV :                                                                                

Type objet ID objet  Nom de service
Page 1007 ProjectTask 

Cela nous permettra d’accéder aux informations prêtes à l’emploi des tâches du module projet Dynamics NAV.

Et puis nous allons utiliser les outils VSTO ou Visual Studio Tools for Office qui nous permettent de manipuler les classes et méthodes de MS Project depuis Visual Studio en suivant cette procédure :

Créer un nouveau projet Office 2010 Project 2010 Add-In dans Visual Studio :

image

Ajouter les références des services web Dynamics NAV :

image

Ajouter un nouvel Item Ribbon à ce projet :

image 

Ajouter quelques boutons au Ribbon :

image

Double cliquez sur le bouton Projets depuis NAV et ajouter les lignes suivants :

private void ProjectFromNAV_Click(object sender, RibbonControlEventArgs e)
        {

//Instancier le projet MS Project actif

            MSProject.Project thisProject = Globals.ThisAddIn.Application.ActiveProject;

            thisProject.BaselineWork = new DateTime(2011, 1, 1);
            thisProject.ProjectNotes = "Projets Dynamics NAV";

//Appel du service web Dynamics NAV

NAVTasks.ProjectTask_Service navtasts = new NAVTasks.ProjectTask_Service();
navtasts.UseDefaultCredentials = true;
ProjectTask plan = new ProjectTask();

            // Filtrer les tâches de type Ressource
            List<ProjectTask_Filter> filterArray = new List<ProjectTask_Filter>();
            ProjectTask_Filter nameFilter = new ProjectTask_Filter();
            nameFilter.Field = ProjectTask_Fields.Type;
            nameFilter.Criteria = "Ressource";
            filterArray.Add(nameFilter);

          //Lire la liste des tâches à afficher dans MS Project 

ProjectTask[] list = navtasts.ReadMultiple(filterArray.ToArray(), null, 100);

//Ajouter les tâches dans MS Project

            string proj = list[1].Job_No;
            MSProject.Task projt = thisProject.Tasks.Add(list[1].Job_No, System.Type.Missing);
            projt.OutlineLevel = 1;

            foreach (ProjectTask p in list)
            {
                MSProject.Task tsk;
               
                if (proj != p.Job_No)
                {
                    MSProject.Task tskHeader = thisProject.Tasks.Add(p.Job_No, System.Type.Missing);
                    tskHeader.OutlineLevel = 1;

                }
                tsk = thisProject.Tasks.Add(p.Description, System.Type.Missing);
                tsk.OutlineLevel = 2;
                proj = p.Job_No;               

                tsk.Text1 = p.Job_No;
                tsk.Text2 = p.Job_Task_No;
                tsk.Text3 = p.Line_No.ToString();
                tsk.Start = p.Planning_Date;
                tsk.Duration = p.Quantity + "h";
                tsk.ResourceNames = p.No;

            }

        }

Dans cette méthode je récupère les tâches de tous les projets Dynamics NAV, je renseigne deux champs MS Project Text1 et Text2 avec le N° projet  et  N° de la tâche Dynamics NAV.

J’indente les tâches en renseignant la valeur de OutlineLevel pour regrouper les tâches par projet.

Pour n’utiliser que le standard Dynamics NAV je renseigne la date de début de la tâche et je renseigne la durée de la tâche par rapport au champ quantité de NAV.

Ressources :

Voici quelques ressources pour vous aider à aller plus loin dans cette intégration :

Webcast développement MS Project : https://www.microsoft.com/showcase/en/us/details/82e2defa-cb23-42dd-8dda-63f5c0fb49c4

MSDN working with Dynamics NAV Service Web : https://msdn.microsoft.com/fr-fr/library/dd355036.aspx

 

Si vous avez des questions, ou des commentaires ; Inscrivez vous au groupe  de discussion 8270.DynamiserLeSuccs_5F00_1742D7ED1[2] sur LindekIn : https://www.linkedin.com/groups?gid=3510046