def test_currency_formatting(self): self.assertEqual(currency(None), None) self.assertEqual(currency(''), '') self.assertEqual(currency('a'), 'a') self.assertEqual(currency(0), '£0.00') self.assertEqual(currency(1), '£0.01') self.assertEqual(currency(13500), '£135.00') self.assertEqual(currency(123500), '£1,235.00')
def serialise(self, record): serialised_record = { 'Credits sent': record['credit_count'], 'Total amount sent': currency(record['credit_total']), 'Prisoners sent to': record['prisoner_count'], 'Prisons sent to': record['prison_count'], } if record.get('bank_transfer_details'): bank_transfer = record['bank_transfer_details'][0] return { **serialised_record, 'Sender name': bank_transfer['sender_name'], 'Payment method': 'Bank transfer', 'Bank transfer sort code': format_sort_code(bank_transfer['sender_sort_code']), 'Bank transfer account': bank_transfer['sender_account_number'], 'Bank transfer roll number': bank_transfer['sender_roll_number'], } if record.get('debit_card_details'): debit_card = record['debit_card_details'][0] try: sender_name = debit_card['cardholder_names'][0] except IndexError: sender_name = 'Unknown' other_sender_names = NameSet(debit_card['cardholder_names']) if sender_name in other_sender_names: other_sender_names.remove(sender_name) return { **serialised_record, 'Sender name': sender_name, 'Payment method': 'Debit card', 'Debit card number': format_card_number(debit_card), 'Debit card expiry': debit_card['card_expiry_date'], 'Debit card postcode': debit_card['postcode'] or 'Unknown', 'Other cardholder names': ', '.join(other_sender_names), 'Cardholder emails': ', '.join(EmailSet(debit_card['sender_emails'])), } return { **serialised_record, 'Sender name': '(Unknown)', 'Payment method': '(Unknown)', }
def serialise(self, record): if record['current_prison']: current_prison = record['current_prison']['name'] else: current_prison = 'Not in a public prison' provided_names = NameSet(record['provided_names']) return { 'Prisoner number': record['prisoner_number'], 'Prisoner name': record['prisoner_name'], 'Date of birth': record['prisoner_dob'], 'Credits received': record['credit_count'], 'Total amount received': currency(record['credit_total']), 'Payment sources': record['sender_count'], 'Disbursements sent': record['disbursement_count'], 'Total amount sent': currency(record['disbursement_total']), 'Recipients': record['recipient_count'], 'Current prison': current_prison, 'All known prisons': list_prison_names(record['prisons']), 'Names given by senders': ', '.join(provided_names), }
def serialise(self, record): return { 'Internal ID': record['id'], 'Date started': record['started_at'], 'Date received': (record['received_at'].strftime('%Y-%m-%d') if record['source'] == 'bank_transfer' else record['received_at']), 'Date credited': record['credited_at'], 'Amount': currency(record['amount']), 'Prisoner number': record['prisoner_number'], 'Prisoner name': record['prisoner_name'], 'Prison': record['prison_name'], 'Sender name': record['sender_name'], 'Payment method': str(credit_sources.get(record['source'], record['source'])), 'Bank transfer sort code': (format_sort_code(record['sender_sort_code']) if record['sender_sort_code'] else None), 'Bank transfer account': record['sender_account_number'], 'Bank transfer roll number': record['sender_roll_number'], 'Debit card number': (f'{record["card_number_first_digits"] or "******"}******{record["card_number_last_digits"]}' if record['card_number_last_digits'] else None), 'Debit card expiry': record['card_expiry_date'], 'Debit card billing address': credit_address_for_export(record['billing_address']), 'Sender email': record['sender_email'], 'Sender IP address': record['ip_address'], 'Status': str(format_resolution(record['resolution'])), 'NOMIS transaction': record['nomis_transaction_id'], }
def serialise(self, record): last_action_dates = { log_item['action']: parse_datetime(log_item['created']) for log_item in record['log_set'] } return { 'Internal ID': record['id'], 'Date entered': record['created'], 'Date confirmed': last_action_dates.get('confirmed', ''), 'Date sent': last_action_dates.get('sent', ''), 'Amount': currency(record['amount']), 'Prisoner number': record['prisoner_number'], 'Prisoner name': record['prisoner_name'], 'Prison': record['prison_name'], 'Recipient name': f'{record["recipient_first_name"]} {record["recipient_last_name"]}' .strip(), 'Payment method': str(disbursement_methods.get(record['method'], record['method'])), 'Bank transfer sort code': (format_sort_code(record['sort_code']) if record['sort_code'] else ''), 'Bank transfer account': record['account_number'], 'Bank transfer roll number': record['roll_number'], 'Recipient address': disbursement_address_for_export(record), 'Recipient email': record['recipient_email'], 'Status': str(format_disbursement_resolution(record['resolution'])), 'NOMIS transaction': record['nomis_transaction_id'], 'SOP invoice number': record['invoice_number'], }
def test_currency_formatting(self): self.assertEqual(currency(None), '') self.assertEqual(currency(0), '0.00') self.assertEqual(currency(1), '0.01') self.assertEqual(currency(13500), '135.00') self.assertEqual(currency(123500), '1,235.00')