IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Recherche algo ou code, Commande partielle [Débutant]


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Par défaut Recherche algo ou code, Commande partielle
    Bonjour,

    Je suis en réflexion sur un algo et me retrouve bloqué dans mes idées...
    Voila, je dois gérer des commandes et leurs produits commandés.

    Table commande : champs ID (id commande (le notre)), Num_commande( champ avec le N° de commande(client)) ;autres champs pas nécessaire pour l'algo(je pense)

    Table produits : ID; Ref_article; Quantité

    Je dois envoyer chaque commande, même si elle est incomplète, avec X produits minimum.

    Exemple :
    si 3 produits mini
    ma commande en contient 5 (4seulement en stock donc le 5eme sera le manquant).

    j'aimerais garder en base l'id de la commande pour les 4 avec du stock et "constituer une nouvelle commande" pour le produit restant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // x = nombre d'article mini pour envoyer partiellement la commande 
    // parcourir les articles (base articles commandés)
     
    // stocker dans un tableau les articles sans stock
     
    // création nouvelle commande (et recuperation du nouvel ID)
    // update des articles avec le nouvel ID
    // la nouvelle commande sera alors reliée aux produits manquants

  2. #2
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Propose-nous ton algorithme et nous t'aiderons à l'affiner !
    Mais si on fait le travail à ta place, tu n'en tireras pas grand chose

  3. #3
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Par défaut
    J'avais prévu de le compléter ce matin ^^, effectivement je demande pas non plus qu'on travail a ma place ^^.

    Voila pour l'instant je met au fur a mesure mes modifs.

    Merci.

  4. #4
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Par défaut
    algo mis a jour.

  5. #5
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Par défaut
    Citation Envoyé par Logann23 Voir le message
    algo mis a jour.
    Génial
    On peut le voir ?

  6. #6
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Par défaut
    je l'ai actualisé mon premier post en fait.
    (enfin si ca ressemble a un algo :s)

    La je penche surtout sur un probleme pour le code

    car je teste mes quantités
    et si j'ai un produit ex:

    RefXB quantité 4
    et que j'ai 3 en stock, mes 4 produits sont considéré manquants alors que réellement on a 4 x 1 quantité.
    Faut-il que je décompose tous mes produits?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((Quantite_En_Stock  - Quantite_art_commandé) < 0)
    je pensais a faire ceci :s mais ca me perturbe comme idée...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Quantite_art_commandé = 5 // 
    for ( i = 1 ; i > Quantite_art_commandé; i++) //utiliser i pour decomposer article par article
    {
        if ((Quantite_En_Stock  - i) < 0) // Quantite_En_Stock = 4 
        {... on stock dans un tableau la reference, qte du produit pour constituer une nouvelle commande

  7. #7
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Par défaut
    Je ne sais pas si je répond à ta question mais voilà ce que je ferai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int Q_reel = Quantite_En_Stock  - Quantite_art_commandé;
    if(Q_reel >= 0)
           //Traitement normal
    else
           int Quantite_art_commandé_Reel = Quantite_art_commandé + Q_reel;

  8. #8
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    int iValue = 0;
    if (Quantite_art_cmde > Quantite_En_Stock  ) // si 5 articles pour 4 en stock 
    {
        iValue = Quantite_art_cmde - Quantite_En_Stock   ;
        // ensuite je stock la ref + quantité du produit
        // INSERT INTO ... ma nouvelle commande en base et recup du nouvel ID 
        // UPDATE les articles concernés par le nouvel ID
     
    ID  REF  QTE
    1   XB... 5
     
    pour avoir 
    ID  REF  QTE
    1   XB... 4
    2   XB... 1
    J'update a 4 la quantité et insert une nouvelle ref avec l'id de ma nouvelle commande.
    Comment faire ce changement sans perdre de donnée en base ou en rajouter... (cas ou bug de programme)
    une transaction est-elle obligatoire? conseillée?

  9. #9
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Par défaut
    Edit: Oups j'ai lu top vite, rectification:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (Quantite_art_cmde > Quantite_En_Stock   )) // si 5 articles pour 4 en stock 
    {
        iValue = Quantite_En_Stock - Quantite_art_cmde;
        int Quantite_art_commandé_Reel = Quantite_art_commandé + iValue; //Ce qui te donnera le nombre d'article qui sera commandé
    }
    Mais il y a plus simple, ta quantité envoyé sera simplement égale à ta valeur de stock, que tu passera en suite à 0

  10. #10
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Par défaut
    merci, mais je ne maîtrise pas encore, donc j'ai un peu de mal a bien expliquer le truc ^^

  11. #11
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Par défaut
    Citation Envoyé par Logann23 Voir le message
    merci, mais je ne maîtrise pas encore, donc j'ai un peu de mal a bien expliquer le truc ^^
    J'approuve, je ne comprend plus rien à tes post (à force de rééditer )
    Montre nous ta partie qui traite avec la bdd si le problème se trouve ici...
    Ou explique nous calmement ce que tu aimerais faire

  12. #12
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Par défaut
    Alors, J'ai une commande Ref produitA on va dire quantité 5 :le but est de faire partir la commande partiellement
    c'est a dire tous les produits de la commande s'il y a du stock dispo
    et donc conserver les manquants. Ici on a seulement 4 en stock

    ayant une table Commande (avec un Command_ID)
    et une table articles_commandés (avec ID, Ref, QTE)

    j'aimerais simplement gerer ma base
    Exemple donc, si sur mes 5 articles, j'ai un manquant je veux modifier ma première commande a 4 (qui sera envoyée car complète) et créer une nouvelle commande (avec le manquant) qui sera en attente.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int iValue = 0;
    if (Quantite_art_cmde > Quantite_En_Stock  ) // si 5 articles pour 4 en stock 
    {
        iValue = Quantite_art_cmde - Quantite_En_Stock   ;
        // ensuite je stock la ref + quantité du produit
        // INSERT INTO ... ma nouvelle commande en base et recup du nouvel ID 
        // UPDATE les articles concernés par le nouvel ID
    }
    Exemple Bdd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ID   REF       QTE
    1   produitA    5
     
    pour avoir 
    ID   REF       QTE
    1   produitA    4
    2   produitA    1
    et donc mon inquiétude maintenant c'est d'update une valeur et insert into une autre après. Bon le cas sera assez rare etc... mais j'aimerais une sorte de "best practice" pour une bonne utilisation des données en base

    Merci

  13. #13
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Par défaut
    En parcourant tous les articles d'une commande :
    Dans le cas ou ma QTE de l'article commandé > stock

    il faut que je :
    - créer une nouvelle commande pour les manquants (Table Commande)
    - insert mes manquants, avec le nouvel ID de cette commande (Table Article)
    - ajuster (avec un update) les QTE commandé - manquants (Table Article)

    si j'ai 10 articles dans ma commande

    je pense :
    - Update les quantités de la commande (non manquants)

    - insert into nouvelle commande de manquants
    - recup l'ID de cette commande
    - Insert into avec l'ID recuperé des articles manquants

    Comment stocker toutes ces valeurs au fur a mesure que je parcours les articles de ma commande? pour exécuter ensuite les changements en base une fois tous les articles parcouru?

  14. #14
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Par défaut
    Salut!

    Pourquoi ne pas utiliser List<> , plutôt simple à manier
    Voilà comment je procèderai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    using System.Collections.Generic;
     
    public class Commande {
        public int Num { get; set; }
        public string Name { get; set; }
        public int Qt { get; set; }
    }
     
    public static void Main()
    {
         var ListCom = new List<Commande>();
     
         ListCom.add( new Commande {    //Ajout d'un ligne dans la liste
              Num = 1,
              Name = "Vase",
              Qt = 4
         });
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche d'un code d'implentation
    Par tidus666x dans le forum ASP
    Réponses: 24
    Dernier message: 11/03/2006, 19h29
  2. Recherche d'un code d'identification
    Par tidus666x dans le forum ASP
    Réponses: 2
    Dernier message: 08/03/2006, 12h45
  3. [TP] Recherche d'un code source taquin à 9 cases
    Par dericthebeast dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 03/08/2005, 18h34
  4. recherche algo de génération de nombre aléatoire
    Par Pascale38 dans le forum MFC
    Réponses: 2
    Dernier message: 26/01/2004, 14h20
  5. Recherche algo tree
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/05/2002, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo