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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
| // Déclaration et initialisation des variables
IDFichier est un entier
ResEcrit est un booléen = Vrai
ResFermeFichier est un entier
dDancienSolde est une Date
dDnouveauSolde est une Date
sOldMontantSolde est une chaîne
sNewMontantSolde est une chaîne
sCodeguichet est une chaîne = "01001"
sDevise est une chaîne = "XOF"
sNumCompte est une chaîne = ""
sLastLettre est une chaîne = ""
//Variables Communes pour chaque type d'opération dans le rélévé
//On fixe les codes Enregistrements de l'ancien solde, libéllé et du nouveau solde
//Ancien Solde
sCodeReg1 est une chaîne ="01"
//Libellé
sCodeReg2 est une chaîne ="04"
//Nouveau Solde
sCodeReg3 est une chaîne ="07"
sNbreDecimale est une chaîne = "0"
//Pour 04 et 05
sCodeope est une chaîne = " "
//Variables pour le type 01 (Ancien Solde)
sCodeEnregAncienSolde est une chaîne = "01"
//Variables pour le type 04 (Mouvement)
sCodeopeinterne est une chaîne = " "
sZonereserve4 est une chaîne = " "
sCoderejet est une chaîne = " "
sZonereserve7 est une chaîne = " "
sNumEcriture est une chaîne = " "
sExo est une chaîne = " "
sIndisponibilite est une chaîne = " "
sZref est une chaîne = " "
//Variables pour le type 05 (Complement)
sZonereserve5 est une chaîne = " "
sInfcomp est une chaîne = " "
sZonereserve6 est une chaîne = " "
//Récupération du numéro de compte sans le chiffre 2
HLitRecherche(SOCIETE,IDSOCIETE,COMBO_Choisissez_une_société)
SI HTrouve(SOCIETE) ALORS
// Sélection du nom et du chemin du fichier en fonction du client
// On récupère le nom du fichier en sortie et les autres informations Date (ancien/nouveau solde) montant (ancien/nouveau solde)
NomCheminFichier est une chaîne = "D:\AF120"
dDate est une Date = Droite(DateSys(),6)
NomCheminFichier = NomCheminFichier + "\" + SOCIETE.Nom_Fichier + "_" + dDate + ".TXT"
dDancienSolde = SOCIETE.DateAncienSolde
dDnouveauSolde = SOCIETE.DateNouveauSolde
sOldMontantSolde = Remplace(SansEspace(SOCIETE.MontantAncienSolde)," ","")
sNewMontantSolde = Remplace(SansEspace(SOCIETE.MontantNouveauSolde)," ","")
// Ouverture du fichier
IDFichier = fOuvre(NomCheminFichier, foCréation)
// Affichage du message d'erreur si l'ouverture n'a pas été effectuée
SI IDFichier = -1 ALORS
Erreur(ErreurInfo(errFichier))
SINON
sNumCompte = SansEspace(AFB120.NCompte)
sNumCompte = Milieu(sNumCompte,1,6) + Milieu(sNumCompte,8,12)
//Signe de l'ancien solde
sIgneS est une chaîne = Gauche(sOldMontantSolde,1)
//Si positif alors on prend son dernier chiffre
sLastChiffreP est une chaîne = Droite(sOldMontantSolde,1)
sOldMontantSolde = ChaîneSupprime(sOldMontantSolde,sIgneS)
sOldMontantSolde = Gauche(sOldMontantSolde, Taille(sOldMontantSolde)-1)
sIgneS=sIgneS+sLastChiffreP
HLitPremier(FormatAFB)
HLitRecherche(FormatAFB,FormatAFB.Chiffre,sIgneS)
SI HTrouve(FormatAFB) = Vrai ALORS
//info("Le record "+sIgnes+" a été trouvé !!")
sLastLettre = SansEspace(FormatAFB.Lettre)
//info(FormatAFB.Lettre)
FIN
//Ecriture de la 1ère 01 ligne du fichier avec l'ancien solde et la date
//On affecte la nouvelle lettre au montant
sOldMontantSolde = sOldMontantSolde+sLastLettre
sOldMontantSolde = "00000000000000"+ sOldMontantSolde
sOldMontantSolde = Droite(sOldMontantSolde,14)
HLitPremier(AFB120, IDAFB120)
//LI est un entier = HLitPremier(AFB120,IDAFB120)
SI Val(Gauche(dDancienSolde,2)) < 10 ALORS
Trace(Val(Gauche(dDancienSolde,2)))
dDancienSolde = "0"+dDancienSolde
FIN
ResEcrit = fEcritLigne(IDFichier,"01" + "ML043" + " " + sCodeguichet + sDevise + sNbreDecimale + " " + sNumCompte + " " +dDancienSolde + " " + sOldMontantSolde + " ")
TANTQUE HEnDehors = Faux //ET ResEcrit = Vrai
// Écriture des enregistrements ligne par ligne dans le fichier texte
//Formatage des champs en format AFB210
DateValeur est une chaîne = AFB120.DateValeur
sLibelle est une chaîne = Gauche(AFB120.Libelle,36)
sCodeinterne est une chaîne = Milieu(AFB120.Libelle,39,4)
sMontantC est une chaîne = AFB120.MontantCredit
sMontantD est une chaîne = AFB120.MontantDebit
//sNumCompte = AFB120.NCompte
//Récupération du montant Débit/Crédit de la transaction et caste pour faire 14 caractères
montant est une chaîne = ""
sDernierChiffre est une chaîne =""
sIgneM est une chaîne = ""
SI sMontantC = "" ALORS
montant = sMontantD
sIgneM = Gauche(montant,1)
montant = ChaîneSupprime(montant,sIgneM)
sDernierChiffre = Droite(montant,1)
sIgneM = sIgneM+sDernierChiffre
SINON
montant = sMontantC
sIgneM = Gauche(montant,1)
montant = ChaîneSupprime(montant,sIgneM)
sDernierChiffre = Droite(montant,1)
sIgneM = sIgneM+sDernierChiffre
FIN
HLitRecherche(FormatAFB,FormatAFB.Chiffre,sIgneM)
SI HTrouve() = Vrai ALORS
sLastLettre = FormatAFB.Lettre
FIN
//On enlève le dernier chiffre
montant = Gauche(montant,Taille(montant)-1)
//Trace(sLastLettre)
//HLitSuivant(AFB120, IDAFB120)
montant = montant+sLastLettre
//On récupère le montant sur 14 Digits
montant = "00000000000000" + montant
montant = Droite(montant,14)
ResEcrit = fEcritLigne(IDFichier,"04" + "ML043" + sCodeinterne + sCodeguichet + sDevise + sNbreDecimale + " " + sNumCompte + "911" + DateValeur + " " + sLibelle +" " + " " + " " + " " + montant + " ")
HLitSuivant(AFB120, IDAFB120)
FIN
sIgneN est une chaîne = Milieu(sNewMontantSolde,1,1)
sLastChiffreN est une chaîne = Droite(sNewMontantSolde,1)
sNewMontantSolde = ChaîneSupprime(sNewMontantSolde,sIgneN)
//On les concatènes
sIgneN = SansEspace(sIgneN+sLastChiffreN)
//On enlève le signe et le dernier chiffre
sNewMontantSolde = ChaîneSupprime(sNewMontantSolde,sIgneN)
sNewMontantSolde = Gauche(sNewMontantSolde,Taille(sNewMontantSolde)-1)
//sNewMontantSolde = ChaîneSupprime(sNewMontantSolde,sLastChiffreN)
//Recherche du signe concaténé au dernier chiffre dans la table FormatAFB
HLitPremier(FormatAFB)
HLitRecherche(FormatAFB,FormatAFB.Chiffre, sIgneN,hIdentique)
SI HTrouve(FormatAFB) = Vrai ALORS
sLastLettre = FormatAFB.Lettre
FIN
//On affecte la nouvelle lettre au montant
sNewMontantSolde = sNewMontantSolde+sLastLettre
sNewMontantSolde = "00000000000000"+sNewMontantSolde
sNewMontantSolde = Droite(sNewMontantSolde,14)
SI Val(Gauche(dDnouveauSolde,2)) < 10 ALORS
dDnouveauSolde = "0"+dDnouveauSolde
FIN
//Ecriture de la dernière ligne du rélévé 07 le nouveau Solde
ResEcrit = fEcritLigne(IDFichier,"07" + "ML043" + " " + sCodeguichet + sDevise + sNbreDecimale + " " + sNumCompte + " " +dDnouveauSolde + " " + sNewMontantSolde + " ")
// Affichage du message d'erreur si l'écriture n'a pas été effectuée
SI ResFermeFichier = -1 ALORS
// Affichage du message d'erreur si la fermeture n'a pas été effectuée
Erreur(ErreurInfo(errMessage))
FIN
FIN
FIN
//RAZ(vrai)
Info("Exportation terminée avec succès !!!!") |
Partager