PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Déterminer le prix d'un article en vigeur à une date donnée
Déterminer le prix d'un article en vigeur à une date donnée
Iniciado por jb.dumontier, 27,oct. 2004 21:31 - 6 respuestas
Publicado el 27,octubre 2004 - 21:31
Bonjour

Voici un petit problème plus compliqué qu'il n'y parait (au moins pour moi!)

J'ai un fichier TARIF dans lequel je met

- le code fournisseur
- la référence article
- la date d'entrée en vigeur du tarif
- le prix HT

Comment connaître le prix d'un article d'un fournisseur en vigeur à une date donnée?

(Si l'article n'est plus en vente il suffit de donner un prix négatif ).
Le fichier peut comporter des prix futurs (prix au 01/01/2005 par exemple)

Ce problème se pose dans de nombreux autres cas.

- Déterminer le grade d'un salarié à un moment donné (on a fichier qui contient toutes les nominations).
- Déterminer si un appartement est libre ou non...

Y aurait'il un exemple qui traite de cela?

Merci pour toutes vos suggestions
Publicado el 27,octubre 2004 - 22:51
Bonjour
Je pense qu il te faut 2 fichiers si j ai bien compris !
1 - Article : code article, code fournisseur ...
2 - Tarif : code article, date entree, prix ht
En esperant avoir eclairci ton probleme
Stephane

"Jean Baptiste Dumontier" <jb.dumontier@winnix.com> a écrit dans le message
de news: 417fd1d9@news.pcsoft.fr...
Bonjour

Voici un petit problème plus compliqué qu'il n'y parait (au moins pour

moi!)

J'ai un fichier TARIF dans lequel je met

- le code fournisseur
- la référence article
- la date d'entrée en vigeur du tarif
- le prix HT

Comment connaître le prix d'un article d'un fournisseur en vigeur à une

date donnée?

(Si l'article n'est plus en vente il suffit de donner un prix négatif ).
Le fichier peut comporter des prix futurs (prix au 01/01/2005 par exemple)

Ce problème se pose dans de nombreux autres cas.

- Déterminer le grade d'un salarié à un moment donné (on a fichier qui

contient toutes les nominations).
- Déterminer si un appartement est libre ou non...

Y aurait'il un exemple qui traite de cela?

Merci pour toutes vos suggestions

Publicado el 27,octubre 2004 - 23:52
Bonjour,

Pour ton problème, il faut travailler sur l'index avec une clée composée du
type IDTARIF+DATE, stockage dans un fichier historique secondaire si
possible.

Ensuite, tu effetueras une recherche avec HLitRechercheDernier sur ta clé
composée avec HConstruitValClé.

Voilà pour la technique.

Bon dev.
Publicado el 28,octubre 2004 - 03:36
Moi je créerais une clé composée avec
la ref de l'article + la date de validité du tarif
si l'article n'est pas unique pour un fournisseur
il faut rajouter le code fournisseur à la fin,
par contre si le fournisseur est toujours connu
au moment de la recherche, places le en début de clé.

Dans la recherche tu écris
HLitrecherche("Tarif","Clécomposée",RefArt+DateTarif)
1/ si 1 art = 1 fournisseur tu seras positionné sur le bon tarif
si la date est identique , sinon faire un HLitPrécédent() pour être
sur le tarif en vigueur.

2/ si 1 art = x fournisseurs , c'est un peu plus compliqué
même principe si la date est trouvée exactement, sinon on
recule, mais les fournisseurs ne changeant pas de tarif en
même temps, il sera peut être plus rapide de charger tous les
tarifs d'un article dans une table cachée et de la trier sur
fournisseur et date et de supprimer du tableau les lignes
qui ne correspondent pas à ta recherche.

J'espère que j'avais bien compris ton problème ?
Et que je t'ai apporté une piste.
Yves

"Jean Baptiste Dumontier" <jb.dumontier@winnix.com> a écrit dans le message
de news: 417fd1d9@news.pcsoft.fr...
Bonjour

Voici un petit problème plus compliqué qu'il n'y parait (au moins pour

moi!)

J'ai un fichier TARIF dans lequel je met

- le code fournisseur
- la référence article
- la date d'entrée en vigeur du tarif
- le prix HT

Comment connaître le prix d'un article d'un fournisseur en vigeur à une

date donnée?

(Si l'article n'est plus en vente il suffit de donner un prix négatif ).
Le fichier peut comporter des prix futurs (prix au 01/01/2005 par exemple)

Ce problème se pose dans de nombreux autres cas.

- Déterminer le grade d'un salarié à un moment donné (on a fichier qui

contient toutes les nominations).
- Déterminer si un appartement est libre ou non...

Y aurait'il un exemple qui traite de cela?

Merci pour toutes vos suggestions

Publicado el 28,octubre 2004 - 08:02
On 27-Oct-2004, "Wil" <research.mail@tiscali.fr> wrote:

Bonjour,

Pour ton problème, il faut travailler sur l'index avec une clée composée
du
type IDTARIF+DATE, stockage dans un fichier historique secondaire si
possible.

Ensuite, tu effetueras une recherche avec HLitRechercheDernier sur ta clé
composée avec HConstruitValClé.

Voilà pour la technique.

Bon dev.


La solution proposée n'a pas été testée, et je n'ai pas le temps de le faire
maintenant, mais je pense qu'elle doit fonctionner.

Je crois quant à moi, que la clef peut être la date uniquement en spécifiant
le sens descendant...
Une recherche générique sur la date te positionneras sur le premier prix
pour la date égale ou plus petite à la date recherchée et tu auras
automatiquement le prix valable pour cette date
exemple :
....
20040401 10.00
20040301 09.75
20040201 09.50
20040101 10.00
....

pour trouver le prix au 10/03/2004, par exemple, il suffit de faire :
hlitrecherchepremier(prix,date,"20040310",hgénérique)
qui te renverra vrai pour hTrouve et faux pour hendehors et tu seras sur
sur "20040301 09.75" ce qui est la valeur recherchée ...
Ne pas oublier la constante hGénérique, sans quoi, hendehors sera a vrai et
tu ne seras pas sur le bon enregistrement ...

Je ne suis plus sûr du comportement de hlitrecherchepremier() avec des index
descendants ... il est possible que l'enregistrement actif soit
l'enregistrement précédent celui qui est recherché ...
a vérifier donc ...


Bien à toi !


--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
Publicado el 28,octubre 2004 - 11:22
Bonjour

Pendant que je dormais vous réflechissiez!

Merci pour toutes vos suggestions que je vais tester :

Dans mon cas il y a plusieurs fournisseurs possibles qui peuvent proposer le même article avec la même rérérence ou avec une référence différente. Cela pourrait être le cas d'un comparateur de prix que l'on alimenterait avec des catalogues fournisseurs.

Il me faudrait peut être une clé composée de

CodeFournisseur+Référence+Date

puis utiliser les ordres HLitRechercheDernier et HLit précédent (car il vaut mieux descendre les dates). Il faut aussi tester si l'on est pas en rupture du code fournisseur ou article et tester les valeurs de HTrouve et HEnDehors.

J'ai pensé aussi utiliser HFiltre mais je ne maitrise pas très bien!

Merci encore
Publicado el 28,octubre 2004 - 12:18
Si tu as plusieurs fournisseurs par article, ne le met pas en premier
dans ta clé composée, ce serait inexploitable.

Sinon à la place de Hfiltre essayes de créer une requête avec
l'éditeur, c'est simple et très puissant, et ensuite le résultat
s'utilise comme un fichier.

Yves


"Jean Baptiste Dumontier" <jb.dumontier@winnix.com> a écrit dans le message
de news: 418094bb@news.pcsoft.fr...

Bonjour

Pendant que je dormais vous réflechissiez!

Merci pour toutes vos suggestions que je vais tester :

Dans mon cas il y a plusieurs fournisseurs possibles qui peuvent proposer

le même article avec la même rérérence ou avec une référence différente.
Cela pourrait être le cas d'un comparateur de prix que l'on alimenterait
avec des catalogues fournisseurs.

Il me faudrait peut être une clé composée de

CodeFournisseur+Référence+Date

puis utiliser les ordres HLitRechercheDernier et HLit précédent (car il

vaut mieux descendre les dates). Il faut aussi tester si l'on est pas en
rupture du code fournisseur ou article et tester les valeurs de HTrouve et
HEnDehors.

J'ai pensé aussi utiliser HFiltre mais je ne maitrise pas très bien!

Merci encore