Nothing Special   »   [go: up one dir, main page]

Rapport Stage PDF

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 39

IUT de Clermont-Ferrand

Dpartement Informatique

Rapport de Stage

Amlioration et ajout de fonctionnalits un module Prestashop


connect des Marketplaces

Amlioration et optimisation de la procdure d'import par scripts


PHP

SOULE Tho

M. ROBERT Cdric
Anne 2014-2015

J'autorise la diffusion de mon rapport sur lintranet de lIUT

2/39

3/39

Remerciements

Je remercie M. ROBERT Cdric pour son aide, son soutien, et pour ses prcieux conseils.
galement merci tous les employs de l'entreprise CAILLOT, notamment pour leur accueil et leurs
explications.
Et enfin merci Mme. SIMON Carine pour le suivi du stage et pour les conseils, mais aussi aux
professeurs de l'IUT pour l'apport de connaissances qui m'ont aid tout le long de mon stage.

4/39

Sommaire

1. Introduction.....................................................................................6
2. Prsentation de l'entreprise.............................................................7
2.1. Description..............................................................................................................7
2.2. Fonctionnement et rseau........................................................................................9

3. Prsentation synthtique du stage.................................................10


3.1. Environnement......................................................................................................10
3.2. Reprise du travail existant.....................................................................................11
3.3. Objectifs et enjeux.................................................................................................12

4. Analyse et dveloppement............................................................13
4.1. Gestion du stage....................................................................................................13
4.2. Utilisation d'un debugger PHP..............................................................................15
4.3. Scripts PHP...........................................................................................................16
4.3.1. Mise jour des stocks fournisseurs......................................................................................16
4.3.2. Mise jour du prix de vente.................................................................................................20
4.3.3. L'export des commandes......................................................................................................23
4.3.4. Annulation de certains produits............................................................................................25

4.4. Administration du serveur Linux...........................................................................26


4.4.1. Rcupration d'un fichier fournisseur...................................................................................27
4.4.2. Rsoudre le problme de lenteur..........................................................................................28
4.4.3. dition des crons...................................................................................................................30

4.5. Dcouverte d'un logiciel de gestion de versions...................................................31

5. Bilan Technique............................................................................33
6. Conclusion....................................................................................34
7. English Summary..........................................................................35
8. Bibliographie................................................................................36
9. Lexique.........................................................................................37
10. Annexes.......................................................................................39
10.1. Modle Physique de Donnes Prestashop..........................................................39

5/39

1. Introduction
Ce rapport prsente mon stage encadr par l'IUT dpartement informatique qui se droule sur 10
semaines, du 7 avril au 14 juin 2015. Ce dernier a t ralis dans l'entreprise CAILLOT, au sein de
l'agence de Clermont-Ferrand. J'ai ainsi rejoint le service informatique aux cts de M. ROBERT
Cdric, mon matre de stage.
Mon objectif lors de ce stage tait d'amliorer et faciliter l'importation des produits de multiples
fournisseurs au sein du site de vente en ligne www.laboutiquedemarcel.com , utilisant l'application
web Prestashop. Cela consiste reprendre du code PHP dj existant, l'analyser et enfin trouver des
solutions pour optimiser. Ceci permettrait un gain de temps pour l'entreprise, qui doit galement grer
un logiciel en parallle. Ayant rejoint le service informatique d'une PME (petite et moyenne entreprise),
mon rle tait galement de m'occuper de la maintenance du parc informatique de l'entreprise, en
ralisant diverses tches de manire polyvalente. L'activit principale de l'entreprise est la distribution
de matriel lectrique. Ainsi, quelques notions d'conomies taient matriser afin de ne pas raliser
d'erreurs financires.
J'ai aussi eu certaines missions secondaires, telle que la recherche d'une solution viable afin que
l'entreprise puisse faire le dveloppement collaboratif de leur logiciel (ERP*) dans les meilleures
conditions.

Comment amliorer l'importation de produits venant de multiples fournisseurs au sein d'un site
web utilisant Prestashop ?
Pour rpondre cela, je vais dans un premier temps prsenter en dtails l'entreprise, puis je
dcrirai de manire synthtique le stage, en explicitant son environnement, ses enjeux et ses objectifs.
Le dveloppement montrera les diffrentes tches effectues ainsi que la procdure pour les raliser. Un
bilan rcapitulera le stage, et une conclusion mettra en avant ce que ce dernier m'a apport. Un lexique
viendra aider la comprhension des termes techniques.

6/39

2. Prsentation de l'entreprise
2.1. Description
L'entreprise CAILLOT S.A. est une PME vieille de plus de 85 ans, qui possde huit agences
implantes dans diverses villes de France : Clermont-Ferrand, Ambert, Montluon, Moulins, Roanne,
Saint-Flour, Thiers, et Vichy. Cette entreprise distribue du matriel lectronique aux professionnels, et
plus petite chelle aux particuliers.
DIRIGEANTS
Eric et Herv GOLFIER

Resp. FINANCES
Batrice JOUANEN
COMPTABILITE
Valrie VITRE

SECRETARIAT ACCUEIL
ASSISTANTE COMMERCIALE
Elodie FERRIER

STOCK CENTRAL
Responsable magasin
Joaquim CARMO

SERVICE ACHATS
Chef produit
Alain DELL'ISOLA
Christine CHAMALET

SERVICE INFORMATIQUE
Chef du service
Cdric ROBERT
SOULE Tho

Rception
Lionel TERRASSE
Chantal BERGERAT

FACTURATION / SAISIE
Dominique RAYNAUD
Monique PLANCHAT

Magasin Inter-Agence
Didier HERVE
Claude VERT
Mickal MERCIER
Cindy MARIANO
Nicolas TORENT

ENTRETIEN
Sylvie CHASTAIN

Chauffeur-Livreur
Nicolas CONSTANT
Figure 1: Organigramme des services non commerciaux
L'agence de Clermont-Ferrand dans laquelle mon stage s'est droul est aussi le sige social. On
y trouve galement le stock central. Les autres agences sont des points de vente qui possdent
galement un stock. Beaucoup de marchandises transitent entre le stock central et ceux des agences.
Comme le montre l'organigramme de la page suivante, chaque agence est contrle par un chef qui
gre son point de vente.

7/39

AGENCE DE CLERMONT-FD
Chef d'Agence
Amandine CHEZE

AGENCE DE SAINT-FLOUR
Chef d'Agence
Jacques ROUCHIT

Commerciaux Sdentaires
Jean-Pierre JOHANNY
Brice GUERIN
Delphine FARRY

Attach Commercial
Lionel REGIMBAL
Vendeur-Magasin
Sbastien LOUSSERT

Attachs Commerciaux Itinrants


Eric JULIEN
Loic COIGNET
Pascal RAVET
Franois BOHAUD

Attach Commercial
Pierre LEBLOND
Vendeur-Magasin
Sabrina SIMON

LA BOUTIQUE
Responsable
Jean-Luc AMBLARD

AGENCE DE MOULINS
Chef d'Agence
Dominique BREANT

Vendeur-Magasin
Sylvie BONIFACE
Geoffrey SERRE

AGENCE DE MONTLUCON
Chef d'Agence
Jrme LAPARRA
Attachs Commerciaux
Jean-Marc SEMEILHON
Fabien CHABANCE
Vendeur Technico
Rgis REGRAIN

Jules HERRERA
Yoan SAVINEL
AGENCE DE THIERS
Chef d'Agence
Norbert DASSAUD

Vendeurs Comptoir
Thierry MAYET
Mickal AUCLAIR
Rgis COLLIN

SAV
Christian LEROY

AGENCE D'AMBERT

Attachs Commerciaux
John CHASSIN
Arnaud BORDES
AGENCE DE ROANNE
Chef d'Agence
Jacky PEREY

Vendeurs-Magasin
David MOULIN
Jean-Marc LUSTIERE

Attach Commercial
Francisco VEGA
Pierre GOUTORBE

AGENCE DE VICHY
Chef d'Agence
Dominique AUJAMES

Vendeur-Magasin
Alain BONVIN

Attach Commercial
Jean-Pascal RIOU

Grand Public
Roselyne PRAS
Vendeurs Comptoir
Coplia
FILIPPINI
Guillaume PIGEAT
Gelle BEAUJEU
Figure 2: Organigramme des agences commerciales et de la boutique

Vendeurs-Magasin
Laurence FERNANDES
Lorin QUADERI

8/39

2.2. Fonctionnement et rseau


Caillot utilise un ERP* afin de grer toute la chane de vente, de la commande du client jusqu'
la facturation et la livraison. Le site de vente en ligne est destin aux particuliers, et il est connect
diffrents marketplaces*. L'entreprise hberge ses services internes sur diffrents serveurs se situant au
service informatique de Clermont-Ferrand, tel que leur ERP. Ainsi mme lors d'une coupure internet
l'entreprise pourra fonctionner. En revanche, les services externes tel que le site de vente sont hbergs
en dehors de ce rseau local.

Figure 3: Caillot Clermont-Fd


L'entreprise a vu voluer son rseau de nombreuses fois. Ayant rcemment chang d'oprateur,
l'entreprise est dsormais sous un VPN* gr par Adista, qui fournit de multiples services. ClermontFerrand possde dsormais un dbit SDSL* de 12 Mb/s, qui est donc symtrique en rception et
mission. Le VPN assure une scurit des changes entre les machines de Caillot. Adista gre ainsi les
changes au sein de son Backbone* : En effet, c'est un fournisseur internet. Voici un schma
simplifi du rseau actuel :

INTERNET
SDSL Pro+ 12 Mbs

Clermont-Ferrand

s+
sines
u
B
L
ADS

VPN de CAILLOT
Services:
VPN MPLS
Qualit de service Qos
Adressage IP fixe
Nom de domaine
Relais SMTP
FW 2U hbergs

Pare-feu

Backbone Adista
Haute disponibilit et scurit

Agences distantes
Figure 4: Schma du rseau de Caillot

9/39

3. Prsentation synthtique du stage


3.1. Environnement
La boutique Marcel est le nom du site web qu'il m'a t demand de grer. Il est install par
l'entreprise sur un serveur Linux. Un ordinateur install sur le rseau a t mis disposition afin que je
puisse coder mes scripts, et me connecter distance au serveur en cas de besoin, que ce soit pour la
configuration ou pour rsoudre des problmes. Le site utilise l'application web open-source Prestashop,
qui permet d'automatiser la cration d'une boutique en ligne. Cet outil permet au vendeur d'avoir un
accs backoffice o il peut grer la base de donnes de manire simplifie. De nombreux modules sont
disponibles afin de pouvoir l'adapter selon les besoins. Ainsi, CAILLOT a cr un module afin de
pouvoir changer les prix des produits selon les offres concurrentes sur les marketplaces.

Figure 5: Exemple backoffice Prestashop


La principale contrainte est de grer les produits en utilisant une base de donnes Prestashop
complexe, qui possde plus d'une centaine de tables SQL (voir Annexe n1). Pour raliser ce stage, il a
fallut importer le site web en local afin de pouvoir tester les scripts. J'ai ainsi install WAMP afin de
tester les scripts sur l'ordinateur de dveloppement. En effet, il est impossible et trop dangereux de
tester les scripts directement sur le serveur en ligne, sachant que le site effectue de nombreuses
commandes chaque jours et qu'il s'agit de donnes sensibles.
Les langages principaux pour faire fonctionner un site web sont donc utiliss : HTML/CSS,
Javascript, PHP, MySQL. Dans notre cas, c'est majoritairement des scripts PHP qui seront effectus,
ainsi que le MySQL. En effet, le stage ce concentre sur la partie backoffice du site. Pour raliser le
code PHP, l'utilisation du logiciel Brackets a t ncessaire. Ce logiciel Open-source permet notamment
de dbugger du PHP l'aide de ses nombreux add-ons raliss par la communaut. Lors de ce stage, il a
t ncessaire de faire certaines configurations du site. Il m'a donc fallut accder au serveur depuis mon
ordinateur sous Windows. Pour cela, j'ai utilis un client ssh* (MobaXterm) qui est disponible sous
Windows.
Enfin, j'ai utilis le matriel de Caillot et le systme d'exploitation Windows 7 pour raliser la
maintenance du parc informatique.

10/39

3.2. Reprise du travail existant


Le stage consiste reprendre le code de mise jour des stocks des fournisseurs afin de
l'amliorer. Il faut donc une bonne comprhension globale du fonctionnement de la chane, du
fournisseur jusqu'au client du marketplace, afin de ne pas faire d'erreur. La notion d'conomie est
rcurrente, et il a fallu bien comprendre tous les calculs concernant les prix. Voici un schma explicatif
du fonctionnement global de la boutique en ligne :
Fournisseurs
WS*: Webservices

Mise jour des


offres et du statut
des commandes

Descente des
commandes sur la
boutique

WS*

Serveur Linux Debian

Marketplaces
Amazon CDiscount

FNAC

Pixmania

Prestashop
La boutique de Marcel
Cration des produits

Achat des
produits

Modules

Mise jour des


Prix d'achats et stocks

Scripts

BDD

Crons

Client
Internet

Figure 6: Fonctionnement du site : La boutique de Marcel


Tout d'abord, les fournisseurs proposent un fichier contenant les informations des produits
-gnralement au format csv- qui sont crs sur le site. Ensuite, les stocks et prix sont mis jour
quotidiennement en lisant ces mme fichiers. Pour cela, des scripts sont excuts automatiquement par
ce qu'on appelle des crons*. Ainsi, il a fallut prendre connaissance des diffrents scripts excuts par
crons, notamment pour viter des incompatibilits.
Ensuite, on gre le site l'aide de modules. Un des modules permet notamment de modifier le
prix de vente des produits en analysant les offres concurrentes des marketplaces. Les marketplaces
-espaces de vente- permettent de diffuser nos offres, c'est dire nos quantits et prix sur un produit,
mais pour cela il faut payer une commission sur chaque produit. C'est cet endroit que la plupart des
clients feront leurs achats, mme s'il est possible d'acheter directement sur le site. Les commandes
descendent alors sur le Prestashop : c'est ici qu'on y gre les ventes. Une fois les commandes traites,
les statuts remontent ensuite aux marketplaces. Tout se fait automatiquement par scripts.

11/39

3.3. Objectifs et enjeux


Suite un changement d'ERP, l'entreprise n'a plus le temps de s'occuper du site de vente La
Boutique de Marcel utilisant l'application web Prestashop. Ainsi, j'tais en charge de la maintenance
de ce dernier et de l'amliorer.
Le site de vente de l'entreprise est galement gr au sige, Clermont-Ferrand. C'est sur ce site
que les principaux objectifs du stage taient concentrs. Ainsi, il a fallut prendre en compte les
demandes du responsable de la boutique M. AMBLARD Jean-Luc, afin d'optimiser et amliorer le
fonctionnement de la boutique. C'est cette personne qui s'occupe du commerce et qui effectue les
commandes.
La Boutique de Marcel effectue de la vente aux particuliers. Comme l'indique le schma de la
page prcdente, la boutique fait la liaison entre le stock du fournisseur et celui indiqu sur le
marketplace. Ainsi, le site doit avoir les bons stocks correspondant aux fournisseurs afin d'viter des
erreurs de rupture de stock par exemple.
L'utilisation des webservices* des marketplaces permet d'agir sur les offres ou d'obtenir des
informations directement du vendeur. Le webservice de Cdiscount a par exemple t utilis par
lentreprise pour crer un module qui affiche les meilleurs offres sur un produit.

Figure 7: Bannire de la boutique de Marcel


Les enjeux impliquent la modification ou la cration de scripts PHP afin de grer des produits
venant de fournisseurs sur le site. Aussi, il faut faire la maintenance du serveur web install sous Linux
pour assurer son bon fonctionnement. M. ROBERT Cdric s'occupe de la vrification des dlais et du
travail effectu. Le rsultat attendu est donc le bon fonctionnement du site de vente en ligne. Il n'y a
aucune attente graphique, il s'agit d'un travail principalement effectu pour le back office.

12/39

4. Analyse et dveloppement
4.1. Gestion du stage
Une liste de missions m'taient confies au dbut du stage. Je vais ainsi prsenter un Gantt
rcapitulatif des tches prvisionnelles, puis je prsenterai un Gantt des tches rellement ralises, en
commentant les diffrences ou obstacles intervenus.

Figure 8: Gantt des tches prvisionnelles

La maintenance tait raliser en parallle toutes les autres tches. La premire est la prise de
connaissance du fonctionnement de l'entreprise qui est particulirement importante pour la bonne
ralisation du stage. En effet, il fallait comprendre comment l'entreprise traite les commandes, et ainsi
pouvoir proposer mon aide pour faciliter la procdure. Sans compter qu'il faut savoir quoi
correspondent les donnes manipules pour ne pas commettre d'erreur. S'en suit la mise en place de
l'environnement de dveloppement, avec notamment le transfert du site de vente du serveur au rseau
local.
Le plupart des tches sont des scripts PHP raliser, mais il y a aussi beaucoup de
manipulations de l'interface vendeur du Prestashop. En effet, on y manipule notamment les modules qui
permettent de mettre jour les stocks de produits vers les marketplaces.
Pour ce qui est de la maintenance du parc informatique je n'avais que peu de connaissances, il
s'agissait donc au dbut surtout d'un apport de connaissances par mon matre de stage, afin que je
puisse le faire en autonomie par la suite.
La page suivante va prsenter les tches rellement effectues, en expliquant les diffrences
notables. En effet, comme dans tout projet certains obstacles ont t rencontrs.

13/39

Certaines tches n'ont pas t ralises et d'autres ont t rajoutes. Voici ci-dessous le Gantt des
tches relles :

Figure 9: Gantt des tches relles


Le transfert du site tait plus compliqu que prvu et a pris quelques jours de plus. La
ralisation du script de mise jour s'est finalement faite en parallle de l'importation des produits des
fournisseurs car il fallait crer les produits manquants au plus vite pour plus de ventes.
Cependant, le fichier qui a t fourni pour l'importation n'tait pas le bon. Ainsi, il a fallut
supprimer en masse les produits. Cette importation qui comprenait plus de 10 000 produits a cr
quelques complications au niveau du serveur qui est devenu trs lent. J'ai donc tent de l'optimiser et de
le configurer pour rsoudre le problme.
L'annulation de la vente d'une marque a t ajoute. En effet, il a fallut retirer de la vente les
produits d'une marque au plus vite car cette marque n'tait pas autorise sur internet sauf sous contrat.
Aussi, la tche de modification du module Market Manager pour Pixmanian'a pas pu tre
ralise. Le but de la tche tait d'afficher les offres concurrentes de Pixmania pour modifier le prix de
vente en fonction. Malheureusement, leur webservice ne permet pas d'obtenir les offres concurrentes.
Afin de remplacer cette tche, j'ai du comprendre le fonctionnement des plates-formes de
dveloppement collaboratives dans le but de proposer le meilleur support pour les projets de
dveloppement de l'entreprise. Il s'agissait d'une initiation au concept de Versionning* , c'est dire
la gestion des diffrentes versions du logiciel.

14/39

4.2. Utilisation d'un debugger PHP


Afin de raliser des scripts PHP dans un environnement complexe, il est utile d'utiliser un
debugger, c'est dire un outil qui permet de suivre l'volution des instructions l'aide de points d'arrts.
Ce n'est gnralement pas propos par dfaut par les logiciels d'dition de texte. Dans mon cas j'ai
utilis le logiciel Brackets. Cet diteur de texte open-source propose de nombreux modules raliss par
la communaut pour pallier aux diffrents manques. Il existe ainsi le module Php debugger. Ce module
utilise l'extension PHP xdebug qu'il faut configurer.
Pour effectuer le debug du script, on ajoute un paramtre l'url :
http://chemin.php?XDEBUG_SESSION_START=xdebug
On commence donc une session de debug, le script est arrt la ligne que l'on a indiqu dans
l'diteur de texte, le breakpoint . Le breakpoint est modlis par un point rouge dans la capture :

Figure 10: Capture d'cran de brackets et du module PHP Debugger


On remarque que la valeur de la variable $a est indiqu dans le rectangle en bas droite. On a
alors le choix entre cinq commandes pour observer l'volution de la variable :
Step into pour passer l'instruction suivante en entrant dans la fonction (sur la capture dans test )
Step over si on souhaite passer directement toutes les instructions de la fonction
Step out si on souhaite sortir de la fonction.
Run pour excuter tout le script.
Stop pour annuler l'excution.

15/39

4.3. Scripts PHP


4.3.1. Mise jour des stocks fournisseurs
Lors de mon arrive dans l'entreprise, la mise jour des stocks fournisseurs tait dj effectue
l'aide de diffrents scripts. En effet, on avait un script diffrent pour chaque fournisseur. Cependant,
une trs grande partie du code tait similaire chaque fois. Ainsi, il tait possible de runir tous ces
scripts en un seul, tout en permettant l'ajout d'un fournisseur de manire plus rapide que la rcriture
entire d'un script.
Chaque fournisseur met notre disposition un fichier au format .csv, qui recense tous ses
produits. Le script de mise jour PHP n'a besoin que de quelques colonnes dans ce fichier afin de
raliser la mise jour. Ainsi, la solution pour runir les scripts est de renseigner quelque part
l'emplacement des diffrentes colonnes utiles pour que le script puisse savoir o trouver les bonnes
informations. La solution que j'ai retenu et d'intgrer ces informations dans un fichier texte, qui permet
une dition rapide. Il suffit de renseigner dans ce fichier les informations ncessaires, et le script va
savoir comment fonctionner pour chaque fournisseur. Voici ci-dessous un exemple de fichier texte :

/*** Fichier texte pour dfinir les paramtres d'import des fournisseurs.
/*** Attention ne pas laisser de ligne vide
/*** Les lignes qui commencent par "/***" suivies d'un espace ne sont pas prises en compte.
/*** Ci-dessous les champs dans l'ordre, # pour non dfini.
/*** |
/*** Nom Fournisseur, ID du fournisseur dans la BDD, Chemin du .csv ,ean colonne, qtt colonne, "par
combien" colonne, prix d'achat colonne, Quantite minimum, frais de port
/*** NOM ID CSV EAN QTT PAR_CB PRIX QTT_M F_DP
/*** |

FINDIS 3 http://www.laboutiquedemarcel.com/cheminFindis.csv 0 1 2 3 2 10.00


GPDis 1 http://www.laboutiquedemarcel.com/cheminGpdis.csv 6 7 # # # #
Thermor 26 http://www.laboutiquedemarcel.com/cheminThermor.csv 0 1 # # # #
Figure 11: Fichier texte utilis pour la mise jour des produits
Ainsi, chaque ligne est ddie un fournisseur. On notera la prsence du systme de
commentaires : A chaque fois qu'une ligne commence par /*** elle n'est pas prise en compte par le
script PHP. Si un champs est non renseign, il suffit de mettre # .

16/39

Nous utilisons le champs ean13* afin d'identifier un produit. Ainsi les deux champs
principaux prendre en compte sont l'ean13 et le stock du produit. Voici un schma pour expliquer le
fonctionnement de l'algorithme :
CSV par FTP
CSV par FTP
CSV par Macro

nne

de
l'E

AN
:0

du
stoc
k

: 1

Connexion la base de donnes


Boucle sur chaque fournisseur
Boucle sur chaque produit
Maj du stock
Maj ventuelle du prix
Suppresion des inexistants
Fermeture de la connexion

EAN: 6

Col
o

nne

Stock: 7

Col
o

nne
Colo

Fichier
texte

0
AN:
'E
l
de

k: 1
stoc
u
d
ne
olon

Lecture

Script
PHP

Mise jour des produits


BDD
Suppression de ceux
qui n'existent plus

rFigure 12: Schma du fonctionnement de la mise jour des stocks fournisseurs


Comme on le constate sur le schma, il est dsormais ais de rajouter un fournisseur partir du
fichier texte. Il est ncessaire d'y renseigner le nom du fournisseur, dans le cas o il serait ncessaire de
faire un traitement spcifique un fournisseur.
Il y a une spcificit pour rcuprer le fichier .csv du fournisseur Findis. En effet, le fichier se
situe sur leur site web. Cependant, ce serait une trop grande perte de temps de devoir rcuprer ce
fichier chaque jour. En effet les stocks doivent tre jour quotidiennement pour viter des problmes
de ruptures de stock. C'est aussi pour cela que lorsque un produit n'est qu'en deux exemplaires,
l'entreprise supprime ce produit de la vente. Cela vite le risque de vendre le produit alors qu'il n'est
plus disponible entre deux mises jour de stocks.
Pour pallier au problme de Findis, l'entreprise utilise ce qu'on appelle des macros. C'est dire
qu'on donne l'ordinateur des instructions qui simulent un internaute. Ainsi chaque jour, un logiciel
appel Automation Anywhere va rcuprer le fichier Findis sur le site, contrairement GPdis et
Thermor qui fournissent le fichier par FTP*. Cependant la simulation n'est pas parfaite. En effet, l'accs
au site se fait par un mot de passe qui change tous les trois mois. Or, la suite d'instructions utilisait le
mauvais mot de passe. En essayant de le changer, les instructions ne fonctionnaient plus. Cela est du au
fait que le logiciel ne cliquait plus au bon endroit : si on lance le logiciel avec un cran d'une autre taille
que celui d'origine, l'instruction de clique n'a plus les bonnes coordonnes pour la souris. Ainsi pour
rsoudre ce problme il a fallut adapter les coordonnes l'cran.

17/39

Le script PHP est excut sous l'environnement Prestashop. Ainsi, il faut utiliser certaines
classes utilitaires pour modifier la base de donnes complexe sans oublis de tables ou champs. Voici
donc par exemple comment mettre jour le stock :
StockAvailable::setQuantity($idFinal,0,$qty);
Ici, je fais appel une classe PHP oriente objet fournie par Prestashop pour modifier les
quantits. J'utilise la mthode public static setQuantity, qui a besoin de 3 paramtres :

L'ID du produit dans la base de donnes

L'ID de la version du produit (si un produit existe en plusieurs couleurs par exemple)

La quantit

Le script est ralis de manire envoyer un mail automatiquement la fin de son excution.
Ainsi, chaque changement est indiqu dans une variable $message. Puis l'envoie du mail ce fait comme
ceci :
mail($to, $subject, $message, $headers);
En plus du message, il faut galement renseigner 3 autres champs : $to pour le destinataire,
$subject pour l'objet, et $headers pour donner des informations de traitement du mail.
Pour ce qui est de la suppression des produits non mises jour, le script utilise un champs
boolean dans la base de donnes. Au dbut du script, on met tous les produits du fournisseur avec une
valeur FALSE . chaque produit prsent dans le fichier .csv, on lui met une valeur TRUE .
Ainsi, la fin de la mise jour du fournisseur, on supprime tous ceux qui sont toujours FALSE .
Voici ci-dessous les requtes pour changer ce champs :
mysql_query('UPDATE ps_product SET price_updated=0 WHERE id_supplier='. $f_id .';');
mysql_query('UPDATE ps_product SET price_updated=1 WHERE id_product ='. $idFinal . ' ;');

Puis on retire de la vente les produits dont price_updated vaut 0.


StockAvailable::setQuantity($id,0,0);

18/39

Ensuite il ne reste plus qu' excuter ce script rgulirement et automatiquement tous les jours.
Pour cela, il est possible d'utiliser ce qu'on appelle des crons. Un module prestashop est disponible pour
faciliter l'utilisation de ces crons. Il faut renseigner l'url excuter, ainsi que la frquence. Voici une
capture d'cran pour mieux comprendre :

Figure 13: Capture d'cran du module de cron Prestashop


Une fois l'ajout effectu, nous obtenons une ligne qui ressemble cela :
http://www.laboutiquedemarcel.com/chemin.php

30 12,19 * * *

2015-05-31 12:30:01

On voit donc le chemin du fichier excut, la frquence, et la date de dernire excution. En ce


qui concerne la frquence, le premier nombre correspond aux minutes, la deuxime aux heures, puis au
jours du mois, aux mois et enfin aux jours de la semaine. Ainsi dans notre cas, le script sera excut
tous les 12h30 et 19h30.

19/39

4.3.2. Mise jour du prix de vente


Afin de faciliter l'utilisation du Prestashop, j'ai fais une analyse des besoins auprs du
responsable de la boutique. Il en est ressorti qu'il fallait parfois changer le prix de vente lorsqu'un
fournisseur change son prix d'achat. En effet, si le prix d'achat auprs du fournisseur augmente
beaucoup et que le prix de vente reste inchang, il y a risque de vendre dficit. L'objectif tait donc de
mettre le produit un taux de marge minimum de 5%.
Pour raliser cet objectif, j'ai observ le fonctionnement du module Prestashop Product
Manager cre par M. ROBERT Cdric en collaboration avec la socit Elanz. En effet, dans ce
module il est possible de modifier le prix de vente d'un produit. Voici une capture d'cran de l'utilisation
du module :

Figure 14: Capture d'cran du module Product Manager


Un des points forts de Prestashop est sa modularit. En effet, par le biais d'hritage des classes
PHP oriente objet, il est possible la communaut de crer des modules qui ajoutent des
fonctionnalits selon les besoins. On utilise ensuite la notion de hook -crochet- pour rcuprer
certains vnements d'actions ou d'affichages et ajouter sa personnalisation.
En analysant ce module j'ai ainsi pu rcuprer de prcieuses informations concernant la
modification du prix de vente d'un produit Prestashop, directement en passant par le code et non le
backoffice.

20/39

Pour changer le prix de vente et le mettre 5% de taux de marge, il a fallut raliser un petit
calcul. Le voici :
$prixVente = (100/(100-(5)))*($buyPriceTTC+$ecoTaxTtc+$com);
Il est ainsi possible de connatre le prix de vente d'un produit pour avoir un taux de marge 5%.
Pour cela il faut renseigner le prix d'achat TTC, la taxe co TTC, et enfin la commission prleve par le
marketplace, dans notre cas on se base sur celle d'Amazon. Pour rcuprer les informations ncessaires,
j'ai utilis une classe utilitaire de Prestashop.
Une classe trs utile est Product. C'est avec cette classe et ses mthodes que l'on va rcuprer
des informations utiles sur un produit, notamment si l'on souhaite mettre jour le prix de vente. Voici
ci-dessous comment instancier un objet de la classe Produit partir de son identifiant :
$p_product = new Product($idFinal, null, $id_lang, $id_shop,
Context::getContext()->shop->setContext(Shop::CONTEXT_SHOP, $id_shop));
Il ne faut pas oublier de dfinir l'ID de la langue, et l'ID de la boutique. En effet, Prestashop
propose un systme de multi-boutique. Sans oublier de renseigner le contexte. Une fois le produit
instancier, On rcupre diverses informations.
Le calcul du nouveau prix de vente est effectu dans le script de mise jour des produits : c'est
ce moment l que le prix d'achat peut potentiellement changer. Ainsi on ajoute la condition suivante :
if($tauxMarge<4.99)
changePrice($id,$buyPriceTTC,$prixVente, $priceNoReduc,$com,$ecoTaxTtc,$marge,$tauxMarge);
La condition vrifie si le taux de marge est infrieur 4.99 car le script n'arrive parfois pas
mettre un taux de marge de 5% exactement. Ainsi, le script referait le calcul du prix de vente la
prochaine mise jour, ce qui n'est pas utile.

21/39

C'est la fonction changePrice cite prcdemment qui va modifier les valeurs de la base de
donnes. Voici l'algorithme de la fonction :
Affecter (prix sans rduction nouveau prix de vente) la nouvelle remise
Si remise positive Alors
Si le produit ne possde aucune remise Alors
Insertion de la nouvelle remise
Sinon
Suppression des remises
Insertion de la nouvelle remise
Fin Si
Sinon
Si le produit ne possde aucune remise Alors
Mise jour du prix de vente
Sinon
Suppression des remises
Mise jour du prix de vente
Fin Si
Fin Si
Pour obtenir le prix sans rduction, j'ai utilis une mthode public de la classe Product :
$priceNoReduc = $p_product->getPriceWithoutReduct();
Il est important de grer les remises, pour garder un affichage cohrent sur le site. En effet, s'il y
a une promotion il faut l'afficher, mais dans le cas contraire cela n'aurait pas de sens. Voici un exemple
d'affichage du prix d'un produit sur le front office :

Figure 15: Affichage prix produit

22/39

4.3.3. L'export des commandes


Afin que l'entreprise puisse grer la totalit des commandes, une de mes tches tait d'exporter
les commandes Prestashop dans un fichier afin qu'elles soient importes dans l'ERP. Pour cela, il faut
un fichier qui permet de traiter facilement de nombreuses lignes de donnes. Le fichier au format .csv
semblait tre la meilleure solution.
Les commandes sont toutes accessibles partir de l'interface vendeur. Il existe mme un bouton
pour l'exportation csv, cependant il n'y a pas toutes les informations ncessaires.

Bouton Exportation

Figure 16: Liste des commandes sur l'interface vendeur Prestashop

Le fichier cr par Prestashop ne contient pas les informations concernant les produits vendus.
En effet, deux tables de la base de donnes sont prendre en compte. La table ps_orders et la table
ps_order_detail. La premire a pour rle de prsenter l'en-tte de la commande, et la seconde indique
tous les dtails, notamment tous les produits de la commande. La table ps_order_detail n'est donc pas
gr par le Prestashop.

23/39

Le script ralis prend en compte les produits de chaque commande. Ainsi, on boucle sur les
commandes, puis sur chaque produit de la commande. On obtient ensuite deux fichiers csv diffrents,
un pour chaque table exporte.
On insre la premire ligne correspondant aux noms des colonnes comme ceci :
$fields= array("Commande ID","Reference","Adresse Livraison 1","Adresse Livraison 2",
"Code Postal","Ville","Client","Total","Paiement","Etat","Date");
fputcsv($foutput,$fields,$delimiter=';');
fputcsv prend trois paramtres :

le flux du fichier en criture (option w -write-)

un tableau des donnes insrer

un dlimiteur, ici le point virgule. En effet, un fichier csv spare les donnes avec
un dlimiteur dfinit, bien souvent le point virgule mais cela peut tre un espace
ou une virgule. Les logiciels de traitement de tableur savent ainsi comment
placer les donnes dans les cases.

Suite l'insertion des donnes, j'ai rencontr une erreur l'ouverture du fichier sous Microsoft
Excel. En effet, le logiciel n'arrive pas ouvrir le fichier .csv si la toute premire donne est gale
ID . Ainsi, j'ai du remplacer ID par Commande ID .
Une fois cette premire ligne insre correctement, on peut insrer les donnes rcupres dans
la base de donnes. Il y a toutefois une particularit dans le script. Sachant qu'il sera excut
rgulirement, et dans un soucis d'optimisation, on souhaite exporter uniquement les nouvelles
commandes. Pour cela, on ajoute un champs is_exported de type boolean dans la table ps_orders,
qui indique si la ligne a t exporte ou non. On insre alors uniquement les commandes ayant une
valeur false dans le csv. Une fois la ligne insre, on passe la valeur du champs true :
mysql_query("UPDATE ps_orders SET is_exported=1 WHERE id_order=".$id_order);

24/39

4.3.4. Annulation de certains produits


Une des missions raliser d'urgence tait d'annuler la mise en vente des produits d'une marque.
En effet, il s'est avr que cette marque refusait la vente de ses produits sur internet sauf sous contrat.
Ainsi il a fallut mettre 0 les stocks d'une centaine de produits le plus rapidement possible. Leur
suppression sur les marketplaces aurait t trop lente, et il est prfrable de garder les informations des
produits dans le cas d'une obtention de contrat par exemple ou d'un changement de politique de la
marque.
Pour raliser cela, je suis pass par le script de mise jour des stocks et prix d'achats
fournisseurs. Sur chaque produit, on vrifie s'il s'agit de la marque en question, et si oui, on met son
stock 0. Ainsi, les stocks seront 0 sur les marketplaces galement suite la mise jour des offres
rgulire.
On rcupre l'id pour instancier le produit de la mme manire que pour la mise jour du prix
de vente :
$p_product = new Product($idFinal, null, $id_lang, $id_shop,
Context::getContext()->shop->setContext(Shop::CONTEXT_SHOP, $id_shop));
On peut ensuite rcuprer le nom de la marque l'aide d'une classe utilitaire Prestashop. On
donne l'identifiant de la marque du produit, et la mthode getNameById de la classe Manufacturer
renvoie le nom. On remet ensuite 0 les stocks en utilisant la classe StockAvailable.
if((Manufacturer::getNameById((int)$p_product->id_manufacturer))=='NOM DE LA MARQUE')
StockAvailable::setQuantity($idFinal,0,0);
En cas de besoin de l'annulation d'une nouvelle marque, il suffira de rajouter un oprateur
logique or , aussi not || de la manire suivante :
Si la marque du produit vaut Marque 1 OU Si la marque du produit vaut Marque 2 Alors
Mettre les stocks 0
Fin Si

25/39

4.4. Administration du serveur Linux


Durant le dveloppement sur la boutique en ligne, il a parfois t ncessaire de toucher
directement au serveur Linux qui hberge le site. Pour accder ce serveur distant sous Windows, j'ai
utilis le logiciel MobaXterm qui permet d'effectuer des commandes Linux et notamment le ssh* qui
permet de se connecter distance au serveur.

Figure 17: Capture d'cran de MobaXterm

26/39

4.4.1. Rcupration d'un fichier fournisseur


Tout d'abord, il a t ncessaire de modifier lgrement le fichier de configuration vhost.conf
d'Apache. En effet, le fournisseur Gpdis fourni le fichier au format csv de ses stocks dans un dossier
qui lui est ddi. Cependant, ce dossier se trouve en dehors de l'arborescence du site. On ne peut
malheureusement pas indiquer le chemin du fichier sur le serveur directement car il se trouve au dessus
de la racine du site. La solution est de crer un Alias de cette manire :
Alias /gpdis /chemin_du_dossier_depot_sur_le_serveur
Ainsi, quand on veut accder au fichier gpdis notamment dans le script de mise jour, on crit :
http://www.laboutiquedemarcel.com/gpdis/fichier.csv
Il existe une autre solution qui est de crer un lien symbolique du fichier dans l'arborescence du site.
Cette solution ncessite d'autoriser les liens symboliques dans le fichier vhost.conf :
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
Il suffit alors de crer un lien symbolique de cette manire en commande Linux:
ln s /chemin_du_dossier_depot_sur_le_serveur/fichier.csv /chemin_site/notreLien.csv
Sans oublier de redmarrer Apache pour prendre en compte le changement de configuration.
Finalement c'est la premire solution que j'ai mis en uvre.

27/39

4.4.2. Rsoudre le problme de lenteur


Suite l'importation de plus de 10 000 produits d'un fournisseur sur la boutique, le serveur a eu
de grosses lenteurs. Le premier rflexe donc t de se connecter par ssh afin d'effectuer une
surveillance (aussi appel monitoring) de l'utilisation des ressources. Il suffit de faire cette commande
sur MobaXterm :
ssh username@hostname
Ensuite, la commande htop permet de surveiller l'utilisation de la mmoire et du CPU :

Figure 18: Capture d'cran de la commande htop


Sur cette capture, le serveur semble plutt stable car il y a trs peu de CPU utilis sur le cur 1
et 2, et il reste plus de la moiti de la mmoire vive (RAM). La ligne Load Average confirme cet
tat stable, car elle indique l'utilisation du CPU moyenne sur 1, 5 et 15 minutes respectivement. 1,00
reprsente 100% d'utilisation, ici le CPU est donc quasiment inutilis.
La commande iotop est galement utile car elle permet d'observer le nombre d'octets lus ou
crits par seconde sur le serveur :

Figure 19: Capture d'cran de la commande iotop


Sur cette capture, le serveur semble galement stable car il n'y a pas d'octets lus, et seulement
4ko/s en criture (ou 28ko/s si on considre le TID* 1245).
Ces deux commandes affichaient des valeurs bien plus inquitantes aprs l'importation. En effet,
des processus Apache crivaient normment sur le serveur, et avec la commande htop on constatait
que le serveur utilisait le Swap, qui est utilis par le serveur en cas dernier recours si la RAM est pleine.

28/39

On a finalement dcouvert que l'espace disque tait utilis 100% sur la racine en utilisant la
commande df , qui affiche l'espace disque utilis en pourcentage. Une solution pour diminuer ce
pourcentage tait de mettre de ct le cache des images. Cela a permis un gain d'espace non
ngligeable. Cependant, cela n'a pas rsolu le problme de lenteur. Il s'est avr qu'on ne pouvait plus
crer de fichier pour manque d'espace disponible, alors que cela avait t grandement diminu.
Un second problme se cachait dans le nombre de nuds d'index, aussi appel inode, qui est
une structure contenant le nom des fichiers. En effet, le serveur ne dispose pas d'un nombre illimit de
nuds, or l'importation des 10 000 produits en avait trop cr. Ainsi, la commande df -i affichait
100% alors que la commande df n'affichait rien d'inquitant, que 70%. Voici un exemple :

Figure 20: Capture d'cran de la commande df avec ou sans l'option -i


La suppression de fichiers sur le serveur a donc permis de rsoudre ce problme qui a
grandement arrang ces lenteurs.
La lenteur persistait pour un des employs. Dans ces cas-l, il faut observer la diffrence
directement sur la machine concerne. Les solutions sont parfois plus simples qu'il n'y parat,
l'utilisateur avait rgl son interface vendeur pour afficher trop de produits :

Figure 21: Nombre de produits afficher

29/39

4.4.3. dition des crons


Un problme est survenu concernant les commandes importes du marketplace Cdiscount. En
effet, celles-ci taient parfois dupliques sur le Prestashop. Ces commandes redescendent sur le site
l'aide d'un script excut automatiquement, par crons.
Pourtant, les logs concernant les crons ne montraient rien d'incohrent. Il est possible de les voir
avec cette commande :
grep CRON /var/log/syslog
On y voit que le module pour faciliter l'utilisation des crons du Prestashop excute un script
toutes les minutes, pour voir s'il n'a pas de scripts lancer lui-mme. C'est avec ce module qu'on lance
le script pour l'importation des commandes Cdiscount.
Le module tant non officiel, il tait possible que la duplication s'effectue cette tape. Ainsi, la
solution suppose tait de mettre les scripts de Cdiscount directement dans le fichier de cron du serveur
plutt que de passer par le module.
Ainsi, on dite le fichier de cette manire :
crontab -e -u user
On passe par la commande crontab plutt que d'diter directement le fichier, car cela permet une
vrification syntaxique avant de valider l'dition. L'option -e permet d'indiquer qu'on souhaite diter le
fichier, et -u est utilis pour spcifier l'utilisateur qui modifie le fichier. On crit la ligne suivante :
0**** curl "https://www.laboutiquedemarcel.com/chemin.php?param1=val"
On indique d'abord la frquence de la mme manire qu'avec le module. Ici, on excute donc le
script toutes les heures piles, tous les jours du mois, tous les mois, et tous les jours de la semaine.
On indique ensuite la commande faire. Ici, on utilise curl qui est installer et qui permet
d'excuter l'url indique entre guillemets.
Depuis, les commandes ne sont pas dupliques, il s'agissait donc srement d'une erreur avec le
module qui devait avoir un conflit avec l'environnement Prestashop.

30/39

4.5. Dcouverte d'un logiciel de gestion de versions


La tche prvisionnelle qui consistait rcuprer les offres concurrentes du marketplace
Pixmania par son webservice n'a pas pu tre ralis car ces informations ne sont pas disponibles. Pour
remplacer cette tche, j'ai eu pour mission d'analyser quelle serait la meilleure solution pour la gestion
de versions des diffrents projets de dveloppement de l'entreprise. Cela me permet notamment d'avoir
une premire approche sur le fonctionnement d'un dveloppement en quipe. Je me suis ainsi beaucoup
document concernant les concepts autour des gestions de versions.
Les deux principaux systmes de gestions de versions sont Git et Subversion. Cependant, ils
fonctionnent d'une manire bien diffrentes. Git permet un dveloppement dcentralis, c'est dire qu'il
est possible de coder hors connexion et de travailler de manire dsynchroniser. Il y a alors plusieurs
dpts. Cela permet donc en plus d'apporter de la scurit, car on ne dpend plus d'une seule machine.
En revanche, avec Subversion il n'existe qu'un dpt. Mme si la gestion de versions est simplifie,
cela apporte de nombreux dsavantages : pas de dveloppement sans connexion rseau, et il est
compliqu de dvelopper exprimentalement. Git semble tre le choix le plus avantageux.
Le dveloppement va bientt devoir se faire depuis un serveur appartenant Caillor. Ainsi, j'ai
recherch quel logiciel semblait le plus appropri pour grer Git. Il en est ressorti que Gitlab est une
bonne solution open-source pour grer les dpts via le web, avec une grande communaut. De plus, Il
est possible de contrler des projets privs. Il existe une version gratuite et une version entreprise,
cependant la version gratuite est suffisante, la version entreprise est destine aux gros dveloppements
avec de nombreux codeurs, ce qui n'est pas le cas ici.
Le serveur qui accueillerait ce logiciel serait le mme que celui de la boutique. Ainsi, avant
d'installer Gitlab je devais tout d'abord vrifier sur une machine virtuelle qu'il n'y aurait pas conflit.
Cela implique l'installation de Oracle VM VirtualBox. Ce logiciel permet de crer des machines
virtuelles, et donc d'installer le systme d'exploitation dsir. Gitlab n'est pas disponible sur Windows,
j'ai donc install Debian Jessie 8.0, la dernire version stable. Voici un exemple d'interface de
VirtualBox, ici avec deux machines virtuelles, Debian Wheezy 7.0 et Android 4.3 :

Figure 22: Capture d'cran de VirtualBox

31/39

Une fois la machine virtuelle installe, il faut installer le serveur http Apache puis Gitlab pour
reproduire la situation qui pourrait faire conflit sur la boutique en ligne. J'ai donc effectu ces
commandes pour installer Apache :
sudo apt-get update
sudo apt-get install apache2
On peut alors vrifier qu'Apache fonctionne en se rendant l'ip du serveur : http://1.2.3.4 .
On installe ensuite Gitlab-Omnibus, c'est dire le pack qui permet d'installer tout ce qui est
ncessaire au fonctionnement du logiciel. Dans ce pack, il y a Nginx, qui est un autre serveur http. C'est
notamment cause de ce service qu'il y a des risques de conflits. En effet, Nginx et Apache ne doivent
pas couter le mme port (canal rseau), qui est par dfaut 80 pour http.
On suit donc le tutoriel disponible sur le site du logiciel pour l'installation, et on s'arrte avant le
lancement de Gitlab. Il faut maintenant changer le port d'coute de Gitlab, et plus prcisment du
serveur http Nginx utilis. Pour cela, on change l'url d'accs Gitlab dans son fichier de configuration,
et notamment la ligne external_url dans le fichier /etc/gitlab/gitlab.rb pour spcifier le bon port, ici
on prend par exemple 8090 :
external_url "http://gitlab.example.com:8090"
Cela doit modifier automatiquement le port d'coute de Nginx d'aprs la documentation fournie.
Ainsi, lorsqu'on dmarre Gitlab, on doit avoir un rsultat comme ci-dessous lorsqu'on accde l'url
spcifie dans le fichier de configuration :

Figure 23: Capture d'cran du tableau de bord Gitlab


Ce n'est actuellement pas fonctionnel. La raison n'a toujours pas t trouve lors de la rdaction
de ce rapport, mais j'espre dcouvrir la solution avant la fin du stage.

32/39

5. Bilan Technique
Tout d'abord, j'ai transfr le site web install sur un serveur vers un environnement de
dveloppement local. Certaines modifications dans la base de donnes du site tait ncessaire.
J'ai alors ralis diffrents scripts utilisant le langage PHP afin d'amliorer le fonctionnement du
site de vente de l'entreprise. Pour cela j'ai install un debugger. J'ai ainsi cr un script afin de faciliter
l'ajout de fournisseurs concernant la mise jour des stocks et prix de ventes. J'ai galement amlior
cette procdure, en l'optimisant et en trouvant certains bugs. J'ai ensuite cr un algorithme afin que le
taux de marge minimum des produits soit 5%. Un autre script correspond l'exportation des
commandes dans un fichier csv. J'ai ensuite annul la mise en vente des produits d'une marque. Un
dernier script a t ralis pour supprimer des produits en masse du Prestashop.
J'ai galement ralis de la configuration et du monitoring sur le serveur qui hberge le site,
notamment afin de reprer les problmes de lenteurs. Aussi, j'ai fait beaucoup de manipulations sur
l'interface vendeur du Prestashop. Ainsi, j'ai utilis des modules pour grer les marketplaces. Par
exemple, il fallait associer les catgories de produits du Prestashop celles du marketplace. Le
backoffice a galement t utilis pour donner l'accs restreint un agent commercial qui voulait
raliser un audit des statistiques de la boutique. Il fallait galement lui donner un accs restreint la
base de donnes l'aide de PhpMyAdmin.
J'ai manipul Microsoft Excel afin de prparer les fichiers csv pour la cration des produits. En
effet, il faut que le fichier soit importable par Prestashop. J'ai donc effectu des calculs sur le logiciel
Excel, par exemple pour obtenir les bons frais de port selon le poids du produit. Il fallait galement lier
les colonnes en faisant des rfrences entre les feuilles de calculs. Afin de vrifier qu'il n'y avait pas de
doublons, ou parfois pour vrifier certaines donnes, j'ai effectu des requtes SQL sur les tables depuis
PhpMyAdmin, qui donne un accs simplifie aux bases de donnes.
La maintenance du parc informatique a t une grosse partie du stage. Par exemple, j'ai chang
la passerelle rseau et les DNS* de tous les ordinateurs de l'agence de Clermont-Ferrand suite un
changement d'oprateur. Aussi, j'ai effectu le tri des cartouches d'imprimantes, ou encore du vieux
matriel informatique. J'ai galement effectu quelques manipulations matrielles, telle que la
rcupration des donnes d'un disque dur interne d'un ordinateur qui ne fonctionnait plus, ou encore
l'ajout de mmoire vive un ordinateur. De plus, j'ai effectu l'installation de nouveaux ordinateurs sur
le rseau. J'ai aussi configur des ordinateurs pour qu'ils puissent accder aux imprimantes grce leur
ip. Il y avait certains ordinateurs rparer, cause de problmes lis au systme d'exploitation
Windows par exemple.

33/39

6. Conclusion
Ce stage a t pour moi une toute nouvelle exprience. En effet, j'ai t confront un
environnement o il faut manipuler des prix et des stocks. Cela pouvait avoir des consquences directes
sur le chiffre d'affaire de l'entreprise, et donc cela tait pour moi assez stressant, il tait important de
garder son sang-froid afin de rsoudre les diffrents problmes.
Durant ce stage, j'ai appris qu'on attend beaucoup de polyvalence d'un informaticien, et c'est
d'autant plus vrai dans une PME. En effet, il n'y a pas que la programmation mais toute la rparation
matrielle, la configuration des ordinateurs et leur installation. Il fallait aussi faire l'administration des
serveurs et rseaux, ou encore effectuer la gestion des utilisateurs.
La formation de l'IUT m'a permis d'tre l'aise avec la plupart des concepts ncessaires la
bonne ralisation des tches, avec toutefois un petit manque concernant la rparation matrielle.
videmment le stage est aussi l pour apprendre de nouvelles choses, et il est difficile de connatre
toutes les notions dans un univers aussi vaste que l'informatique.
J'ai galement t confront des demandes utilisateurs, que je devais prendre en compte afin
d'amliorer le site de vente. Ainsi, j'ai eu l'occasion d'amliorer ma communication et mon
professionnalisme. Il a fallut aussi de l'autonomie, puisqu'il ne s'agissait pas d'un travail en quipe ou
encadr par un professeur. En effet, j'tais responsable de la maintenance informatique du site de vente
de l'entreprise, et c'tait donc moi de rsoudre les bugs le plus rapidement possible par exemple.
Selon moi, une formation avec un stage est trs important et utile. En effet, le monde scolaire et
le monde du travail sont deux choses compltement diffrentes, et avoir une premire approche en
entreprise permet de mieux cerner ses attentes futures.

34/39

7. English Summary
I have done ten weeks of internship in the company Caillot, settled in Clermont-Ferrand. I was
in the computer science's service, and my tutor was Mr. Cdric ROBERT, the chief of the service. The
main goal was to improve the update of the products from suppliers to the website of the company.
I needed to be polyvalent, as I had to do the computer maintenance, together with the
development of PHP scripts and the server administration. I was stressed since I had to manipulate the
prices and stocks of products. It was important to stay calm to resolve bugs.
In order to perform the tasks, I needed to document myself a lot autonomously. Then I
developped some scripts. I had to retrieve the existing scripts to both improve and optimize them. I
improved a script so you can add as much suppliers as you want in the update easily, using a text file.
Then I developped a script so the products always have at least 5% of margin. I created another script
in order to remove a manufacturer of our sales.
As my tutor needed to develop the software that all the company uses, also called ERP, he
hadn't the time to handle the website. Therefore, I was responsible of it and I needed to manipulate the
seller interface. I also imported new products with a csv file, so I had to make some calculations in
Microsoft Office Excel.
Moreover, I have done the computer maintenance. For example, I had to change the network
configurations of all the computers, since our company changed their operator. I have done many
manipulations like formatting a computer or tranfer datas from an internal hard disk to a new computer.
In the end, I learnt a lot of things that will help me in my professional life. There are many
differences between a work in school and in a company. For example, at school there are never
unexpected obstacles. Moreover, it was up to me to find which technology to use to carry out the work.

35/39

8. Bibliographie
Documentation sur diverses dfinitions techniques
https://en.wikipedia.org
https://fr.wikipedia.org
Documentation pour Prestashop
http://doc.prestashop.com/display/PS16/English+documentation
Aide pour rsolution de bugs ct serveur
http://serverfault.com/
Aide pour rsolution de bugs en gnral
http://stackoverflow.com/
http://www.commentcamarche.net/
Diverses traductions
https://translate.google.com
Instructions pour l'installation et la configuration de Gitlab
https://about.gitlab.com/downloads/
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md
Documentation pour rparations diverses
https://support.microsoft.com/fr-fr
Support des modules Prestashop des marketplaces
http://blog.common-services.com/
Diverses informations concernant le langage PHP
http://php.net/manual/en/
Configuration Apache
http://httpd.apache.org/
Organigramme et schma rseau fournis par l'entreprise
Diverses informations sur l'entreprise Caillot
http://www.caillot.fr/

36/39

9. Lexique
Backbone :
Interconnecte stratgiquement le rseau informatique, l'aide d'un routeur puissant, qui forme
alors un grand axe de passage des donnes. Gnralement un fournisseur internet en hberge.
Cron :
Cron est un programme Unix pour excuter automatiquement des scripts, des commandes ou
des logiciels une frquence voulue. Cron est le diminutif de Crontab qui est lui-mme le diminutif de
Chrono table, qui signifie table de planification.
DNS : Domain Name System
-Systme de noms de domaine- C'est un service qui traduit un nom de domaine en adresses IP.
Ean13 :
Il s'agit de lidentifiant code barres des produits utilis dans le monde entier. Un ean13 est
compos de 13 chiffres.
ERP : Enterprise Resource Planning
Logiciel de gestion des affaires, qui intgre de nombreuses applications afin de rpondre aux
besoins d'une entreprise.
FTP : File Transfer Protocol
-Protocole de transfert de fichiers- C'est un protocole de communication pour changer des
fichiers en rseau TCP/IP. Il existe divers logiciels respectant ce protocole pour effectuer les changes.
Marketplace :
Site commercial offrant des mcanismes de transaction scuriss permettant aux entreprises,
particuliers, collectivits et associations de comparer et slectionner diffrentes offres. Il existe par
exemple Cdiscount, Amazon, FNAC ou encore Pixmania.
SDSL : Symmetric digital subscriber line
-Ligne d'abonn numrique dbit symtrique- Une technique d'accs qui permet de faire
transporter des donnes un dbit symtrique en mission et rception. ADSL correspond alors un
change asymtrique.

37/39

SSH : Secure Shell


Protocole rseau crypt pour se connecter des machines distantes de manire scurise. Cela
permet ainsi d'effectuer des commandes distance.
TID : Thread identifier
-Identifiant de tche- Permet d'identifier une tche sur Linux. Trs proche du PID qui permet
d'identifier un processus, la diffrence se fait au niveau des mmoires qui sont partages. Si un
processus n'a qu'un Thread, le TID et le PID seront identiques.
Versionning :
-Gestion de versions- Cela consiste grer le code source d'un logiciel. Pour pouvoir le faire, on
va utiliser un logiciel qui va grer l'arbre des versions. On y trouve de nombreux concepts tel que le
cration d'une branche : on obtient deux branches du logiciel pour pouvoir dvelopper en parallle.
VPN : Virtual Private Network
-Rseau priv virtuel- Permet d'tendre son rseau priv en passant par internet, tout en gardant
des changes scuriss.
Webservice :
-Service web- Permet la communication et l'change de donnes entre un fournisseur du service
et un demandeur. Le service coute sur un port et une adresse du web, d'o lappellation.

38/39

10. Annexes
10.1. Modle Physique de Donnes Prestashop

Figure 24: Modle Physique de Donnes fourni par Prestashop

39/39

Vous aimerez peut-être aussi