Conception et réalisation d'une application web pour la gestion des stocks.( Télécharger le fichier original )par Menad Belhoul Bejaia - Licence 2015 |
Conclusion généraleAu bout de notre cursus en licence, nous avons été chargés de concevoir et d'implémenter une application web de gestion des stocks des pièces de la société « Chevrolet-Bejaia». Cette application nous a permis de répondre aux besoins du personnel de la société par la résolution de certaines contraintes qu'il rencontre quotidiennement telles que la lourdeur de la procédure manuelle pour la gestion des stocks induit par le grand nombre des documents émis et reçus qui circulent quotidiennement entre les services de l'entreprise. Tout ceci améliore et facilite considérablement le travail du personnel de la société. Pour modéliser cette application nous nous sommes basés sur le processus UP (Unied Process) ainsi que sur le formalisme UML (Unied Modeling Language) dont nous avons utilisé trois différents diagrammes : le diagramme de cas d'utilisation, le diagramme de séquence et le diagramme de classe, qui nous ont permis de capturer au mieux certains besoins. Ce projet a fait l'objet d'une expérience intéressante, qui nous a permis d'exploiter et d'améliorer nos compétences dans le domaine de la conception et de la programmation. Ainsi, au cours de la réalisation de ce projet nous avons acquis une expérience professionnelle avec la société, ainsi dans le domaine des architectures logicielles, nous avons aussi familiarisé avec un large panel de technologie et de Framework. D'autre part, la société a bénéficié d'un programme valide et performant de gestion des stocks. Bibliographie34 Webographie
A Page d'authentification et page d'accueil
B Le bouton affiche et masque le menu qui est
C Page de gestion des produits
D Figure 11 La suite de l'opération de
Page de consultation des bons
Page gestion des familles : E Figure 13 Figure 12 La page de gestion des familles contient 2 onglets : A. Tableau des familles disponible :
B. L'ajout d'une nouvelle famille : 1. remplir les informations concernant la famille, pour confirmer on clique sur . NB : les mêmes caractéristique pour les pages : fournisseur , client
Figure 14 Figure 15 Figure 16 F La modification d'une famille version
1 Figure 17 1. La suppression d'un groupe version mobile (photo capturée par un téléphone). 2. Le blocage d'un groupe version mobile (photo capturée par un téléphone). G Page de gestion des ventes
Figure 20 H I Quelque code sur les fonctionnalités du site Code concernant la confirmation et l'impression d'un bon: Le code ci-dessus permet d'envoyer des informations à une page PHP et de lui envoyer les informations . JavaScript : dt += '&p_list='+p_list_new+'&date_cmd='+date_cmd; //former le lien POST pour l'envoyé $.ajax(j // La méthode AJAX de jQuery pour exécuter les pages php à distance type: "POST", // sélectionner le type pour envoyer les informations url: "./../../BONs/bon_cmd_send.php", //la page destinataire data: dt, //sélectionner le lien cache: false, //désactiver ou active le cache entre les pages
alert("cliquer sur ok et attendre 10 second pour l'impression soit"); var printWindow = window.open('./../../BONs/bon_cmd_show.php?cmd_ref='+result, '', 'height=600,width=1000'); setTimeout(function()j printWindow.print();window.open("index.php", "_self");printWindow.close();
PHP : <?php include("./config.php"); $cmd_produit_query="INSERT INTO `cmd_produit` (`p_ref`, `cmd_id`, `p_quan`) VALUES"; //création d'une demi requête (1) $date_cmd = $_POST['date_cmd'];//importation des variables du POST dans les variables de PHP $p_list = $_POST['p_list']; ;//codification d'un bon de $cmd_id = 'cmdpdate'.date("Y.m.d").'@'.date("h:i:sa").'us59' commande $cmd_ecr_query = "INSERT INTO `ecr_cmd_p` (`ID_emp`, `ID_cmd`) VALUES ('5',
$cmd_m_p = "INSERT INTO `cmd_m_p` (`ID_cmd`, `DATE_CMD`,`date_command`) VALUES ('".$cmd_id."', NOW(),'".$date_cmd."')"; $cmd_confirm = "INSERT INTO `cmd_confirm` (`ID_cmd`, `etat`) VALUES ('".$cmd_id."', '0')"; //envoyer les requête au server mysqli_query($connection,$cmd_ecr_query); mysqli_query($connection,$cmd_m_p); mysqli_query($connection,$cmd_confirm);
$p_ref = $_POST[$p_ref]; $cmd_q = $_POST[$cmd_q]; if($x==$p_list) $cmd_produit_query = $cmd_produit_query." ('".$p_ref."', '".$cmd_id."', '".$cmd_q."')"; else $cmd_produit_query = $cmd_produit_query." ('".$p_ref."', '".$cmd_id."', '".$cmd_q."'),"; } $result=mysqli_query($connection,$cmd_produit_query);
mysqli_close($connection); ?> La Recherche D'un Bon : Des Codes sur la recherche multi attribut d'un bon . HTML :
JavaScript - jQuery :
var cmd_table_id = []; var cmd_table_emp = []; var cmd_table_date = []; var cmd_found_or_not = []; var cmd_seen_or_not_seen = []; var txt = document.getElementById('cmd_text_search').value; //déclaration des tableaux // utiliser le DOM pour J importer les informations de les balise HTML (le nombres des éléments)
for(ch = 1 ; ch <= get_cmd_element_number ; ch++) $('#cmd_tr'+ch).show();//en utilise la fonction show() (jQuery) pour afficher tous les éléments de la page K
recherche de tous les informations à partir des éléments HTML on utilisant le DOM
document.getElementById('cmd_seen_or_not_seen'+ch).innerHTML; if(cmd_seen_or_not_seen(ch].search(txt)>=0 || cmd_table_id(ch].search(txt)>=0 || cmd_table_emp(ch].search(txt)>=0 ||
for(ch = 1 ; ch <= get_cmd_element_number ; ch++){//cacher tous les éléments (balise HTML) qui ne correspondant pas avec la recherche et laisser les autres.
} } L'ajout d'un client : Des codes permet d'ajouter un nouveau client HTML : <section class="panel tasks-widget">//section qui contient les zones des textes pour la saisie <header class="panel-heading">Ajouter un client</header>//Titre <div class="panel-body">//Balise mère : <div class="form-group "> <label for="nom" class="control-label">Nom & Prenom de client (entreprise) : </label> <div class="col-lg-12"> <input required class="form-control" id="nom" name="nom" type="text" />//champ du text </div> </div> <div class="form-group "> <label for="nom" class="control-label">AI° : </label> <div class="col-lg-12"> <input required class="form-control" id="AI" name="AI" type="text" /> </div> </div> <div class=" add-task-row"> <input id="add_client" type="button" class="btn btn-success btn-sm pull-left" value="Add New Tasks" ></input> //bouton qui envoyer les informations à la page PHP </div> </section> L JavaScript - jQuery - AJAX :
test_input_char_length("adrs",256); test_input_char_length("tel_num",20); test_input_char_length("RC",256); test_input_char_length("MF",256); test_input_char_length("NIS",256); test_input_char_length("AI",256); if(hello==true)j//si le informations sont justes var data = 'nom='+ $("#nom").val()+'&adrs='+ $("#adrs").val()+'&tel_num='+ $("#tel_num").val()+'&MF='+ $("#MF").val()+'&NIS='+ $("#NIS").val()+'&AI='+
."); type: "POST",
data: data, cache: false, success: function(result)j if(result.length>10){//tester le résultat du page d'ajout si le client existe déjà alert("Le Client "+$("#nom").val()+" a été ajouté avec succès //message qui confirme l'ajout
if(document.getElementById("nothing_else") != null)j document.getElementById("nothing_else").parentNode.removeChild(docu
} document.getElementById("adding").setAttribute("class","tab-pane");//orienter l'utilisateur à l'onglet d'affichage des clients document.getElementsByClassName("nav nav- tabs")[0].getElementsByTagName("li")[1].setAttribute("class",""); document.getElementById("rules").setAttribute("class","tab-pane active"); document.getElementsByClassName("nav nav- tabs")[0].getElementsByTagName("li")[0].setAttribute("class","active"); document.getElementById("nom").value= "";
afficher un message} } }); } }); M CSS :
border-top-color: rgb(226, 0, 0); border-top-style: solid; border-top-width: 1px; border-right-color: rgb(226, 0, 0); border-right-style: solid; border-right-width: 1px; border-bottom-color: rgb(226, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(226, 0, 0); border-left-style: solid; border-left-width: 1px; } JavaScript - jQuery : function test_input_char_length(a,n){//fonction qui teste les informations du client puis si les informations sont juste retourner vrai si non signaler les champ du texte qui contient des fausses informations et retourner faux if($("#"+a).val()== "" || $("#"+a).val().search("'")>=0 || $("#"+a).val().search('"')>=0 || $("#"+a).val().search(">")>=0 || $("#"+a).val().search("<")>=0 || $("#"+a).val().search("}")>=0 || $("#"+a).val().search("{")>=0 || $("#"+a).val().length > n ){ $("#"+a).attr("class","form-control slimane"); hello=false; //alert("true"); }else{ $("#"+a).attr("class","form-control slimane_m"); //alert("false"); } } PHP : <?php //page d'ajout include("./../config.php");//importer les paramètres de la connexion $nom = $_POST['nom'];//importer les variables post à des variables PHP $adrs = $_POST['adrs'];$tel_num = $_POST['tel_num'];$MF = $_POST['MF'];$NIS = $_POST['NIS'];$AI = $_POST['AI'];$RC = $_POST['RC']; $query_test_exist="select * from `client` where tel_c ='".$tel_num."';";//sélectionner un client suite à un numéro de téléphone saisi $result_test_exist=mysqli_query($connection,$query_test_exist);
informations importés $query="INSERT INTO `client` (`nom_c`, `adr_c`, `tel_c`, `RC`, `MF`, `NIS`, `AI`) VALUES ( '".$nom."', '".$adrs."', '".$tel_num."', '".$RC."', '".$MF."', '".$NIS."', '".$AI."');";//requête d'ajout $result=mysqli_query($connection,$query); $query_get_id ="select * from `client` where tel_c ='".$tel_num."';"; $result_id = mysqli_fetch_row(mysqli_query($connection,$query_get_id)); $id = $result_id[0];//récupération de l'id de client echo '<tr id="'.$id.'"> //écrire le code html avec les nouvelles informations importés <td ><strong>' //HTML CODE .'\',\''.$nom.'\')" data-toggle="modal" href="#confirm_form" class="btn btn-danger btn-xs btnmenutable" id="delete_row_'.$id.'"> <i class="icon-trash "></i></button> </td></tr>'; }else{echo 'exist';} mysqli_close($connection);?> I. Etat de sortie Facture de vente N O Bon de vente P Bon de livraison Facture de commande Q |
|