1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
PROCEDURE Gbl_Calcul_Numero_Facture(_Date_Creation, _Format_Numero = "AAAAMMXXXXX", _Complement_Trou_Facture = Faux)
//***************************//
// Format_Numero est le format du numéro AAAA pour l'année, MM pour le mois, JJ pour le jour et XXXX pour le numéro
//***************************//
DateTemp est une Date
MaVue est une Source de Données
DateDebutMoisCreation est une Date
DateFinMoisCreation est une Date
NumeroFactureGenere est une chaîne = _Format_Numero
DateDebutMoisCreation = Gauche(_Date_Creation,6) + "01"
DateFinMoisCreation = DateDebutMoisCreation
DateFinMoisCreation..Jour = 1
DateFinMoisCreation..Mois += 1
DateFinMoisCreation..Jour -= 1
chAnnee est une chaîne = DateDebutMoisCreation..Année
chMois est une chaîne = NumériqueVersChaîne( DateDebutMoisCreation..Mois, "02d" )
chJour est une chaîne = NumériqueVersChaîne( DateDebutMoisCreation..Jour, "02d" )
eNumero est un entier = 0
eTailleNumero est un entier = ChaîneOccurrence(_Format_Numero,"X")
eTailleFormat est un entier = Taille(_Format_Numero)
chNumFactureAlpha est une chaîne = ""
Table_Numero_Trouve est un tableau dynamique de 0 entiers
i est un entier
bTrouve est un booléen
NumeroFactureGenere = Remplace( _Format_Numero, "AAAA", chAnnee)
NumeroFactureGenere = Remplace( NumeroFactureGenere, "MM", chMois)
NumeroFactureGenere = Remplace( NumeroFactureGenere, "JJ", chJour)
NumeroFactureGenere = Remplace( NumeroFactureGenere, Répète("X",eTailleNumero), "")
SI HCréeVue(MaVue,FACTURE,"*","","DATE_CREATION>='" + DateDebutMoisCreation + "' ET DATE_CREATION<='" + DateFinMoisCreation + "'") ALORS
HLitPremier(MaVue)
TANTQUE PAS HEnDehors(MaVue)
eNumero = Max(eNumero, Val( Droite( Complète(MaVue.NUMALPHA, eTailleFormat," "), eTailleNumero ) ) )
TableauAjoute(Table_Numero_Trouve, eNumero)
HLitSuivant(MaVue)
FIN
HDétruitVue(MaVue)
FIN
SI PAS _Complement_Trou_Facture ALORS
eNumero++
SINON
bTrouve = Faux
POUR i=1 A eNumero
SI TableauCherche(Table_Numero_Trouve,tcLinéaire,i)=-1 ALORS
bTrouve = Vrai
eNumero = i
SORTIR
FIN
FIN
SI PAS bTrouve ALORS
eNumero++
FIN
FIN
chNumFactureAlpha = NumeroFactureGenere + NumériqueVersChaîne(eNumero,"0"+ eTailleNumero +"d")
RENVOYER chNumFactureAlpha |
Partager