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

WinDev Discussion :

Calcul de pack sur Table


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2013
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Calcul de pack sur Table
    Bonjour,
    Je voudrais une solution a un problème sur lequel je cogite depuis 2 jours.
    je suis entrain de travailler sur un logiciel de caisse pour supermarché.
    Dans la saisie des références des produits, lorsque la caissière finit la saisie un tri est effectué sur la table et un calcul est fait de telle sorte que les références identiques s'additionnent (pour réduire le nombre de lignes sur le reçu)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    TableTrie(TABLE_Facturation,TABLE_Facturation.COL_Code..Nom)
    	POUR i= TableOccurrence(TABLE_Facturation) _A_ 2 PAS -1
    		SI TABLE_Facturation.COL_Code[i]=TABLE_Facturation.COL_Code[i-1]
    					TABLE_Facturation.COL_Quantite[i]=TABLE_Facturation.COL_Quantite[i]+TABLE_Facturation.COL_Quantite[i-1]
    					TableSupprime(TABLE_Facturation,(i-1))
    		FIN
    	FIN
    Ensuite, je veux faire un autre calcul de pack (ou l'insérer dans le code précédent)
    Par exemple, si on considère que la référence Ref001 se vend la pièce à 2 euro et que le les 12 pièces font 20 euro
    la table devra faire le nouvel affichage:
    si après tri et calcul
    Ref001=15 pièces alors
    Ref001X12 = 20 euro x 1
    Ref001X3= 2 euro X 2

    j'ai essayé sa marche parfaitement, mais j'ai un "souci d'indice"
    Quand l'indice de la table (table Occurence) après trie et calcul de pack est < 29 (i<29) alors sa marche
    Si c'est supérieur à 29 (i>29) il ne prend pas en compte le calcul de pack restant
    je vous mets mon code et si je peux avoir une aide, un conseil se serait gentil

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    //Calcul des packs
    //VOLUME=PACK
    //PRIXORIGINE=PRIX PACK
    	nQtiteInitial est un entier
    	sDesignIntial est une chaîne
     
    	POUR i=1 A TableOccurrence(TABLE_Facturation)
    		REQ_article_tarif.ParamArticle=TABLE_Facturation.COL_Code[i]
    		HExécuteRequête(REQ_article_tarif)
    		HLitPremier(REQ_article_tarif)
     
    		SI REQ_article_tarif.VOLUME<>"0" ALORS
    			TANTQUE REQ_article_tarif.VOLUME<TABLE_Facturation.COL_Quantite[i]
    				nQtiteInitial=TABLE_Facturation.COL_Quantite[i]
    				sDesignIntial=REQ_article_tarif.DESIGN
     
    				TABLE_Facturation.COL_Quantite[i]=REQ_article_tarif.VOLUME
    				TABLE_Facturation.COL_Designation[i]=sDesignIntial+" ---- PACK"+"x"+REQ_article_tarif.VOLUME
    				TABLE_Facturation.COL_PrixVTTC[i]=REQ_article_tarif.PRIXORIGINE
    				TABLE_Facturation.COL_Pack[i]="Oui"
     
    				TableInsèreLigne(TABLE_Facturation,TABLE_Facturation+1,TABLE_Facturation.COL_Code[i],
    								sDesignIntial,nQtiteInitial-REQ_article_tarif.VOLUME,REQ_article_tarif.PRIXORIGINE)
    			FIN
    		FIN
     
    			SI REQ_article_tarif.VOLUME=TABLE_Facturation.COL_Quantite[i] ALORS
    				nQtiteInitial=TABLE_Facturation.COL_Quantite[i]
    				sDesignIntial=REQ_article_tarif.DESIGN
     
    				TABLE_Facturation.COL_Quantite[i]=REQ_article_tarif.VOLUME
    				TABLE_Facturation.COL_Designation[i]=sDesignIntial+" ---- PACK"+"x"+REQ_article_tarif.VOLUME
    				TABLE_Facturation.COL_PrixVTTC[i]=REQ_article_tarif.PRIXORIGINE
    			FIN
             FIN

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    Ton souci d'indice me paraît bizarre : pourquoi 29 ?

    Un détail, qui va te faire gagner bcp de tests et donc de temps de traitement : il faudrait que tu testes la quantité avant de lancer ta requête. Ta notion de pack n'est valable que si la quantité totale d'un article est > 1.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 393
    Points
    9 393
    Par défaut
    Je ferais comme pour le 1er traitement : commencer par la dernière ligne.

    POUR i= TableOccurrence(TABLE_Facturation) _A_ 1 PAS -1

    A partir du moment où tu supprimes des lignes, ou bien tu insères des lignes dans la table, c'est plus propre de parcourir la table en remontant.

    La fonction TAbleOccurrence() renvoie selon les cas le nombre de lignes de la table, ou le nombre de lignes affichées. Tu as regardé de ce côté là ?

    Sinon, j'ai des doutes sur ton traitement.
    Sur ton exemple, si un consommateur achète 15 articles, ok, mais s'il en achète 28, tu as testé ?

    Et si demain, tu as des cas comme celui-ci, tu ne sauras pas traiter :
    Prix unitaire : 2€
    Prix du lot de 6 : 10€
    Prix du lot de 15 : 20€.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

Discussions similaires

  1. Calcul de moyenne sur une même table
    Par Jonalex20 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/09/2015, 21h53
  2. Réponses: 4
    Dernier message: 29/05/2012, 00h09
  3. [Macro] Calcul de pourcentage sur table
    Par Ines2013 dans le forum Macro
    Réponses: 9
    Dernier message: 16/09/2008, 16h39
  4. Mise à jour champs par calcul sur table jointe
    Par SylvainM dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 03/03/2008, 17h38
  5. Calcul sur Table
    Par benjaminalvarez dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/02/2008, 03h52

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