def iter_coming(self): for op in self.path('data.listerOperations.compte.operationAvenir.*.operation.*'): codeOperation = cast(op.get('codeOperation'), int, 0) # Coming transactions don't have real id tr = Transaction.from_dict({ 'type': self.COMING_TYPE_TO_TYPE.get(codeOperation) or Transaction.TYPE_UNKNOWN, 'amount': op.get('montant'), 'card': op.get('numeroPorteurCarte'), }) tr.parse(date=Date(op.get('dateOperation')), vdate=Date(op.get('valueDate')), raw=op.get('libelle')) yield tr
def iter_history(self): for op in self.get('data.listerOperations.compte.operationPassee') or []: codeFamille = cast(self.one('operationType.codeFamille', op), int) tr = Transaction.from_dict({ 'id': op.get('idOperation'), 'type': self.CODE_TO_TYPE.get(codeFamille) or Transaction.TYPE_UNKNOWN, 'category': op.get('categorie'), 'amount': self.one('montant.montant', op), }) tr.parse(raw=op.get('libelleOperation'), date=Date(op.get('dateOperation')), vdate=Date(self.one('montant.valueDate', op))) yield tr
def handle_response(self, transfer): self.check_errors() transfer_data = self.doc['data']['enregistrementVirement'] transfer.id = transfer_data['reference'] assert transfer.exec_date == Date( self.doc['data']['enregistrementVirement'] ['dateExecution']).date() # Timestamp at which the bank registered the transfer register_date = re.sub( ' 24:', ' 00:', self.doc['data']['enregistrementVirement']['dateEnregistrement']) transfer._register_date = Date(register_date) return transfer
def iter_history(self, coming): for op in self.get('data.listerMouvements.listeMouvements') or []: #We have not date for this statut so we just skit it if op.get('statut') == u'En cours': continue tr = Transaction.from_dict({ 'type': Transaction.TYPE_BANK, '_state': op.get('statut'), 'amount': op.get('montantNet'), }) tr.parse(date=Date(op.get('dateSaisie')), vdate=Date(op.get('dateEffet')), raw='%s %s' % (op.get('libelleMouvement'), op.get('canalSaisie') or '')) tr._op = op if (op.get('statut') == u'Traité') ^ coming: yield tr
def handle_response(self, account, recipient, amount, reason): self.check_errors() transfer_data = self.doc['data']['validationVirement'] self.abort_if_unknown(transfer_data) if 'idBeneficiaire' in transfer_data and transfer_data[ 'idBeneficiaire'] is not None: assert transfer_data['idBeneficiaire'] == recipient.id elif 'ibanCompteCrediteur' in transfer_data and transfer_data[ 'ibanCompteCrediteur'] is not None: assert transfer_data['ibanCompteCrediteur'] == recipient.iban exec_date = Date(transfer_data['dateExecution']).date() today = datetime.today().date() if transfer_data['typeOperation'] == '1': assert exec_date == today else: assert exec_date > today transfer = Transfer() transfer.currency = transfer_data['devise'] transfer.amount = Decimal(transfer_data['montantEuros']) transfer.account_iban = transfer_data['ibanCompteDebiteur'] transfer.account_id = account.id try: transfer.recipient_iban = transfer_data[ 'ibanCompteCrediteur'] or recipient.iban except KeyError: # In last version, json contains a key 'idBeneficiaire' containing: # "idBeneficiaire" : "00003##00001####FR7610278123456789028070101", transfer.recipient_id = transfer_data['idBeneficiaire'] transfer.recipient_iban = transfer.recipient_id.split( '#')[-1] or recipient.iban else: transfer.recipient_id = recipient.id transfer.exec_date = exec_date transfer.fees = Decimal(transfer_data['montantFrais']) transfer.label = transfer_data['motifVirement'] transfer.account_label = account.label transfer.recipient_label = recipient.label transfer.id = transfer_data['reference'] # This is true if a transfer with the same metadata has already been done recently transfer._doublon = transfer_data['doublon'] transfer.account_balance = account.balance return transfer
def handle_response(self, account, recipient, amount, reason): self.check_errors() transfer_data = self.doc['data']['validationVirement'] self.abort_if_unknown(transfer_data) if transfer_data['idBeneficiaire'] is not None: assert transfer_data['idBeneficiaire'] == recipient.id exec_date = Date(transfer_data['dateExecution']).date() today = datetime.today().date() if transfer_data['typeOperation'] == '1': assert exec_date == today else: assert exec_date > today transfer = Transfer() transfer.currency = transfer_data['devise'] transfer.amount = Decimal(transfer_data['montantEuros']) transfer.account_iban = transfer_data['ibanCompteDebiteur'] transfer.recipient_iban = transfer_data[ 'ibanCompteCrediteur'] or recipient.iban transfer.account_id = account.id transfer.recipient_id = recipient.id transfer.exec_date = exec_date transfer.fees = Decimal(transfer_data['montantFrais']) transfer.label = transfer_data['motifVirement'] transfer.account_label = account.label transfer.recipient_label = recipient.label transfer.id = transfer_data['reference'] # This is true if a transfer with the same metadata has already been done recently transfer._doublon = transfer_data['doublon'] transfer.account_balance = account.balance return transfer