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
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
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