Re: Indirection

Posté par drcharly93 le 19/2/2004 1:30:11
Salut William,

Un début d' ébauche

//*** Déclaration de cTVA ***
cTVA est une classe
 mTabTVATaux est un tableau de 0 réels        //Tableau de taux de TVA
 mTabTVAMontant est un tableau de 0 réels     //Il faut peut être utiliser un monétaire
 mNbrLignes est un entier                     //Nombre de ligne
FIN

//*** Methdode meth_TVALignesAffecte ***
PROCEDURE meth_TVALignesAffecte(pValeur est une chaîne)
sUneLigne est une chaîne
sUnTaux est une chaîne
sunMontant est une chaîne
i est un entier

SI SansEspace(pValeur) = "" ALORS RETOUR //ne fait rien si pvaleur est vide
SI Droite(pValeur) <> "/" ALORS pValeur = "/" //on rajoute / en fin si il n'existe pas
:mNbrLignes = ChaîneOccurrence (pValeur,"/")//On récupère le nombre de ligne
Dimension(:mTabTVATaux,:mNbrLignes)//On redimensionne le tableau 
Dimension(:mTabTVAMontant,:mNbrLignes)//On redimensionne le tableau

BOUCLE	//Pour lire toutes les lignes
 i++
 sUneLigne = ExtraitChaîne (pValeur,i,"/")//On récupère une ligne
 SI SansEspace(sUneLigne) = "" ALORS SORTIR //Si on a plus de lignes alors on sort
 sUnTaux = ExtraitChaîne(sUneLigne,1,"=") //On récupère le taux de la tva
 sunMontant = ExtraitChaîne(sUneLigne,2,"=") //On récupère le montant
 :mTabTVATaux[i] = Val(sUnTaux)
 :mTabTVAMontant[i] = Val(sunMontant)
FIN

//*** meth_TVALignesAffecte ***
PROCEDURE meth_TVALignesAffecte(pValeur est une chaîne)
sUneLigne est une chaîne
sUnTaux est une chaîne
sunMontant est une chaîne
i est un entier

SI SansEspace(pValeur) = "" ALORS RETOUR //ne fait rien si pvaleur est vide
SI Droite(pValeur) <> "/" ALORS pValeur += "/" //on rajoute / en fin si il n'existe pas
:mNbrLignes = ChaîneOccurrence(pValeur,"/") //On récupère le nombre de ligne
Dimension(:mTabTVATaux,:mNbrLignes) //On redimensionne le tableau 
Dimension(:mTabTVAMontant,:mNbrLignes) //On redimensionne le tableau

BOUCLE	//Pour lire toutes les lignes
 i++
 sUneLigne = ExtraitChaîne(pValeur,i,"/")//On récupère une ligne
 SI SansEspace(sUneLigne) = "" ALORS SORTIR //Si on a plus de lignes alors on sort
 sUnTaux = ExtraitChaîne(sUneLigne,1,"=")//On récupère le taux de la tva
 sunMontant = ExtraitChaîne(sUneLigne,2,"=") //On récupère le montant
 :mTabTVATaux[i] = Val(sUnTaux)
 :mTabTVAMontant[i] = Val(sunMontant)
FIN

//*** meth_GetTotalTVA ***
PROCEDURE meth_GetTotalTVA()
nMontantTVA est un réel
i est un entier

SI :mNbrLignes = 0 ALORS RENVOYER 0
POUR i = 1 A :mNbrLignes
 nMontantTVA += :mTabTVAMontant[i]
FIN
RENVOYER nMontantTVA

//*** meth_MAJChamps ***
PROCEDURE meth_MAJChamps(pPrefixeChampsTaux est une chaîne, pPrefixChampsMontant est une chaîne)
i est un entier

POUR i = 1 A :mNbrLignes
 {pPrefixeChampsTaux+i}..Visible = Vrai
 {pPrefixeChampsTaux+i}..Valeur = :mTabTVATaux
 {pPrefixChampsMontant+i}..Visible = Vrai
 {pPrefixChampsMontant+i}..Valeur = :mTabTVAMontant
FIN


Pour utiliser cette classe
TVA est un objet cTVA 

TVA:meth_TVALignesAffecte(Req_Facture.TvaLigne)
TVA:meth_MAJChamps("Rub_TVATx", "Rub_TVAVal")


Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=5&topic_id=590&post_id=2202