Composant de conversion de devise avec l’euro comme pivot sous Adélia.

Structure du fichier DEVISEL1 :


! Id. ! Nom ! Désignation ! Longueur !


! 1 ! T2_COD_DEV ! Code devise ! 3 !
! ! T2_LIB_DEV ! Libellé devise ! 30 !
! ! T2_ARRONDI ! niveau d’arrondi (1 à  5) ! 1 0 !
! ! T2_TAU_DEV ! Valeur devise par rapport à  l’euro ! 18 9 !


Règle de gestion CONVER_DEVISE :


Classe : Règle de gestion avec paramètres

Commentaires :
Cette règle de gestion reçoit 3 paramètres (code et valeur de la monnaie
de départ, code de la monnaie d'arrivée) et retourne 2 paramètres qui
sont la valeur de la monnaie d'arrivée et un code erreur.
Si le code erreur est retourné à  blanc, alors il n'y pas d'erreur
dans le calcul de la valeur d'arrivée, s'il est retourné à  "*"
la valeur calculée est incorrecte.
Points importants :
- toute conversion passe par la monnaie pivot qu'est l'euro
- si la valeur d'une devise par rapport à  l'euro n'est pas fixée,
alors il y aura une division par zéro, d'où l'importance de tester
le diviseur et de retourner un code erreur en cas d'anomalie.

Paramètres : 1 - code devise d'origine 3 OBLI
2 - valeur d'origine 15 5 OBLI
3 - code devise de destination 3 OBLI
4 - valeur devise de destination 15 5 OBLI
5 - code anomalie 1 OBLI

Source :

DECLARER WGCDOR;WG_COD_DEV_ORI 3
DECLARER WGVAOR;WG_VAL_DEV_ORI 15;5
DECLARER WGAAOR;WG_ALP_DEV_ORI 15
DECLARER WGCDDS;WG_COD_DEV_DES 3
DECLARER WGVADS;WG_VAL_DEV_DES 15;5
DECLARER WGAADS;WG_ALP_DEV_DES 15
DECLARER WGCCER;WG_COD_CNV_ERR 1
*
WG_COD_DEV_ORI = :01
WG_VAL_DEV_ORI = :02
WG_ALP_DEV_ORI = WG_VAL_DEV_ORI
WG_COD_DEV_DES = :03
WG_VAL_DEV_DES = 0
WG_COD_CNV_ERR = *BLANK
*
APPELER DEVCNV WG_COD_DEV_ORI WG_ALP_DEV_ORI WG_COD_DEV_DES
WG_ALP_DEV_DES WG_COD_CNV_ERR
*
WG_VAL_DEV_DES = WG_ALP_DEV_DES
:04 = WG_VAL_DEV_DES
:05 = WG_COD_CNV_ERR

Programme DEVCNV :

Environnement de données :


! Code ! Mot Directeur !Type! Lg !Dec.!


!PVADES !P_VAL_DEV_DES ! A ! 15! !
!PVAORI !P_VAL_DEV_ORI ! A ! 15! !
!WARDC0 !W_ARR_DEC_0 ! N ! 6! 0 !
!WARDC1 !W_ARR_DEC_1 ! N ! 7! 1 !
!WARDC2 !W_ARR_DEC_2 ! N ! 8! 2 !
!WARDC3 !W_ARR_DEC_3 ! N ! 9! 3 !
!WARDC4 !W_ARR_DEC_4 ! N ! 10! 4 !
!WARDVD !W_ARR_DEV_DES ! N ! 1! 0 !
!WCNERR !W_COD_CNV_ERR ! A ! 1! !
!WCDDES !W_COD_DEV_DES ! A ! 3! !
!WCDORI !W_COD_DEV_ORI ! A ! 3! !
!WTADES !W_TAU_DEV_DES ! N ! 18! 9 !
!WTAORI !W_TAU_DEV_ORI ! N ! 18! 9 !
!WVADES !W_VAL_DEV_DES ! N ! 15! 5 !
!WVAORI !W_VAL_DEV_ORI ! N ! 15! 5 !


Liste des vues :


! N° ! Mot-Directeur !Fic./Zones! Désignation ! Utilisation ! Critères d’accès


! 01 !DEVISEL1 !DEVISEL1 !Table devise ! Lecture. ! Par clé.
! !T2_COD_DEV ! 10 A ! ! !


Source du programme :


********************************************************************
* TITRE : CONVERSION D'UNE DEVISE EN UNE AUTRE *
* Créé par : GREGORY JARRIGE Le: 27/07/2000 *
*------------------------------------------------------------------*
* Paramètres : CODE DEVISE D'ORIGINE 3 *
* VALEUR D'ORIGINE 15;5 *
* CODE DEVISE DE DESTINATION 3 *
* VALEUR DEVISE DE DESTINATION 15;5 *
* CODE ANOMALIE 1 *
********************************************************************
RECEVOIR W_COD_DEV_ORI P_VAL_DEV_ORI W_COD_DEV_DES P_VAL_DEV_DES W_COD_CNV_ERR
*
W_VAL_DEV_ORI = P_VAL_DEV_ORI
W_VAL_DEV_DES = 0
W_TAU_DEV_ORI = 0
W_TAU_DEV_DES = 0
W_COD_CNV_ERR = *BLANK
W_ARR_DEV_DES = *BLANK
*
*-- Si Devise Origine = Devise Destination Alors Pas de conversion
SI W_COD_DEV_ORI = W_COD_DEV_DES
W_VAL_DEV_DES = W_VAL_DEV_ORI
SINON
*-- Si les 2 devises sont différentes de l'euro alors on utilise
* l'euro comme devise pivot pour la conversion
*
*-- Init. Taux Devise principale
SI W_COD_DEV_ORI <> 'EUR' ET W_COD_DEV_DES <> 'EUR'
T2_COD_DEV = *BLANK
T2_COD_DEV = W_COD_DEV_ORI
LIRE DEVISEL1
SI DEVISEL1 EXISTE
W_TAU_DEV_ORI = T2_TAU_DEV
SINON
W_TAU_DEV_ORI = 0
FIN
*
*-- Init. Taux Devise secondaire
T2_COD_DEV = *BLANK
T2_COD_DEV = W_COD_DEV_DES
LIRE DEVISEL1
SI DEVISEL1 EXISTE
W_TAU_DEV_DES = T2_TAU_DEV
W_ARR_DEV_DES = T2_ARRONDI
SINON
W_TAU_DEV_DES = 0
FIN
SI W_TAU_DEV_ORI <> 0
W_VAL_DEV_DES H = W_VAL_DEV_ORI / W_TAU_DEV_ORI * W_TAU_DEV_DES
SINON
W_COD_CNV_ERR = '*'
FIN
SINON
*-- Conversion d'une devise X en Euro
SI W_COD_DEV_DES = 'EUR'
T2_COD_DEV = *BLANK
T2_COD_DEV = W_COD_DEV_ORI
LIRE DEVISEL1
SI DEVISEL1 EXISTE
W_TAU_DEV_ORI = T2_TAU_DEV
SINON
W_TAU_DEV_ORI = 0
FIN
T2_COD_DEV = *BLANK
T2_COD_DEV = W_COD_DEV_DES
LIRE DEVISEL1
SI DEVISEL1 EXISTE
*-- Récupération du niveau d'arrondi
W_ARR_DEV_DES = T2_ARRONDI
FIN
SI W_TAU_DEV_ORI <> 0
W_VAL_DEV_DES H = W_VAL_DEV_ORI / W_TAU_DEV_ORI
SINON
W_COD_CNV_ERR = '*'
FIN
SINON
*-- Conversion de l'Euro en une devise X
T2_COD_DEV = *BLANK
T2_COD_DEV = W_COD_DEV_DES
LIRE DEVISEL1
SI DEVISEL1 EXISTE
W_VAL_DEV_DES H = W_VAL_DEV_ORI * T2_TAU_DEV
W_ARR_DEV_DES = T2_ARRONDI
SINON
W_COD_CNV_ERR = '*'
FIN
FIN
FIN
FIN
*
*-- Calcul de l'arrondi
*
SI W_VAL_DEV_DES <> 0 ET W_ARR_DEV_DES <> *BLANK ET W_COD_CNV_ERR = *BLANK
SI W_ARR_DEV_DES = 4
W_ARR_DEC_4 H = W_VAL_DEV_DES
W_VAL_DEV_DES = W_ARR_DEC_4
SINON
SI W_ARR_DEV_DES = 3
W_ARR_DEC_3 H = W_VAL_DEV_DES
W_VAL_DEV_DES = W_ARR_DEC_3
SINON
SI W_ARR_DEV_DES = 2
W_ARR_DEC_2 H = W_VAL_DEV_DES
W_VAL_DEV_DES = W_ARR_DEC_2
SINON
SI W_ARR_DEV_DES = 1
W_ARR_DEC_1 H = W_VAL_DEV_DES
W_VAL_DEV_DES = W_ARR_DEC_1
SINON
SI W_ARR_DEV_DES = 0
W_ARR_DEC_0 H = W_VAL_DEV_DES
W_VAL_DEV_DES = W_ARR_DEC_0
FIN
FIN
FIN
FIN
FIN
FIN
*
P_VAL_DEV_DES = W_VAL_DEV_DES
*
TERMINER

Print Friendly, PDF & Email