Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
j'aimerai identifier les séjours SSR qui ont une durée de séjour vers la fin de la Zone Forfaitaire (plateau), et pouvoir calculer les montants par jour en fonction du nombre de jour du séjour.
pour être plus clair, à parti des GMT :
pouvoir construire qqch comme ça :
sachant que
J1 = MNT_JOUR_SZB
J2 = J1+MNT_JOUR_SZB
J3 = J2+MNT_JOUR_SZB
.
.
.
.
J9 = PRIX
J10=PRIX.
.
.
.
J29 = PRIX+MNT_JOUR_SZH
J30 = J29+MNT_JOUR_SZH
.
.
Bien sûr, les bornes "Bas" et "Haut" diffèrent d'un GMT à l'autre...
Merci d'avance
PS : je vous joins la table GMT
Florent
Bonjour Florent,
Voici un script qui, à partir de ta table, construit une dimension avec une durée (Jours) et le CODE_GMT, avec le prix en vigueur sur chaque jours.
TEMP:
LOAD
BAS,
CODE_GME,
CLECODEGM,
CODE_GMT,
HAUT,
LIBELLE_GMT,
MNT_JOUR_EXH,
MNT_JOUR_SZB,
MNT_JOUR_SZH,
PRIX,
PRIX_ZB
FROM [lib://dl/PMSI_LIB_SSR_GMT.QVD]
(qvd);
TABLE:
load iterno() as Jours,
if(iterno()<=BAS,MNT_JOUR_SZB,
if(IterNo()<=HAUT+1,PRIX,
PRIX+MNT_JOUR_SZH)) as Tarif,
BAS,
HAUT,
CODE_GMT,
// MNT_JOUR_EXH,
// MNT_JOUR_SZB,
MNT_JOUR_SZH
// PRIX,
// PRIX_ZB
resident TEMP
While iterno()<=100; // La durée Max est définie ici
drop table TEMP;
Dim_TarifsParDurée:
LOAD Jours,
CODE_GMT,
Tarif,
If(rowno()=1 or peek(CODE_GMT)<>CODE_GMT,Tarif,
If(peek(CODE_GMT)=CODE_GMT,
If(Jours>BAS and Jours <=HAUT,Tarif,
If(Jours>=HAUT,Tarif+peek(CUM),
Tarif+peek(Valorisation)
)
)
)
)as Valorisation,
if(Jours<HAUT,0,
if(Jours=HAUT+1,MNT_JOUR_SZH,peek(CUM)+MNT_JOUR_SZH)) as CUM
// If(Jours=HAUT,Tarif+MNT_JOUR_SZH,
// if(Jours>HAUT,peek(CUM)+Tarif)) as TarifHaut
Resident TABLE
Order By CODE_GMT,Jours asc;
drop table TABLE;
Drop fields CUM,Tarif;
Bonjour,
sauf erreur si j'ai bien compris :
le prix en fonction du nb de jours est :
rangemin(BAS,nbjours_sejour) * MNT_JOUR_SZB + rangemax(0, nbjours_sejour - HAUT) * MNT_JOUR_SZH
cdt
Bonjour Florent,
Voici un script qui, à partir de ta table, construit une dimension avec une durée (Jours) et le CODE_GMT, avec le prix en vigueur sur chaque jours.
TEMP:
LOAD
BAS,
CODE_GME,
CLECODEGM,
CODE_GMT,
HAUT,
LIBELLE_GMT,
MNT_JOUR_EXH,
MNT_JOUR_SZB,
MNT_JOUR_SZH,
PRIX,
PRIX_ZB
FROM [lib://dl/PMSI_LIB_SSR_GMT.QVD]
(qvd);
TABLE:
load iterno() as Jours,
if(iterno()<=BAS,MNT_JOUR_SZB,
if(IterNo()<=HAUT+1,PRIX,
PRIX+MNT_JOUR_SZH)) as Tarif,
BAS,
HAUT,
CODE_GMT,
// MNT_JOUR_EXH,
// MNT_JOUR_SZB,
MNT_JOUR_SZH
// PRIX,
// PRIX_ZB
resident TEMP
While iterno()<=100; // La durée Max est définie ici
drop table TEMP;
Dim_TarifsParDurée:
LOAD Jours,
CODE_GMT,
Tarif,
If(rowno()=1 or peek(CODE_GMT)<>CODE_GMT,Tarif,
If(peek(CODE_GMT)=CODE_GMT,
If(Jours>BAS and Jours <=HAUT,Tarif,
If(Jours>=HAUT,Tarif+peek(CUM),
Tarif+peek(Valorisation)
)
)
)
)as Valorisation,
if(Jours<HAUT,0,
if(Jours=HAUT+1,MNT_JOUR_SZH,peek(CUM)+MNT_JOUR_SZH)) as CUM
// If(Jours=HAUT,Tarif+MNT_JOUR_SZH,
// if(Jours>HAUT,peek(CUM)+Tarif)) as TarifHaut
Resident TABLE
Order By CODE_GMT,Jours asc;
drop table TABLE;
Drop fields CUM,Tarif;
Merci Olivier,
ça fonctionne parfaitement pour une durée déterminée.
je vais garder cette syntaxe pour faire une simulation.
Mais je voudrais vraiment faire la courbe, et y insérer un curseur de la moyenne de mes durées de séjours par GME pour savoir ou je me situe par rapport au plateau...
Florent
Bonjour Christophe,
ça fonctionne parfaitement.
Avant de valider, je voudrais pourvoir inscrire les valeurs uniquement pour BAS et HAUT
et placer un curseur (rouge) pour indiquer ou on se situe en terme de DMS...
est-ce faisable ?
Merci.
Florent
Bonjour Florent,
Pour marquer les valeurs, quand tu déplies l'expression, tu ajoute ceci dans "Afficher la Valeur"
(J'ai ajouté les champs BAS et HAUT dans la dimension)
if(Jours=only(BAS) or Jours=Only(HAUT),1,0)
Pour le DMS, je ne crois pas possible de mettre une ligne sur l'abscisse avec ce graphique. Tu peux peut être mettre une autre expression sous forme de symbole, avec la couleur en condition :
J'ai mis la valeur en dur, il faut récupérer la valeur de ton calcul de DMS et sans doute le passer par une variable pour que ça marche
Mon appli en pj
Un grand merci Christophe,
c'est déjà parfait comme ça.
Bravo.
Florent
Bonjour Christophe,
j'ai une bizarrerie sur certains GMT :
le calcul du tableau est faut, le plateau n'est pas correct. Pourtant c'est le cas la plupart du temps...
Merci pour ton retour.
Florent
Hello,
dans le load on prend prix pour le palier,
hors tes données ne sont pas cohérentes car prix <> bas * mt_szb
Bonjour Olivier,
effectivement, 50 (BAS) *199.70 € = 9985,00 € ce qui correspond au montant de la borne basse (BAS), et oui, le prix du plateau n'est pas de ce montant;
ce sont des données officielles, brutes, je n'ai pas la main dessus.
il doit s'agir d'une atypie.
c'est donc pour moi un point de vigilence.
Merci Olivier.