def _header(self): #[zone A] content = "03" #[zone B1] content += "02" #[zone B2] Espace reserve 8 caracteres content += write('', 8) #[zone B3] numero emetteur (attribue par chaque etablisement 6 caracteres) content += write(self._emeteur['num_emetteur'], 6) #[zone C1-1] code CCD (virement à échéance "E-3") content += write('', 1) #[zone C1-2] Espace reserve 6 caracteres content += write('', 6) #[zone C1-3] date JJMMA content += self._datevir #[zone C2] Raison sociale du donneur d'ordre (24 caracteres max) content += write(self._emeteur['raisonsocial'], 24) #[zone D1-1] Reference virement sur 7 caracteres content += write(self._emeteur['reference'], 7) #[zone D1-2] Espace reserve 17 caracteres content += write('', 17) #[zone D2-1] Espace reserve 2 caracteres content += write('', 2) #[zone D2-2] Virement effectue en euro sur 1 caractere content += "E" #[zone D2-3] Espace reserve 5 caracteres content += write('', 5) #[zone D3] Code Guichet Emetteur 5 caracteres content += write(self._emeteur['guichet'], 5) #[zone D4] Numero de compte Emetteur 11 caracteres content += write(self._emeteur['num_compte'], 11) #[zone E] Espace reserve 16 caracteres content += write('', 16) #[zone F] Espace reserve 31 caracteres content += write('', 31) #[zone G1] code etablissement de la banque du donneur d'ordre # 5 caracteres content += write(self._emeteur['banque'], 5) #[zone G2] Espace reserve 6 caracteres content += write('', 6) content += BR_LINE return content
def _add(self, reference, raisonsocial, domiciliation, guichet, compte, montant, libelle, etablissement, balance=''): #[zone A]06 -> Code enregistrement (Entête destinataire) content = "06" #[zone B1]02 -> Nature de l'enregistrement (virement à vue ) content += "02" #[zone B2]Espace réservé 8 caractères content += write("", 8) #[zone B3] numéro émetteur (numéro attribué par chaque établissement à # son client émetteur) content += write(self._emeteur['num_emetteur'], 6) #[zone C1] référence (numéro facture par exemple) 12car content += write(reference, 12) #[zone C2] raison social du destinataure (24 caractères max) content += write(raisonsocial, 24) #[zone D1] domiciliation : désignation en clair du guichet et de la # banque de domiciliataire (facultatif) sur 24 caractères maxi content += write(domiciliation, 24) #[zone D2] balance des paiements sur 8 caractères # (réservé pour les salaires et pension) content += write("", 8) #[zone D3] Code Guichet 5 caractères content += write(guichet, 5) #[zone D4] Numéro de compte sur 11 caractères content += write(compte, 5) #[zone E]Montant : les 16 positions contiennent le montant centimes # compris (00 s'il y a lieu) cadré à droite , non signé, complété à # gauche par des zéros content += write(montant, 16, rpad=True, fill_char='0') #[zone F]Libellé : 31 caractères à la disposition du client émetteur # pour indication du motif et des références de l'opération content += write(libelle, 31) #[zone G1]Code établissement destinataire 5 chiffres content += write(etablissement, 5) #[zone G2]Zone réservée de 6 caractères content += write("", 6) content += BR_LINE return content
def _render_header(self): if self._header: line = write('01', 2) line += write(self._header['bank_code'], 5) line += write(' ', 4) # reserved zone line += write(self._header['agency_code'], 5) line += write(self._header['currency'], 3) line += write('2', 1) # number of decimal line += write(' ', 1) # reserved zone line += write(self._header['account_number'], 11) line += write(' ', 2) # reserved zone line += write(date_format(self._header['date']), 6) line += write(' ', 50) # reserved zone line += write(number_format(self._header['amount']), 14, rpad=True, fill_char='0') line += write(' ', 16) # reserved zone return line + BR_LINE return ''
def _footer(self): #[zone A]08 -> Code enregistrement (Entête Total) content = "08" #[zone B1]02 -> Nature de l'enregistrement (virement à vue ) content += "02" #[zone B2]8 espaces content += write("", 8) #[zone B3] numéro émetteur (numéro attribué par chaque établissement à son client émetteur) content += write(self._emeteur['num_emetteur'], 6) #[zone C1]Réservée 12 caractères content += write("", 12) #[zone C2]Réservée 24 caractères content += write("", 24) #[zone D1]Réservée 24 caractères content += write("", 24) #[zone D2]Réservée 8 caractères content += write("", 8) #[zone D3]Réservée 5 caractères content += write("", 5) #[zone D4]Réservée 11 caractères content += write("", 11) #[zone E]Montant : les 16 positions contiennent le montant centimes # compris (00 s'il y a lieu) cadré à droite , non signé, complété à gauche par des zéros content += write(self.total, 16, rpad=True, fill_char='0') #[zone F]Réservée 31 caractères content += write("", 31) #[zone G1]Réservée 5 caractères content += write("", 5) #[zone G2]Réservée 6 caractères content += write("", 6) content += BR_LINE return content
def add(self, bank_code, operation_code, agency_code, currency, account_number, date, label, amount, reference): line = write('04', 2) line += write(bank_code, 5) line += write(operation_code, 4) line += write(agency_code, 5) line += write(currency, 3) line += write('2', 1) # number of decimal line += write(' ', 1) # SIT code line += write(account_number, 11) line += write('08', 2) # interbank code line += write(date_format(date), 6) line += write(' ', 2) # rejected code line += write(date_format(date), 6) line += write(label, 31) line += write(' ', 2) # reserve zone line += write(' ', 7) # entry writing code line += write(' ', 1) # exoneration code line += write(' ', 1) # reserve zone line += write(number_format(amount), 14, rpad=True, fill_char='0') line += write(reference, 16) self._content.append(line) return self