Forums développeurs windev

Version complète : Mise à Jour de Stock ....
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Pages : 1 2 3
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
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
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
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 !
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 ?
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
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:
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
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
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
Pages : 1 2 3