Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Mise à Jour de Stock ....
#1
BSR à Vous Toutes et Tous .

Je suis navré d'être rébarbatif pour vous exposer mon souci .....
J'ai une Table Mémoire TABVENTE qui enregistre mes Lignes de Ventes .
J'ai aussi un fichier STOCK qui a la particularité suivante , c'est qu'il contient , pour chaque Produit , quatre alvéoles ( si je puis m'exprimer ainsi , regroupant les stocks de mêmes Péremption , Prix si bien que j'ai en plus des autres rubriques classiques 12 autres : PrQtéi(j), DatePéremption(j) et PrPrix(j) l'indice j allant de 1 à 4

En affichage de chaque ligne de vente , j'enregistre une ligne de stock en négatif
Quand la vente est terminée , j'enregistre tout celà .... En particulier , je met à jour le STOCK .
A cet effet , je parcours TABVENTE et pour chaque produit de la ligne de vente , je vais chercher dans STOCK , le produit correspondant , puis je dois chercher DatePéremption(j) et PrPrix(j) correspondant au produit vendu et enfin je décrémente
PrQtéi(j) de la quantité vendue ....

J'ai écris ce code ( mais celà ne fonctionne pas !!!)
Code :
i est un entier
POUR i =1 A TableOccurrence(TABVENTE)
    // On modifie le STOCK existant
    HLitRecherche(STOCK,PRCODE,VPRCODE[i])
    SI HTrouve() ALORS
        SI ( STOCK.PRDPEREMP1=VTPER[i] ET STOCK.PRPRIX1=VPRIX[i] )  ALORS
            STOCK.PRSTK1=STOCK.PRSTK1-VQTE[i]
            STOCK.QTESTOCK=STOCK.QTESTOCK-VQTE[i]
            STOCK.QTESTOCKVIRTUEL=STOCK.QTESTOCKVIRTUEL-VQTE[i]
            HModifie(STOCK)
            
        FIN
        SI ( STOCK.PRDPEREMP2=VTPER[i] ET STOCK.PRPRIX2=VPRIX[i] ) ALORS
            STOCK.PRSTK2=STOCK.PRSTK2-VQTE[i]
            STOCK.QTESTOCK=STOCK.QTESTOCK-VQTE[i]
            STOCK.QTESTOCKVIRTUEL=STOCK.QTESTOCKVIRTUEL-VQTE[i]
            HModifie(STOCK)
            
        FIN
        SI  ( STOCK.PRDPEREMP3=VTPER[i] ET STOCK.PRPRIX3=VPRIX[i] ) ALORS
            STOCK.PRSTK3=STOCK.PRSTK3-VQTE[i]
            STOCK.QTESTOCK=STOCK.QTESTOCK-VQTE[i]
            STOCK.QTESTOCKVIRTUEL=STOCK.QTESTOCKVIRTUEL-VQTE[i]
            HModifie(STOCK)
            
        FIN
        SI  ( STOCK.PRDPEREMP4=VTPER[i] ET STOCK.PRPRIX4=VPRIX[i] ) ALORS
            STOCK.PRSTK4=STOCK.PRSTK4-VQTE[i]
            STOCK.QTESTOCK=STOCK.QTESTOCK-VQTE[i]
            STOCK.QTESTOCKVIRTUEL=STOCK.QTESTOCKVIRTUEL-VQTE[i]
            HModifie(STOCK)
            
        FIN
    FIN
FIN


Ce n'est peut être pas très propre , ni élégant comme Code .....
Merci à Samifred et à toute autre Personne qui voudra m'aider . Lhassane
Répondre
#2
Bonsoir,

Difficile de donner quelques précisions... avec des rubriques codées "PRDPEREMP1" incompréhensibles. Je te conseil de nommer les rubriques avec des noms lisible "QuantitéEnStock", "QuantitéVendue","DateDePéremption", etc...


Code modifié comme compris... mais pas sûr que cela fonctionne. Une seule fonction HModifie() est utilisée vu que un seul enregistrement est à modifier pour chaque ligne de table vente.
Code :
i est un entier
POUR i =1 A TableOccurrence(TABVENTE)
   // On modifie le STOCK existant
   HLitRecherche(STOCK,PRCODE,VPRCODE[i])
   SI HTrouve() ALORS
      SI ( STOCK.PRDPEREMP1=VTPER[i] ET STOCK.PRPRIX1=VPRIX[i] )  ALORS
         STOCK.PRSTK1=STOCK.PRSTK1-VQTE[i]
         STOCK.QTESTOCK=STOCK.QTESTOCK-VQTE[i]
         STOCK.QTESTOCKVIRTUEL=STOCK.QTESTOCKVIRTUEL-VQTE[i]
      FIN

      SI ( STOCK.PRDPEREMP2=VTPER[i] ET STOCK.PRPRIX2=VPRIX[i] ) ALORS
         STOCK.PRSTK2=STOCK.PRSTK2-VQTE[i]
         STOCK.QTESTOCK=STOCK.QTESTOCK-VQTE[i]
         STOCK.QTESTOCKVIRTUEL=STOCK.QTESTOCKVIRTUEL-VQTE[i]
      FIN

      SI  ( STOCK.PRDPEREMP3=VTPER[i] ET STOCK.PRPRIX3=VPRIX[i] ) ALORS
         STOCK.PRSTK3=STOCK.PRSTK3-VQTE[i]
         STOCK.QTESTOCK=STOCK.QTESTOCK-VQTE[i]
         STOCK.QTESTOCKVIRTUEL=STOCK.QTESTOCKVIRTUEL-VQTE[i]
      FIN

      SI  ( STOCK.PRDPEREMP4=VTPER[i] ET STOCK.PRPRIX4=VPRIX[i] ) ALORS
         STOCK.PRSTK4=STOCK.PRSTK4-VQTE[i]
         STOCK.QTESTOCK=STOCK.QTESTOCK-VQTE[i]
         STOCK.QTESTOCKVIRTUEL=STOCK.QTESTOCKVIRTUEL-VQTE[i]
      FIN

   HModifie(STOCK)
   FIN
FIN
Se souvenir et savoir sont deux choses différentes. Se souvenir, c'est garder en mémoire. En revanche, savoir signifie assimiler sans dépendre d'un modèle.

WD 4.1 => 23


Répondre
#3
BSR Samifred .
Merci pour Ton Entière Bonne Volonté .

Cela ne fonctionne toujours pas .... Cependant ce Code :

i est un entier
POUR i =1 A TableOccurrence(TABVENTE)
// On modifie le STOCK existant
HLitRecherche(STOCK,PRCODE,VPRCODE[i])
SI HTrouve() ALORS
SI ( STOCK.PRDPEREMP1=VTPER[i] ET STOCK.PRPRIX1=VPRIX[i] ) ALORS
STOCK.PRSTK1=STOCK.PRSTK1-VQTE[i]
FIN
SI ( STOCK.PRDPEREMP2=VTPER[i] ET STOCK.PRPRIX2=VPRIX[i] ) ALORS
STOCK.PRSTK2=STOCK.PRSTK2-VQTE[i]
FIN
SI ( STOCK.PRDPEREMP3=VTPER[i] ET STOCK.PRPRIX3=VPRIX[i] ) ALORS
STOCK.PRSTK3=STOCK.PRSTK3-VQTE[i]
FIN
SI ( STOCK.PRDPEREMP4=VTPER[i] ET STOCK.PRPRIX4=VPRIX[i] ) ALORS
STOCK.PRSTK4=STOCK.PRSTK4-VQTE[i]
FIN
STOCK.QTESTOCK=STOCK.QTESTOCK-VQTE[i]
STOCK.QTESTOCKVIRTUEL=STOCK.QTESTOCKVIRTUEL-VQTE[i]
HModifie(STOCK)
FIN
FIN


Permet de mettre à jour la quantité en Stock et la Quantité en Stock Virtuel pour le produit concerné .
Cependant , pas possible de mettre à jour la Quantité dans l'unique alvéole ou se trouve le Produit .
Pourtant au Déboggage , aucune Erreur de signalé !!!!!

Grand Merci à Vous . Lhassane
Répondre
#4
Bonjour...

BOURBAKI a écrit :Cependant , pas possible de mettre à jour la Quantité dans l'unique alvéole ou se trouve le Produit .

Que veux-tu dire par là ?... il faut préciser on n'est pas à l'intérieur de ton cerveau ou devant ta machine.

BOURBAKI a écrit :Pourtant au Déboggage , aucune Erreur de signalé !!!!!

Si le code est correct mais qu'il manque le bon traitement, aucune erreur ne sera indiquée !
Se souvenir et savoir sont deux choses différentes. Se souvenir, c'est garder en mémoire. En revanche, savoir signifie assimiler sans dépendre d'un modèle.

WD 4.1 => 23


Répondre
#5
Salut Bourbaki,

Si ton stock par alvéole ne se met pas à jour, logiquement c'est que tu ne passes pas dans tes 4 conditions

SI ( STOCK.PRDPEREMP1=VTPER[i] ET STOCK.PRPRIX1=VPRIX[i] ) ALORS

Plusieurs hypothèses :

Tu ne compares pas le même type de données.
Il y a peut être des arrondis sur les prix en fonction du type de données côté fichier données et table

donc mes questions :

1) STOCK.PRDPEREMP1 est-elle bien une rubrique de type DATE (AAAAMMJJ) dans l'analyse et VTPER une colonne de type date qui renvoie (AAAAMMJJ) ?

2) Quelle est le type de rubrique STOCK.PRPRIX1 (Réel, Monétaire, Numérique) et le type de colonne pour VPRIX ?

3) As tu vérifier au debugger que les valeurs des prix sont bien égales ?
Cordialement

Madsl@nD
Répondre
#6
Madsl@nd a écrit :Salut Bourbaki,
......
Plusieurs hypothèses :

Tu ne compares pas le même type de données.
Il y a peut être des arrondis sur les prix en fonction du type de données côté fichier données et table
donc mes questions :
1) STOCK.PRDPEREMP1 est-elle bien une rubrique de type DATE (AAAAMMJJ) dans l'analyse et VTPER une colonne de type date qui renvoie (AAAAMMJJ) ?
2) Quelle est le type de rubrique STOCK.PRPRIX1 (Réel, Monétaire, Numérique) et le type de colonne pour VPRIX ?
3) As tu vérifier au debugger que les valeurs des prix sont bien égales ?

BJR à Vous Toutes et Tous .
Merci d'abord à Samifred , il a toutes les raisons de s'emporter contre moi et pour cause .... J'ai bien dit plus haut que j'allais être rébarbatif . Je suis entièrement fautif MAIS Restons Cool et Zen . Samifred m'aide beaucoup .
Merci Madsl@nd pour ton intérêt à mon souci .Tu es aussi de Ceux qui m'apportent beaucoup d'aide .

PRDPEREMP1 est la date de péremption dans l'alvéole 1 et VTPER est la péremption du produit vendu . Ce sont des rubriques de Type Date ( AAAAMMJJ qui s'affichent selon **/**/**** ) , je les ai transformées en Chaine pour la Comparaison .

PRPRIX1 est le prix des produits de l'alvéole 1 et VPRIX est le prix du produit vendu , PRPRIX1 est de Type Monétaire Windev et VPRIX est un Numérique ( 999 999.99 )
Je vais faire la modif pour les prix pour maintenir la Cohérence et revenir ......
Mes Amitiés à Vous Deux . Lhassane
Répondre
#7
Re..

Bourbaki a écrit :Merci d'abord à Samifred , il a toutes les raisons de s'emporter contre moi et pour cause ....

Non...! je ne m'emporte pas du tout... :lol:, je n'arrive pas à comprendre ta logique c'est tout. :roll:
Se souvenir et savoir sont deux choses différentes. Se souvenir, c'est garder en mémoire. En revanche, savoir signifie assimiler sans dépendre d'un modèle.

WD 4.1 => 23


Répondre
#8
faut peut être faire un trace pour voir ou le code bloque
Code :
i est un entier
POUR i =1 A TableOccurrence(TABVENTE)
    trace("i: "+i)
   // On modifie le STOCK existant
   HLitRecherche(STOCK,PRCODE,VPRCODE[i])
   SI HTrouve() ALORS
      trace("VPRCODE["+i+"] trouvé")
      SI ( STOCK.PRDPEREMP1=VTPER[i] ET STOCK.PRPRIX1=VPRIX[i] )  ALORS
         STOCK.PRSTK1=STOCK.PRSTK1-VQTE[i]
         trace("cond1")
      FIN

      SI ( STOCK.PRDPEREMP2=VTPER[i] ET STOCK.PRPRIX2=VPRIX[i] ) ALORS
         STOCK.PRSTK2=STOCK.PRSTK2-VQTE[i]
         trace("cond2")
      FIN

      SI  ( STOCK.PRDPEREMP3=VTPER[i] ET STOCK.PRPRIX3=VPRIX[i] ) ALORS
         STOCK.PRSTK3=STOCK.PRSTK3-VQTE[i]
         trace("cond3")
      FIN

      SI  ( STOCK.PRDPEREMP4=VTPER[i] ET STOCK.PRPRIX4=VPRIX[i] ) ALORS
         STOCK.PRSTK4=STOCK.PRSTK4-VQTE[i]
         trace("cond4")
      FIN
      STOCK.QTESTOCK=STOCK.QTESTOCK-VQTE[i]
      STOCK.QTESTOCKVIRTUEL=STOCK.QTESTOCKVIRTUEL-VQTE[i]

   HModifie(STOCK)
   FIN
FIN


ça aide de parfois tracer son code
<!-- m --><a class="postlink" href="http://darkwindev.blogspot.com/">http://darkwindev.blogspot.com/</a><!-- m -->
Répondre
#9
Merci darkWD
Tu viens de m'apprendre quelque chose que je ne savais pas faire .
Tracer le code pour voir ou cela foire . Merci .
En fait , Madsl@nd a bien vu !!! Il s'agit bien de problèmes de COHERENCE de données . C'était tout simple
et Mon Code respectait parfaitement l' Orthodoxie .

Maintenant , cela marche Nickel .
Au passage , une petite question .... Pour les rubriques de type Quantité , ce sont des entiers relatifs
Pour les Quantité en vente , je choisis le type Entier sur 1 Octets , c'est largement Suffisant ???!!!!!
En outre est ce que ce Choix de type , va me donner EXACTEMENT la Somme Algébrique quand on demande dans une Requête
" Faire la somme des Quantités .... " .

Merci à Vous Toutes et Tous . Lhassane
Répondre
#10
BOURBAKI a écrit :.....
Au passage , une petite question .... Pour les rubriques de type Quantité , ce sont des entiers relatifs
Pour les Quantité en vente , je choisis le type Entier sur 1 Octets , c'est largement Suffisant ???!!!!!
En outre est ce que ce Choix de type , va me donner EXACTEMENT la Somme Algébrique quand on demande dans une Requête
" Faire la somme des Quantités .... " .

Merci à Vous Toutes et Tous . Lhassane

Il n' y a Personne pour me répondre ??? Merci
Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  avoir un message signalant une mise à jour dans la base de d fahdDEV 2 1,423 23-09-2009, 01:46 PM
Dernier message: fahdDEV
  mise a jour d'un fichier dbf tintin_tu 2 1,612 29-08-2009, 01:22 PM
Dernier message: tintin_tu
  Mise à jour des combos Adorewindev 2 1,726 19-06-2008, 05:40 PM
Dernier message: bhdih
  Mise à jour tableau depuis une aute fenêtre Adorewindev 2 2,137 08-03-2008, 08:33 PM
Dernier message: Adorewindev
  mise à jour Guest 0 1,205 27-07-2007, 09:16 AM
Dernier message: Guest
  verification de livraison et mise a jour du stock Guest 0 1,271 18-05-2007, 04:27 PM
Dernier message: Guest
  gestion de stock (débutant) Guest 1 1,821 24-04-2007, 12:09 PM
Dernier message: Samifred
  Problème aprés mise à jour de windev rebbah 2 1,204 27-01-2007, 09:22 PM
Dernier message: Guest
  Mise à jour d'applications Arnaud P 0 941 15-01-2007, 01:47 PM
Dernier message: Arnaud P
  Mise a jour fichier Guest 3 1,403 20-10-2006, 06:47 PM
Dernier message: Guest

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)