def create_payment_for_booking( booking_reimbursement: BookingReimbursement) -> Payment: venue = booking_reimbursement.booking.stock.resolvedOffer.venue payment = Payment() payment.booking = booking_reimbursement.booking payment.amount = booking_reimbursement.reimbursed_amount payment.reimbursementRule = booking_reimbursement.reimbursement.value.description payment.reimbursementRate = booking_reimbursement.reimbursement.value.rate payment.author = 'batch' payment.transactionLabel = make_transaction_label(datetime.utcnow()) if venue.iban: payment.iban = format_raw_iban_or_bic(venue.iban) payment.bic = format_raw_iban_or_bic(venue.bic) else: offerer = venue.managingOfferer payment.iban = format_raw_iban_or_bic(offerer.iban) payment.bic = format_raw_iban_or_bic(offerer.bic) payment.recipientName = venue.managingOfferer.name payment.recipientSiren = venue.managingOfferer.siren if payment.iban: payment.setStatus(TransactionStatus.PENDING) else: payment.setStatus(TransactionStatus.NOT_PROCESSABLE, detail='IBAN et BIC manquants sur l\'offreur') return payment
def test_appends_a_status_to_a_new_payment(self): # given one_second = timedelta(seconds=1) now = datetime.utcnow() payment = Payment() # when payment.setStatus(TransactionStatus.PENDING) # then assert len(payment.statuses) == 1 assert payment.statuses[0].status == TransactionStatus.PENDING assert payment.statuses[0].detail is None assert now - one_second < payment.statuses[0].date < now + one_second
def test_appends_a_status_to_a_payment_with_existing_status(self): # given one_second = timedelta(seconds=1) now = datetime.utcnow() payment = Payment() payment_status = PaymentStatus() payment_status.status = TransactionStatus.PENDING payment_status.date = datetime.utcnow() payment.statuses = [payment_status] # when payment.setStatus(TransactionStatus.SENT) # then assert len(payment.statuses) == 2 assert payment.statuses[1].status == TransactionStatus.SENT assert payment.statuses[1].detail is None assert now - one_second < payment.statuses[1].date < now + one_second