rapport de stage - porte feuille de...

20
Laiterie H.Triballat 18220-Rians RAPPORT RAPPORT DE STAGE DE STAGE

Upload: lytuyen

Post on 11-Sep-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Laiterie H.Triballat 18220-Rians

RAPPORTRAPPORTDE STAGEDE STAGE

Remerciement

Je tiens à remercier la Laiterie Triballat pour avoir accepter que je puisse faire mon stage dans le secteur informatique de cette entreprise, et tout particulièrement Monsieur Mayen d'avoir donné son accord pour me faire rentrer et me donner un projet spécifique dans le cadre de ma formation de première année en BTS SIO option SLAM.

J'ai eu énormément de chance d'avoir pu trouver une entreprise qui puisse me prendre en tant que stagiaire, car de nos jours, cela devient de plus en plus difficile de trouver un stage.

Pour ce qui est du projet, je remercie beaucoup Monsieur Jardat pour le temps qu'il m'a consacré dans l'élaboration et la conception de l'application et à m'avoir donné toutes les bases nécessaires pour comprendre ce langage de programmation qui me paraissait jusqu'à là totalement flou.

Enfin, je remercie aussi Madame Boisson, directrice du laboratoire d'analyse, pour m'avoir élaborer un cahier des charges clair et précis qui m'a permis de gagner de précieuses heures dans la création du projet, mais aussi de m'avoir éclaircit lorsque je rencontrais un problème au niveau de l'interface ou de certaines conditions d'utilisation. J'espère que l'application contiendra tous les éléments nécessaires au bon fonctionnement du service.

Ce stage m'a été très bénéfique car j'ai pu avoir un aperçu de ce qui pouvait m'attendre en tant qu'informaticien, et a aussi consolider mon idée de vouloir travailler dans ce domaine.

Présentation de l'entreprise

Raison Sociale...................................................................................................................

Statut Juridique...........................................................................................................…..

Secteur d'activité..............................................................................................................

Organigramme..................................................................................................................

Présentation du service d'accueil

Rôle dans l'établissement..................................................................................................

Tâches réalisées.................................................................................................................

Moyens informatiques......................................................................................................

Missions confiées

Cahier des charges............................................................................................................

Réalisation du projet

Création d'un modèle relationnel de données(MCD).......................................................

Création d'une base de données......................................................................................

- Présentation de la base de données HFSQL.......................................................

- Comment créer une base de données sur Windev 19 en HFSQL ?.....................

Mise en forme et élaboration d'une application..............................................................

SommaireSommaire

La famille Triballat exploitait une ferme familiale à Rians dans le département du Cher.

En 1952, Hubert Triballat ne perpétue pas l'activité agricole qui assurait la subsistance de sa famille. Il installe dans la ferme une petite laiterie et commence à acheter et collecter à l'aide de trois employés les laits produits par les familles voisines.

Entre 1952 et 1965, Hubert Triballat achète quinze laiteries dans le département.

L'entreprise se développe dans les années 1970, lorsqu'elle vend ses produits (faisselle et fromagesde lait de chèvre) dans les crèmeries parisiennes3.

En 1992, la production se diversifie en s'étoffant de gâteaux, desserts…

Plus tard, grâce à des usines disséminées sur le territoire français, l'entreprise s'investit dans la production de fromages aux appellations d'origines protégéescomme cabécou de rocamadour, , selles-sur-cher, valençay, époisses et langres.

En 2006, aux États-Unis, picodonl'entreprise achète la société agroindustrielle californienne Laura Chennel spécialisée dans la transformation de lait de chèvre.

Actuellement, c'est le fils du fondateur, Hugues, qui dirige l'entreprise.

Raison sociale : Il s'agit de la laiterie H.Triballat.

Statut juridique : C'est une société par action simplifiée.(SAS)

Secteur d'activité :

L'entreprise transforme les matières premières et vend des produits finis.

Elle fait parti du secteur secondaire car c'est une activité industrielle et a pour statut une grande entreprise avec plus 750 salariés.

Présentation de l'entreprisePrésentation de l'entreprise

Présentation du service

Rôle dans l'établissement

Le directeur du système d'information est Emmanuel mayen.

Il dirige les deux pôles informatique :

- Le pôle développement qui est constitué de 6 personnes

-Emmanuel JARDAT : responsable d'informatique décisionnel ( concerne les système d'informations liés aux statistiques

-Christian DESTEVE : responsable étude et développement

-Paul-Henry AUDUN Chef de projet

-Anthony ZAWADZKI Chef de projet informatique junior

-Julien DUBOIS Animateur de performance

-David LIVACHE Analyse programmeur

- Le pôle technique : réseaux, informatique industriel, exploitation bureautique

Ce pôle est constitué de 4 personnes :

- Jean Philippe BEDIN : responsable bureautique,

- Laurent BONNARD : responsable d'exploitation,

- Pascal THOMAS : réseau et télécom

- Richard MARDGALI : responsable technique informatique

Tâches réalisées :

Le projet CAP Le projet CAP PerformancePerformance

Ce nom baptise la mise en place de l'ERP (Enterprise resource planning)Ce nom baptise la mise en place de l'ERP (Enterprise resource planning)

L'ERP est tout le système informatique et est constitué de plusieurs modulesL'ERP est tout le système informatique et est constitué de plusieurs modules ::

- gestion commerciale- gestion commerciale

- la finance- la finance

- la gestion de production- la gestion de production

- les achats- les achats

Le projet est sous le progiciel JDE (Edwards) de chez oracleLe projet est sous le progiciel JDE (Edwards) de chez oracle

Il a démarré il y a 4 ans. La gestion de production est installée à 80 %. Il devrait voir le jour en Il a démarré il y a 4 ans. La gestion de production est installée à 80 %. Il devrait voir le jour en principe fin juin 2015principe fin juin 2015

Autres tâches réaliséesAutres tâches réalisées par le service:par le service:

- mettre en place de l'aide à la décision- mettre en place de l'aide à la décision : utilisation d'outil décisionnel (BO) et Oracle bizness : utilisation d'outil décisionnel (BO) et Oracle bizness intelligenceintelligence

- gérer un entrepôt de données métier, de donner des outils et former les utilisateurs pour qu'ils - gérer un entrepôt de données métier, de donner des outils et former les utilisateurs pour qu'ils puissent créer leur reporting et leur décisionnel. puissent créer leur reporting et leur décisionnel.

- développement sous Windev sur tout le domaine d'activité de l'entreprise (commercial, finance, - développement sous Windev sur tout le domaine d'activité de l'entreprise (commercial, finance, production)production)

Infrastructure du serviceInfrastructure du service ::

- 3 salles d'informatiques avec deux data center en réplication.- 3 salles d'informatiques avec deux data center en réplication.

- 600 ordinateurs (y compris les pc portables)- 600 ordinateurs (y compris les pc portables)

- 60 serveurs virtuels- 60 serveurs virtuels

- 15 serveurs physiques (hébergement messagerie)- 15 serveurs physiques (hébergement messagerie)

- capacité de stockage actuellement- capacité de stockage actuellement : plus de 30 terabytes: plus de 30 terabytes

Il y a 3 types de réseauxIl y a 3 types de réseaux ::

- réseaux de terrain (pour la fabrication)- réseaux de terrain (pour la fabrication)

-réseau industriel (pour la traçabilité)-réseau industriel (pour la traçabilité)

-réseau d'entreprise (gestion reliée entre les serveurs)-réseau d'entreprise (gestion reliée entre les serveurs)

Mission confiée

Réalisation du projet

Création d'un modèle relationnel de données (MCD)

Création d'une base de données :

Sur Windev 19, de nombreux types de base de données sont disponibles comme vous pouvez le constater sur l'image ci dessous :

- Présentation de la base de données HFSQL

Sur Windev 19, de nombreux types de base de données sont disponibles comme vous pouvez le constater sur l'image ci dessous :

Pour ma part, on m'a fait travailler sur HFSQL Classic qui fonctionne à la fois sous Windows, Linux, sur mobile et sur les réseaux de toute taille. C'est une base de données qui est intégrée directement aux environnements Windev, Windev mobile et Webdev.

HFSQL offre une format de stockagecomptable au niveau binaire entretoutes les plates formes.

- Comment créer une base de données sur Windev 19 en HFSQL ?

Lors de la création d'unnouveau projet, il estdemandé dans l'assistance decréation d'un projet si on veutcréer une nouvelle base dedonnées :

Ensuite, il faut entrer un nompour nommer votre base dedonnées et choisir unemplacement où elle seraenregistrée.

L'assistance Windev est fait pour faciliter le plus possible le développeur.

On choisit ensuite le type de base dedonnées que l'on veut créer. Dans lecadre de mon stage, j'ai utilisé HFSQLClassic.

Création d'un fichier dans la base de données

Une fois la base de donnéescréée, il ne reste plus qu'àcréer les fichiers que l'on veutvoir dedans. Pour cela, on doitcliquer sur « Créer unenouvelle description d'unfichier de données ».

On nous demande ensuite de choisir un nom pour le fichier et le type de base de fichier choisi, ce qui reste pour notre part, HFSQL Classic.

Création de données dans un fichier

La fenêtre principale du fichier s'ouvre :On constate que le fichier est crée avec un identifiant automatique, il servira de clé unique, donc aucun besoin de rajouter un identifiant.

On peut maintenant créer toutes les données que l'on veut voir apparaître dans le fichier, comme ceci par exemple :

Dans la même fenêtre, de nombreusesoptions sont mises en place. Par exemple, sion veut que la donnée sélectionnée soit :

– 1: une clé composé– 2: le type choisi (chaîne, mémo

texte,...)– 3: une clé unique ou avec doublons– 4: une valeur particulière qui doit être

attribué à la donnée.

Mise en forme et élaboration d'une applicationMise en forme et élaboration d'une application

Mon but, durant ce stage, était de créer une application mettant en œuvre la gestion des audits duMon but, durant ce stage, était de créer une application mettant en œuvre la gestion des audits dulaboratoire d'analyses de l'entreprise H.Triballat.laboratoire d'analyses de l'entreprise H.Triballat.

Je devais donc prévoirJe devais donc prévoir ::

- la création d'un audit- la création d'un audit

- la fiche principale de l'audit avec ces différents critères- la fiche principale de l'audit avec ces différents critères

- la possibilité de pouvoir rechercher un audit- la possibilité de pouvoir rechercher un audit

- la gestion des différents ateliers constituant l'entreprise y compris les différentes filiales- la gestion des différents ateliers constituant l'entreprise y compris les différentes filiales

- la gestion des familles d'exigences et des exigences- la gestion des familles d'exigences et des exigences

- un bilan des audits du laboratoire servant à comparer des audits durant plusieurs années- un bilan des audits du laboratoire servant à comparer des audits durant plusieurs années

Explication de différentes interfaces utilisateurs de l'application suivit du programme spécifique à Explication de différentes interfaces utilisateurs de l'application suivit du programme spécifique à celles cicelles ci

Création d'un audit (code)Création d'un audit (code)

// Ajout d'un enregistrement saisi dans une fenêtreEcranVersFichier(FEN_CreationAudit,Audits)Audits.StatutAudit="E"// Dans le fichier AuditHAjoute(Audits)

// Je cherche une famille dans la liste de la grilleHLitRecherche(Famille,IDGrille,LISTE_Grille)// Tant que je trouve une famille, je recherche les critères spécifiques à cette familleTANTQUE HTrouve(Famille)

// J'ajoute la famille à l'auditHRAZ(AuditFamille)AuditFamille.IDAudit=Audits.IDAuditsAuditFamille.IDFamille = Famille.IDFamilleHAjoute(AuditFamille)

HlitRecherche(Exigence,IDFamille,Famille.IDFamille)

//Tant que je trouve une exigence, je prends les audits qui iront s'ajouter dans le fichier Audit/Critère

TANTQUE HTrouve(Exigence)

//HRAZ: Faire un nouvel enregistrementHRAZ(AuditExigence)AuditExigence.IDAudits=Audits.IDAudits

AuditExigence.IDExigence=Exigence.IDExigenceHAjoute(AuditExigence)

// je crée un enregistrement comportant IDExigence que je vais chercher dans IDExigence dans le fichier AuditExigence et IDAudits

// que je vais chercher dans IDAudits dans le fichier AuditExigence// On note que le numéro de la ligne est égal à 1//On ajoute ensuite cet enregistrement dans AuditResultatHRAZ(AuditResultat)AuditResultat.IDExigence=AuditExigence.IDExigenceAuditResultat.IDAudit=AuditExigence.IDAuditsAuditResultat.IDFamille=Famille.IDFamilleAuditResultat.NumLigne=1HAjoute(AuditResultat)

HLitSuivant(Exigence)FIN

HLitSuivant(Famille)FIN

// Je parcours le fichier InfoParametres pour alimenter le fichier AuditInfo de chacune de ces lignes.HLitPremier(InfoParametres)TANTQUE PAS HEnDehors(InfoParametres)

//J'initialise mon fichier AuditInfoHRAZ(AuditInfo)// On a besoins de mettre une valeur dans l'IDAudit, l'IDInformations du fichier AuditInfo// Pour le Texte du fichier AuditInfo, on attend pas de valeur pour l'instant puisqu'on doit le

saisir dans la fenêtre.// Donc on ne met rien concernant le Texte du fichier AuditInfoAuditInfo.IDAudits=Audits.IDAuditsAuditInfo.IDInformations=InfoParametres.IDInfoParametresAuditInfo.Texte=InfoParametres.ValeurDefaut// Enfin, on ajoute la valeur dans le fichier AuditInfo qui a été copié dans le fichier

InfoParametresHAjoute(AuditInfo)HLitSuivant(InfoParametres)

FIN

//Ouvre la fenêtre FicheAuditEntete directement et affichera automatiquement le nom, la date de l'audit et le nom de l'ateliergnIdaudit=Audits.IDAuditsOuvre(FEN_FicheAuditEntête)

Ajouter un atelierAjouter un atelier ::

HRAZ(Atelier)SI Ouvre(FEN_FicheAtelier)=Vrai ALORS

ListeAffiche(TABLE_Atelier,taInit)

FIN

Modifier un atelierModifier un atelier ::

SI Ouvre(FEN_FicheAtelier) ALORSListeAffiche(TABLE_Atelier,taCourantBandeau)FIN

Supprimer un atelierSupprimer un atelier ::

SI OuiNon("Voulez vous vraiment supprimer cet atelier ?")=Non ALORS RETOURTableSupprime(TABLE_Atelier)

Code onglet exigenceCode onglet exigence

// J'affiche la note// J'affiche la note

COMBO_Notation=RechercheNoteFamille(gnIdaudit,COMBO_Famille..Valeur)// j'affiche la tableTableSupprimeTout(TABLE_AuditExigence)HLitRecherche(Exigence,IDFamilleTri,HConstruitValClé(Exigence,IDFamilleTri,COMBO_Famille..ValeurMémorisée))TANTQUE HTrouve(Exigence)

HLitRecherche(AuditExigence,IDAuditsIDExigence,HConstruitValClé(AuditExigence,IDAuditsIDExigence,gnIdaudit,Exigence.IDExigence))

SI HTrouve(AuditExigence) ALORS

it est un entier = TableAjouteLigne(TABLE_AuditExigence)TABLE_AuditExigence.COL_Coderef[it]=Exigence.Code_référenceTABLE_AuditExigence.COL_IDExigence[it]=Exigence.IDExigenceTABLE_AuditExigence.COL_NomsExigences[it]=Exigence.NomExigenceTABLE_AuditExigence.COL_Detail[it].INT_nonaudité=AuditExigence.nonAuditer

itbis est une entier=AffichageCommentaire(Exigence.IDExigence,it)DefinirHauteurLigne(itbis,it)

Enregistrer_récapitulatif(it)

RechercheAuditPrec_Exigence(it,AuditExigence.IDExigence)

FIN

HLitSuivant(Exigence)FIN

Code tableauCode tableau

Sortie de TABLE_DETAILEXIGENCESortie de TABLE_DETAILEXIGENCE

EnregistrerCommentaire(TABLE_DetailExigence.COL_numligne,TABLE_DetailExigence.COL_C.INT_C,TABLE_DetailExigence.COL_NC.INT_NC,TABLE_DetailExigence.COL_Amel.INT_Amel,TABLE_DetailExigence.COL_Niveau..Valeur,TABLE_DetailExigence.COL_Commentaire)

Sélection d'une ligne de TABLE_DETAILEXIGENCESélection d'une ligne de TABLE_DETAILEXIGENCE

EtatColonne(TABLE_DetailExigence..Nom)

Interrupteur INT_CInterrupteur INT_C

A chaque modification de INT_CA chaque modification de INT_C

SI INT_C=1 ALORSTABLE_DetailExigence.COL_NC.INT_NC=0TABLE_DetailExigence.COL_Niveau=""TABLE_DetailExigence.COL_NiveauTri=""SINON

TABLE_DetailExigence.COL_NC.INT_NC=1TABLE_DetailExigence.COL_Amel.INT_Amel=0TABLE_DetailExigence.COL_Niveau="MIN"TABLE_DetailExigence.COL_NiveauTri="MIN"

FIN

EtatColonne("TABLE_DetailExigence")

EnregistrerCommentaire(TABLE_DetailExigence.COL_numligne,TABLE_DetailExigence.COL_C.INT_C,TABLE_DetailExigence.COL_NC.INT_NC,TABLE_DetailExigence.COL_Amel.INT_Amel,TABLE_DetailExigence.COL_Niveau..Valeur,TABLE_DetailExigence.COL_Commentaire)

Enregistrer_récapitulatif(TABLE_AuditExigence)

Interrupteur AmelInterrupteur Amel

A chaque modification de INT_AMELA chaque modification de INT_AMEL

EnregistrerCommentaire(TABLE_DetailExigence.COL_numligne,TABLE_DetailExigence.COL_C.INT_C,TABLE_DetailExigence.COL_NC.INT_NC,TABLE_DetailExigence.COL_Amel.INT_Amel,TABLE_DetailExigence.COL_Niveau..Valeur,TABLE_DetailExigence.COL_Commentaire)

Enregistrer_récapitulatif(TABLE_AuditExigence)

Interrupteur NCInterrupteur NC

A chaque modification de INT_NCA chaque modification de INT_NC

SI INT_NC=1 ALORSTABLE_DetailExigence.COL_C.INT_C=0

TABLE_DetailExigence.COL_Amel.INT_Amel=0TABLE_DetailExigence.COL_Niveau="MIN"TABLE_DetailExigence.COL_NiveauTri="MIN"

SINON TABLE_DetailExigence.COL_C.INT_C=1TABLE_DetailExigence.COL_Niveau=""TABLE_DetailExigence.COL_NiveauTri=""

FIN

EtatColonne("TABLE_DetailExigence")

EnregistrerCommentaire(TABLE_DetailExigence.COL_numligne,TABLE_DetailExigence.COL_C.INT_C,TABLE_DetailExigence.COL_NC.INT_NC,TABLE_DetailExigence.COL_Amel.INT_Amel,TABLE_DetailExigence.COL_Niveau..Valeur,TABLE_DetailExigence.COL_Commentaire)

Enregistrer_récapitulatif(TABLE_AuditExigence)

Colonne niveauColonne niveau

Sélection d'un ligne de COL_NiveauSélection d'un ligne de COL_Niveau

TABLE_DetailExigence.COL_NiveauTri=TABLE_DetailExigence.COL_Niveau

EnregistrerCommentaire(TABLE_DetailExigence.COL_numligne,TABLE_DetailExigence.COL_C.INT_C,TABLE_DetailExigence.COL_NC.INT_NC,TABLE_DetailExigence.COL_Amel.INT_Amel,TABLE_DetailExigence.COL_Niveau..Valeur,TABLE_DetailExigence.COL_Commentaire)

Enregistrer_récapitulatif(TABLE_AuditExigence)

Colonne CommentaireColonne Commentaire

Sortie du Col_CommentaireSortie du Col_Commentaire

EnregistrerCommentaire(TABLE_DetailExigence.COL_numligne,TABLE_DetailExigence.COL_C.INT_C,TABLE_DetailExigence.COL_NC.INT_NC,TABLE_DetailExigence.COL_Amel.INT_Amel,TABLE_DetailExigence.COL_Niveau..Valeur,TABLE_DetailExigence.COL_Commentaire)

Bouton +Bouton +

Clic sur BTN_AjoutCommentaireClic sur BTN_AjoutCommentaire

EnregistrerCommentaire(TABLE_DetailExigence.COL_numligne,TABLE_DetailExigence.COL_C.INT_C,TABLE_DetailExigence.COL_NC.INT_NC,TABLE_DetailExigence.COL_Amel.INT_Amel,TABLE_DetailExigence.COL_Niveau..Valeur,TABLE_DetailExigence.COL_Commentaire)

AjouterCommentaire()

Bouton -

Clic sur BTN_SupprimerCommentaire

SupprimeCommentaire()

Interrupteur Exigence non auditée

A chaque modification de INT_nonaudité

ExigenceAuditéeOuPas("TABLE_DetailExigence",INT_nonaudité)

Combo Famille

Initialisation de COMBO_Famille

SI COMBO_Famille..Occurrence<>0 ALORSListeSelectPlus(COMBO_Famille,1)

TableAffiche(TABLE_AuditExigence,taInit)FIN

Sélection d'une ligne de COMBO_Famille

TableAffiche(TABLE_AuditExigence,taInit)

Sélection d'une ligne de COMBO_Notation

EnregistrerNoteFamille(gnIdaudit,COMBO_Famille..Valeur,COMBO_Notation..Valeur)AffichageTableNoteFamille()

Création d'une procédure locale :

Durant mon stage, mon tuteur m'a montré comment faire une procédure locale, pour mieux m'y retrouver dans un code parfois excessivement long et répétitif.

Exemple avec la procédure « EnregistrerCommentaire » :

PROCEDURE EnregistrerCommentaire(inum est un entier,pc est un booléen,pnc est un booléen,pamelio est un booléen,pcodetype,pcommentaire)

HLitRecherche(AuditResultat,IDAuditIDExigenceNumLigne,HConstruitValClé(AuditResultat,IDAuditIDExigenceNumLigne,gnIdaudit,TABLE_AuditExigence.COL_IDExigence,inum))SI HTrouve(AuditResultat) ALORS

AuditResultat.IDAudit=gnIdauditAuditResultat.IDExigence=TABLE_AuditExigence.COL_IDExigenceAuditResultat.NumLigne=inumSI pc = Vrai ALORS

AuditResultat.StatutExigence="C" AuditResultat.typeNC=""

FINSI pnc = Vrai ALORS

AuditResultat.StatutExigence="NC" AuditResultat.typeNC=pcodetype

FINAuditResultat.Commentaire=pcommentaireAuditResultat.CritereAmelio=pamelioHModifie(AuditResultat)

FIN

Comme vous pouvez le constater dans le code tableau, j'ai utilisé cette procédure de nombreuses fois, ce qui m'a permis de gagner énormément de temps et de ne pas devoir réécrire tout le code de la procédure à chaque fois.

En résuméEn résumé ::

Les principales fonctions étudiés pendant mon stageLes principales fonctions étudiés pendant mon stage ::

Création d'une requête SQLCréation d'une requête SQL ::

En Windev, il y a deux façons de créer une requêteEn Windev, il y a deux façons de créer une requête ::

- Par programmation en saisissant le code SQL- Par programmation en saisissant le code SQL

- Par assistance avec une fenêtre de description, avec génération automatique du code SQL- Par assistance avec une fenêtre de description, avec génération automatique du code SQL

Pour ma part, j'ai eu l'occasion d'apprendre à créer une requête avec l'assitance et j'ai trouvé ça Pour ma part, j'ai eu l'occasion d'apprendre à créer une requête avec l'assitance et j'ai trouvé ça beaucoup plus rapide et simple que par programmation.beaucoup plus rapide et simple que par programmation.

Voilà en quoi cela consiste:Voilà en quoi cela consiste:

L'assistant nous affiche la fenêtre de création d'une requêteL'assistant nous affiche la fenêtre de création d'une requête ::

Après validation, si on a des données de plusieurs fichiers différents, on peut avoir un problème deAprès validation, si on a des données de plusieurs fichiers différents, on peut avoir un problème dejointure. Arrivé àjointure. Arrivé àcette fenêtre, il fautcette fenêtre, il fautcliquer surcliquer sur«« CatésienCatésien » pour» pourfaire la jointure.faire la jointure.

On ajoute les rubriques correctes pour fairela jointure et on valide ensuite.

On retrouve la mêmeOn retrouve la mêmefenêtre de jointure de lafenêtre de jointure de lapage ci dessus, mise àpage ci dessus, mise àpart qu'il n'y a pluspart qu'il n'y a plusqu'une seule jointurequ'une seule jointureregroupant les 4 fichiersregroupant les 4 fichierssélectionnés.sélectionnés.