Aller au contenu
Règlement du forum ×
IPTV et arnaques ×

Projet: Gestion de stock


bidossessi

Messages recommandés

  • Réponses 151
  • Created
  • Dernière réponse
Assalam 3eikoum,

 

Tout d'abord, je vous remercie pour cette initiatice trés interressante et qui inchallah apportera un plus pour l'Algérie.:)

Nous te remercions pour ton interet et tes encouragements

 

A vrai dire, que mon intervention ne va pas concerner la discussion actuelle, mais un point de vu ou un opinion personnel qui pourrai aider le projet. Et puis, je suis plus calé gestion de projets que la programmation sous Python. Je programme la plupart du temps sous PHP. Mais bon, ceci n'est pas important.

toute assistance est la bienvenue. :)

Il faut dire que comme votre projet concerne un projet Open Source ou Libre, il y'a une maniére d'approcher le projet different d'un projet normal. Tout ces conseils la sont inspirés du livre "Producing Open Source Software" et d'une experience personnelle avec la gestion des projets. Vous pouvez le trouver sur les torrents.

je vais de ce pas le chercher. j'ai plusieurs projets opensource en production.

Et dans le monde de l'Open Source, la premiére étape c'est la construction d'une bonne communication qu sein du groupe. Et dans ce contexte la, avoir un wiki (dans pbworks.com par exemple) ou un site web du projet serai un bon debut.

le site existe, meme si c'est pour l'instant une petite page sur launchpad.

La page d'acceuil devrai decrire les points le plus important qui permettrai d'attirer des volentaires. A savoire:

 

1- Une definition claire du projet sans oublier de citer que c'est un projet libre.

la définition du projet y est; quand au type de license, nous n'en avons pas encore disctuté.

2- Les fonctionnalités et les requis du logiciel. Dans ce point la, ce serai bien de se concentrer dans un premier temps dans une seule fonctionnalité. Et en fonction de l'amplitude des developpeurs, envisager d'autres fonctionnalités. Les autres seront considérés comme planifiés pour un developpement ulterieur.

il se trouve que le découpage du projet en modules n'a pas encore été fait non plus. je dois faire une revue des contributions en documentations de ceux qui ont contribué (amarsoft, salimdz et les autres), synthétiser cela dans la liste des fonctions sur le thread officiel du forum pour qu'on puisse commencer à parler modules.

3- L'état d'avancement du developpement. Les volentaires potentiels doivent savoire l'état d'avancement pour que leurs integration au projet soit la plus facile possible.

l"état d'avancement sera géré automatiquement par launchpad à travers le calcul de l'état d'avancement par rapport aux milestones et au nombres d'objectifs atteints pour chacun d'eux.

 

4- Comment le projet est-il géré? Si c'est un systeme dictatorial ou non il faut le citer. Ce n'est pas un point négatif tant que le dictateur assume bien ces responsabilité.

je suis l'initiateur de ce projet, et jusqu"à présent, j'ai pris quasi-unilatéralement la plupart des décisions, en attendant qu'une discussion un peu plus pratique prenne naissance sur les threads du projet, que des objectifs initiaux soient fixés avec chacun sa tache.

5- Les canaux de communication: Mentionner les IRC et les mailing lists. J'aimerai bien que le mailing list soit ouvert même a ceux qui ne sont pas de l'équipe. Le forum est trop lord, ca requirt un effort considerable, et parfois on n'est pas informé des changements.

le projet dispose d'une mailing list sur launchpad. elle sera ouverte après le commit du premier milestone.

Au debut, on a besoin des gens qui communique bien, avec un bon style d'écriture et qui vont s'occuper de tout ce qui concerne documentation. Ce serai d'avoir ces gens la. Et que leurs rôles soient mentionnés dans le wiki.

amarsoft et salimdz font un travail de recherche formidable. Bassim a déjà jeté les bases d'un cahier de charges professionel. une fois de plus l'équipe n'est pas encore complète.

 

Et plus important, pour ceux qui n'ont pas une experience avec Python, il serai mieux pour eux de maitriser les outils techniques de l'open source comme le "Version Control" et le "Bug Tracking".

 

Il y'en a plus de la communication que de la programmation. C'est ca le point essentiel de l'Open Source.

launchpad utilise bazaar com DVCS. c'est par essence un site de bug tracking, avec une notion minime de wiki. un effort supplémentaire sera fait pour le reste après la finalisation de l'étape préparatoire du projet.

J'espére que ce projet ira jusqu'au bout de son chemin. J'aurai aimé d'être impliqué plus dans le projet. Mais bon, j'ai un projet de côté qui passera a sa 4 éme année. Et que je prête a ouvrir avec l'équipe d'Open Minds Club (Je suis membre). Projet OpenMindStudents.org. Et il reste beaucoup de choses a faire.

 

NB: Je suis l'amie de Cortex et Amarsoft. Ils vont me reconnaitre surement.

 

Bonne chance, pour la suite. ;)

il n'y a pas de seconds roles, il n'y a que des premiers roles occupés ailleurs :)

je te remercie pour tous ces conseils, qui seront suivis puisqu'ils sont judicieux. ils sont déjà une participation appréciée à la réalisation du projet.

j'ai été distrait ces jours-ci et je le suis toujours, pour des raisons personelles, mais je compte bientot redynamiser le sujet, et mettre à jour les espaces de communication dont nous disposons aujourd'hui.

Lien vers le commentaire
Partager sur d’autres sites

Wash amarsoft, tu ne reconnait celui qui t'a aidé dans le diapo???? ;)

 

Bon, j'aimerai beaucoup qu'on discuter sur ces points mentionnés. Qu'on regroupe les idées et définir le périmetre du projet.

 

Déja premiére question, combien de personnes sont prêts à joindre leurs forces et quelles sont leurs compétences? Qui sont ceux qui maitrise le python? et quelles sont qui ont d'autres compétences qui peuvent aider le projet?

 

le premier post contient une liste des personnes qui se sont déclarées pretes à participer activement au projet, et dans quel domaine.

Lien vers le commentaire
Partager sur d’autres sites

Wash amarsoft, tu ne reconnait celui qui t'a aidé dans le diapo???? ;)

 

Bon, j'aimerai beaucoup qu'on discuter sur ces points mentionnés. Qu'on regroupe les idées et définir le périmetre du projet.

 

Déja premiére question, combien de personnes sont prêts à joindre leurs forces et quelles sont leurs compétences? Qui sont ceux qui maitrise le python? et quelles sont qui ont d'autres compétences qui peuvent aider le projet?

 

comment ça je n'ai pas reconnu le grand philosophe. :)

 

ton nom commence par T ;)

Lien vers le commentaire
Partager sur d’autres sites

la page de la team sur launchpad https://launchpad.net/~devel-dz

 

pour le moment je vois que moi et cortex et bien sure bidossessi dans la liste

 

j'ai essayé d'envoyé un mail via notre mailing list devel-dz [arobase] lists.launchpad.net mais le message n'est pas envoyé

 

je pense qu'on a besoin d'un wiki ?

Modifié par ButterflyOfFire
Merci de ne pas mettre les emails en clair afin d'empêcher les spams ;)
Lien vers le commentaire
Partager sur d’autres sites

la page de la team sur launchpad https://launchpad.net/~devel-dz

 

pour le moment je vois que moi et cortex et bien sure bidossessi dans la liste

 

j'ai essayé d'envoyé un mail via notre mailing list devel-dz [arobase] lists.launchpad.net mais le message n'est pas envoyé

 

je pense qu'on a besoin d'un wiki ?

 

j'ai recu le message

+++

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

J'ai lu les threads du projet et je voudrais bien y participer. Je suis prêt à aider dans la partie UML, python ( ça fait un bout de temps que j'y ai pas touché mais je peux reprendre très vite!). Je me suis inscris sur la page du projet sur Launchpad merci de m'accepter :)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous.

plusieurs concours de circonstance font que j'ai été absent plus longtemps que prévu, mais je suis de retour.

 

plusieurs remarques:

 

1- je suis tout à fait pour les contributions spontanées et j'apprécie l'enthousiasme de certains de nos amis, mais j'aime que les choses soient faites par étapes. à l'heure actuelle, nous en sommes encore à la discussion du cahier de charge, de ses éléments, et des fonctionalités du logiciel. un wiki est à mon sens prématuré.

 

2- le mailing list de launchpad fonctionne très bien. je ne vais pas l'ouvrir pour l'instant. pas la peine de spammer ceux qui ne sont pas engagés dans le projet. je mesure le niveau de dédication par l'enrolement sur launchpad, et les membres recoivent la mailing list automatiquement. ceux qui veulent rejoindre le projet sont le bienvenus, mais la communication initiale se fera sur ce forum pour le moment, jusqu'à ce qu'une taskforce claire soit dégagée et des responsabilités attribuées.

 

pour des raisons évidentes, je veux savoir qui est avec moi sur ce projet, donc le groupe est modéré, mais je répond plutot rapidement en général. Alors si vous êtes prêts à participer activement, à n'importe quel niveau, rejoignez le groupe Devel-DZ, et dites nous comment vous pouvez contribuer.

 

Tous ceux qui veulent participer sont les bienvenus.

Lien vers le commentaire
Partager sur d’autres sites

Répétition:

les secteurs d'intervention sont déjà définis.

envoyez-moi un pm pour que je sache ou vous voulez activer, et que je puisse vous mettre en relation avec les autres membres qui sont déjà dans cette section si vous ne les connaissez pas encore.

EDIT:A ceux qui souhaitent participer à ce projet, choissisez votre niveau de participation et envoyez-moi un pm.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous:

Je souhaite discuter de l'excellent post de salimdz et des conclusions pour notre projet qu'il m'a inspiré.

Je pense qu'à partir de ce post, et des éléments de fonctionalités listés pour le projet gnustock, nous pouvons commncer à discerner les classes principales qui vont régir la logique du logiciel. Il est temps de commencer à formuler ces classes, à voir quelles seraient leur attributs et methodes, et leurs interactions. Je vais commencer en listant celles qui me paraissent évidentes. J'en profite pour jeter les bases des conventions de codage qui seront en vigueur pour ce projet, et expliquer quelques propirétés de python qui sont à mon avis très utiles.

les couleurs sont juste pour simplifier la visibilité:

 

[b]NomDeClasse:[/b]
   [i]"""Description et illustration de l'obectif de la classe."""[/i]
   ATTRIBUTSDECLASSE # ([b]*[/b] optionels)
   [color="Black"]def __init__(self, param1=value, param2=value)[/color]
        attributsPossibles
   [color="Red"]def methodes_possibles()[/color]
       """documentation/illustration de la methode.""""
   # commentaire ou explication supplémentaire
   #FIXME! indication de code suboptimal
   #BUG! indication de bug 

 

* il y a une différence entre les attributs de la classe et les attributs d'une instance sous python. c'est un piège commun :)

 

"docstring uniligne" | """docstring multiligne""".

python permet de générer automatiquement la documentation pour les modules qu'on développe, à condition de les mettre entre griffes juste sous le nom de la fonction/classe qu'on veut documenter. Cette documentation est alors accessible à travers l'attribut python mamethode.__doc__

De préférence, et par souci d'uniformité, on utilise les triples griffes.

Pourquoi c'est important? imaginez lancer un module python et vous demander à quoi sert une obscure fonction: pas besoin d'aller voir le code, si elle a sa docstring.

Plusieurs projets python utilisent exclusivement les docstrings pour générer leur documentation et les exemples d'utilisation, afin de les exposer dans leur guide de références à travers un parseur de docstring qui les convertit en page html.

 

Conventions de nommage:

on pourrait perdre beaucoup d'encre à discuter de la valeur de telle ou telle convention ici, alors je vais trancher directement.

 

Espacement:

Pour python les indents ne servent pas juste à la clarté de lecture. elles définissent le début (et la fin) d'une fonction/classe. Nous utiliserons 4 espaces par souci de compatibilité entre les différents OS, et jamais de tabulation.

Modifié par bidossessi
Lien vers le commentaire
Partager sur d’autres sites

[b]class Depot(object):[/b]
   [i]"""Le dépot stocke les articles."""[/i]

   def __init__(self):
        self.id = None
        self.emplacement = None
        self.responsable = None

   def entrer_article(article):
       """"Ajouter un article au dépot."""
       pass

   def sortir_article(article):
       """"Retirer un article du dépot."""
       pass

   def emettre_rapport(article):
       """"Liste les articles du dépot et les classe dans des dictionnaires 
           par catégorie."""
       pass

Modifié par bidossessi
Lien vers le commentaire
Partager sur d’autres sites

[b]class Article(object):[/b]
   """Définit les attributs et methodes d'un article. """

   def __init__(self):
        self.id = None
        self.description = None
        self.quantite = None
        self.idDepot = None

   def augmenter_stock(self, quantite):
        """Ajouter une quantité donnée au stock."""
        pass
   def diminuer_stock(self, quantite):
        """Retirer une quantité donnée du stock."""
        pass
   def lister_prix(self):
        """Compiler une liste de prix classée par fournisseur et par date."""
        pass

Modifié par bidossessi
Lien vers le commentaire
Partager sur d’autres sites

[b]class Transaction(object):[/b]
   """Permet (entre autres) d'archiver les entrées/sorties. """

   def __init__(self):
        self.id = None
        self.type = None # (entree/sortie. bool?)
        self.date = None
        self.idDepot = None
        self.idArticle = None
        self.quantite = None
        self.agent = None # (qui l'a fait)

Lien vers le commentaire
Partager sur d’autres sites

[b]class Fournisseur(object):[/b]
   """Gère les opérations sur un fournisseur. """

   def __init__(self):
        self.id = None
        self.adresse = None
        self.contact = None
        self.rc = None # R.C. pour la génération automatique de documents
        self.tel = None
        self.fax = None # imaginez une connexion halifax !
        self.email = None # imaginez envoi mail préformatté !
        self.rating = None # pour le classement
        self.notes = None

   def lister_produits(self):
        """"Produit un dictionnaire des dispos du fournisseur."""
        pass

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

la modelisation ne se fait pas avec un model (UML, Merise ...) ?

 

je ne suis pas entrain de modéliser. mais vu que pour l'instant la participation a un peu baissé, je pose les bases du soft. si quelqu'un veut proposer un modèle uml, marhaba.

personellement je compte lister les acteurs de ce soft ici, pour revue et correction/amélioration, et ensuite, je regroupe ce monde dans un document, et je passe à gtk+.

la modélisation est utile si les autres participent. sinon, c'est juste un outil de rappel.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...
Salam.

Tu fais hériter toutes tes classes de object. Je pense que depuis python 2.2 ce n'est plus nécessaire. Ce n'est pas en relation avec les new-style classes ça ?

non, c'ets dans l'optique d'utiliser l'ORM sqlalchemy avec la methode de mapping declarative. l'héritage d'object est nécéssaire dans ce cas là.

Lien vers le commentaire
Partager sur d’autres sites

  • 3 months later...

Apparemment vos classes ne contiennent que des données membres et pas de fonction membre. Ce qui suggère que le modèle objet est peut-être excessif. Ces définitions de classes ressemblent beaucoup à des définitions de tables de base de données relationnelles.

 

Vous allez de toute façon être confrontés à la sérialisation, c'est à dire au stockage de toutes ces informations sur un support physique (disque dur). L'implémentation de votre sérialisation devra être fiable, car il est impensable que des données puissent être perdues.

 

Avez vous songé à un projet SQL et à développer plutôt une sorte de frontend pour l'interface utilisateur ?

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...
Apparemment vos classes ne contiennent que des données membres et pas de fonction membre. Ce qui suggère que le modèle objet est peut-être excessif. Ces définitions de classes ressemblent beaucoup à des définitions de tables de base de données relationnelles.

 

Vous allez de toute façon être confrontés à la sérialisation, c'est à dire au stockage de toutes ces informations sur un support physique (disque dur). L'implémentation de votre sérialisation devra être fiable, car il est impensable que des données puissent être perdues.

 

Avez vous songé à un projet SQL et à développer plutôt une sorte de frontend pour l'interface utilisateur ?

 

pour l'instant, il est clair que je définis d'abord les attributs qui seront nécéssaires à chaque élément de mon modèle. de la, je passerai à l'ajout de fonctions d'interaction et d'introspection, une fois que j'aurai une vision globale des membres.

 

ma vision: serveur/client avec un ORM (je pars toujours sur SQLALCHEMY parceque je le connais bien) sur la partie serveur pour la gestion des transactions, et un frontend (soit GTK soit php) en avant, selon les besoins. j'expérimente déjà avec ce type de setup pour une application que je fais en interne pour mon entreprise.

Lien vers le commentaire
Partager sur d’autres sites

  • 12 years later...
Le 21/07/2009 à 14:48, Invité HAVOC a dit :

- Réapprovisionnement automatique (une sorte d'extension au système d'alerte).

 

Le réapprovisionnement automatique des stocks est le processus de génération automatique de commandes qui permet de créer des plans de réapprovisionnement automatique et des commandes en déterminant le niveau de stock de sécurité - un tampon de stock utilisé pour se protéger contre les fluctuations aléatoires de la demande et/ou de l'offre, et le plan de réapprovisionnement - un calendrier reflétant la quantité que vous devez commander aujourd'hui et dans un avenir proche.

Il existe de nombreux systèmes de gestion de projets qui font ça de manière automatique.

Exemple : Odoo (le top open source à mon humble avis)

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


×
×
  • Créer...