コード例 #1
0
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
コード例 #2
0
    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
コード例 #3
0
    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