Пример #1
0
def generate_initial_payment_data(tot=50,
                                  days_of_history=7,
                                  number_of_senders=None):
    data_list = []
    sender_prisoner_pairs = get_sender_prisoner_pairs(number_of_senders)
    for _ in range(tot):
        random_date = latest_payment_date() - datetime.timedelta(
            minutes=random.randint(0, 1440 * days_of_history))
        random_date = timezone.localtime(random_date)
        amount = random_amount()
        sender, prisoner = next(sender_prisoner_pairs)
        data = {
            'amount': amount,
            'service_charge': int(amount * 0.025),
            'prisoner_name': prisoner.prisoner_name,
            'prisoner_number': prisoner.prisoner_number,
            'prisoner_dob': prisoner.prisoner_dob,
            'prison': prisoner.prison,
            'recipient_name': prisoner.prisoner_name,
            'created': random_date,
            'modified': random_date,
        }
        data.update(sender)
        data_list.append(data)

    return data_list
def generate_initial_payment_data(tot=50,
                                  days_of_history=7):
    data_list = []
    sender_prisoner_pairs = get_sender_prisoner_pairs()
    for _ in range(tot):
        random_date = latest_payment_date() - datetime.timedelta(
            minutes=random.randint(0, 1440 * days_of_history)
        )
        random_date = timezone.localtime(random_date)
        amount = random_amount()
        sender, prisoner = next(sender_prisoner_pairs)
        data = {
            'amount': amount,
            'service_charge': int(amount * 0.025),
            'prisoner_name': prisoner.prisoner_name,
            'prisoner_number': prisoner.prisoner_number,
            'single_offender_id': prisoner.single_offender_id,
            'prisoner_dob': prisoner.prisoner_dob,
            'prison': prisoner.prison,
            'recipient_name': prisoner.prisoner_name,
            'created': random_date,
            'modified': random_date,
        }
        data.update(sender)
        data_list.append(data)

    return data_list
def make_csnum_credits(today, prisoner, count, sender_profile=None):
    credit_list = []
    for day in range(count):
        sender = sender_profile or make_sender()
        debit_card = sender.debit_card_details.first()
        credit = mommy.make(
            Credit,
            amount=random_amount(),
            sender_profile=sender,
            prisoner_profile=prisoner,
            received_at=today - datetime.timedelta(day),
            resolution=CREDIT_RESOLUTION.CREDITED,
            reconciled=True,
            private_estate_batch=None,
        )
        if debit_card:
            payment = mommy.make(
                Payment,
                amount=credit.amount,
                card_number_last_digits=debit_card.card_number_last_digits,
                card_expiry_date=debit_card.card_expiry_date,
            )
            payment.credit = credit
            payment.save()
        credit_list.append(credit)
    return credit_list
def make_drfreq_disbursements(today, recipient, count):
    disbursement_list = []
    for day in range(count):
        disbursement = mommy.make(
            Disbursement,
            amount=random_amount(),
            recipient_profile=recipient,
            created=today - datetime.timedelta(day),
            resolution=DISBURSEMENT_RESOLUTION.SENT,
        )
        disbursement_list.append(disbursement)
    return disbursement_list
Пример #5
0
def generate_initial_disbursement_data(tot=100, days_of_history=7):
    data_list = []
    recipient_prisoner_pairs = get_recipient_prisoner_pairs()
    for _ in range(tot):
        random_date = latest_disbursement_date() - timedelta(
            minutes=random.randint(0, 1440 * days_of_history))
        random_date = timezone.localtime(random_date)
        amount = random_amount()
        recipient, prisoner = next(recipient_prisoner_pairs)
        data = {
            'amount': amount,
            'prisoner_number': prisoner.prisoner_number,
            'prisoner_name': prisoner.prisoner_name,
            'prison': prisoner.prison,
            'created': random_date
        }
        data.update(recipient)
        data_list.append(data)

    return data_list
def generate_initial_disbursement_data(tot=100, days_of_history=7):
    data_list = []
    recipient_prisoner_pairs = get_recipient_prisoner_pairs()
    for _ in range(tot):
        random_date = latest_disbursement_date() - timedelta(
            minutes=random.randint(0, 1440 * days_of_history)
        )
        random_date = timezone.localtime(random_date)
        amount = random_amount()
        recipient, prisoner = next(recipient_prisoner_pairs)
        data = {
            'amount': amount,
            'prisoner_number': prisoner.prisoner_number,
            'prisoner_name': prisoner.prisoner_name,
            'prison': prisoner.prison,
            'created': random_date
        }
        data.update(recipient)
        data_list.append(data)

    return data_list
Пример #7
0
def generate_initial_transactions_data(tot=100,
                                       prisoner_location_generator=None,
                                       include_debits=True,
                                       include_administrative_credits=True,
                                       include_unidentified_credits=True,
                                       days_of_history=7):
    data_list = []
    sender_prisoner_pairs = get_sender_prisoner_pairs()

    for transaction_counter in range(1, tot + 1):
        include_prisoner_info = transaction_counter % 5 != 0
        omit_sender_details = (include_unidentified_credits
                               and transaction_counter % 23 == 0)
        make_debit_transaction = (include_debits
                                  and transaction_counter % 21 == 0)
        make_administrative_credit_transaction = (
            include_administrative_credits and transaction_counter % 41 == 0)

        random_date = latest_transaction_date() - datetime.timedelta(
            minutes=random.randint(0, 1440 * days_of_history))
        random_date = timezone.localtime(random_date)
        noon_random_date = get_noon(random_date)
        data = {
            'category': TRANSACTION_CATEGORY.CREDIT,
            'amount': random_amount(),
            'received_at': noon_random_date,
            'owner': None,
            'credited': False,
            'refunded': False,
            'created': random_date,
            'modified': random_date,
        }

        sender, prisoner = next(sender_prisoner_pairs)
        data.update(sender)

        if make_administrative_credit_transaction:
            data['source'] = TRANSACTION_SOURCE.ADMINISTRATIVE
            data['incomplete_sender_info'] = True
            data['processor_type_code'] = 'RA'
            del data['sender_sort_code']
            del data['sender_account_number']
        elif make_debit_transaction:
            data['source'] = TRANSACTION_SOURCE.ADMINISTRATIVE
            data['category'] = TRANSACTION_CATEGORY.DEBIT
            data['processor_type_code'] = '03'
            data['reference'] = 'Payment refunded'
        else:
            data['source'] = TRANSACTION_SOURCE.BANK_TRANSFER
            data['processor_type_code'] = '99'

            if include_prisoner_info:
                data['prisoner_name'] = prisoner.prisoner_name
                data['prisoner_number'] = prisoner.prisoner_number
                data['single_offender_id'] = prisoner.single_offender_id
                data['prisoner_dob'] = prisoner.prisoner_dob
                data['prison'] = prisoner.prison

            if (omit_sender_details or ('sender_roll_number' in data
                                        and transaction_counter % 3 == 0)):
                data['incomplete_sender_info'] = True
                if data.get('sender_roll_number'):
                    del data['sender_roll_number']
                else:
                    data['blocked'] = True
                    del data['sender_name']
                    del data['sender_account_number']
                    if transaction_counter % 2 == 0:
                        del data['sender_sort_code']

            data['reference'] = random_reference(data.get('prisoner_number'),
                                                 data.get('prisoner_dob'))
        data_list.append(data)
    return data_list
def generate_initial_transactions_data(
        tot=100,
        prisoner_location_generator=None,
        include_debits=True,
        include_administrative_credits=True,
        include_unidentified_credits=True,
        days_of_history=7):
    data_list = []
    sender_prisoner_pairs = get_sender_prisoner_pairs()

    for transaction_counter in range(1, tot + 1):
        include_prisoner_info = transaction_counter % 5 != 0
        omit_sender_details = (
            include_unidentified_credits and transaction_counter % 23 == 0
        )
        make_debit_transaction = (
            include_debits and transaction_counter % 21 == 0
        )
        make_administrative_credit_transaction = (
            include_administrative_credits and transaction_counter % 41 == 0
        )

        random_date = latest_transaction_date() - datetime.timedelta(
            minutes=random.randint(0, 1440*days_of_history)
        )
        random_date = timezone.localtime(random_date)
        noon_random_date = get_noon(random_date)
        data = {
            'category': TRANSACTION_CATEGORY.CREDIT,
            'amount': random_amount(),
            'received_at': noon_random_date,
            'owner': None,
            'credited': False,
            'refunded': False,
            'created': random_date,
            'modified': random_date,
        }

        sender, prisoner = next(sender_prisoner_pairs)
        data.update(sender)

        if make_administrative_credit_transaction:
            data['source'] = TRANSACTION_SOURCE.ADMINISTRATIVE
            data['incomplete_sender_info'] = True
            data['processor_type_code'] = 'RA'
            del data['sender_sort_code']
            del data['sender_account_number']
        elif make_debit_transaction:
            data['source'] = TRANSACTION_SOURCE.ADMINISTRATIVE
            data['category'] = TRANSACTION_CATEGORY.DEBIT
            data['processor_type_code'] = '03'
            data['reference'] = 'Payment refunded'
        else:
            data['source'] = TRANSACTION_SOURCE.BANK_TRANSFER
            data['processor_type_code'] = '99'

            if include_prisoner_info:
                data['prisoner_name'] = prisoner.prisoner_name
                data['prisoner_number'] = prisoner.prisoner_number
                data['single_offender_id'] = prisoner.single_offender_id
                data['prisoner_dob'] = prisoner.prisoner_dob
                data['prison'] = prisoner.prison

            if (omit_sender_details or (
                    'sender_roll_number' in data and
                    transaction_counter % 3 == 0)):
                data['incomplete_sender_info'] = True
                if data.get('sender_roll_number'):
                    del data['sender_roll_number']
                else:
                    data['blocked'] = True
                    del data['sender_name']
                    del data['sender_account_number']
                    if transaction_counter % 2 == 0:
                        del data['sender_sort_code']

            data['reference'] = random_reference(
                data.get('prisoner_number'), data.get('prisoner_dob')
            )
        data_list.append(data)
    return data_list