Esempio n. 1
0
    def create(self, validated_data):
        transactions = []
        user = self.context['request'].user

        for data in validated_data:
            batch = data.pop('batch', None)
            prisoner_number = data.pop('prisoner_number', None)
            prisoner_dob = data.pop('prisoner_dob', None)
            blocked = data.pop('blocked', False)
            if (data['category'] == TRANSACTION_CATEGORY.CREDIT
                    and data['source'] == TRANSACTION_SOURCE.BANK_TRANSFER):
                new_credit = Credit(amount=data['amount'],
                                    prisoner_number=prisoner_number,
                                    prisoner_dob=prisoner_dob,
                                    received_at=data['received_at'],
                                    blocked=blocked)
                new_credit.save()
                data['credit'] = new_credit

                credit_created.send(sender=Credit,
                                    credit=new_credit,
                                    by_user=user)

            transaction = Transaction.objects.create(**data)
            if batch:
                batch.settlement_transaction = transaction
                batch.save()
            transactions.append(transaction)

        return transactions
Esempio n. 2
0
def save_transaction(data):
    resolution = CREDIT_RESOLUTION.PENDING
    if data.pop('credited', False):
        resolution = CREDIT_RESOLUTION.CREDITED
    if data.pop('refunded', False):
        resolution = CREDIT_RESOLUTION.REFUNDED

    prisoner_dob = data.pop('prisoner_dob', None)
    prisoner_number = data.pop('prisoner_number', None)
    single_offender_id = data.pop('single_offender_id', None)
    prisoner_name = data.pop('prisoner_name', None)
    prison = data.pop('prison', None)
    reconciled = data.pop('reconciled', False)
    owner = data.pop('owner', None)
    blocked = data.pop('blocked', False)

    if (data['category'] == TRANSACTION_CATEGORY.CREDIT
            and data['source'] == TRANSACTION_SOURCE.BANK_TRANSFER):
        credit = Credit(amount=data['amount'],
                        prisoner_dob=prisoner_dob,
                        prisoner_number=prisoner_number,
                        single_offender_id=single_offender_id,
                        prisoner_name=prisoner_name,
                        prison=prison,
                        reconciled=reconciled,
                        owner=owner,
                        received_at=data['received_at'],
                        resolution=resolution,
                        blocked=blocked)
        credit.save()
        data['credit'] = credit

    return Transaction.objects.create(**data)
    def create(self, validated_data):
        transactions = []
        user = self.context['request'].user

        for data in validated_data:
            batch = data.pop('batch', None)
            prisoner_number = data.pop('prisoner_number', None)
            prisoner_dob = data.pop('prisoner_dob', None)
            blocked = data.pop('blocked', False)
            if (data['category'] == TRANSACTION_CATEGORY.CREDIT and
                    data['source'] == TRANSACTION_SOURCE.BANK_TRANSFER):
                new_credit = Credit(
                    amount=data['amount'],
                    prisoner_number=prisoner_number,
                    prisoner_dob=prisoner_dob,
                    received_at=data['received_at'],
                    blocked=blocked
                )
                new_credit.save()
                data['credit'] = new_credit

                credit_created.send(
                    sender=Credit,
                    credit=new_credit,
                    by_user=user
                )

            transaction = Transaction.objects.create(**data)
            if batch:
                batch.settlement_transaction = transaction
                batch.save()
            transactions.append(transaction)

        return transactions
def save_transaction(data):
    resolution = CREDIT_RESOLUTION.PENDING
    if data.pop('credited', False):
        resolution = CREDIT_RESOLUTION.CREDITED
    if data.pop('refunded', False):
        resolution = CREDIT_RESOLUTION.REFUNDED

    prisoner_dob = data.pop('prisoner_dob', None)
    prisoner_number = data.pop('prisoner_number', None)
    single_offender_id = data.pop('single_offender_id', None)
    prisoner_name = data.pop('prisoner_name', None)
    prison = data.pop('prison', None)
    reconciled = data.pop('reconciled', False)
    owner = data.pop('owner', None)
    blocked = data.pop('blocked', False)

    if (data['category'] == TRANSACTION_CATEGORY.CREDIT and
            data['source'] == TRANSACTION_SOURCE.BANK_TRANSFER):
        credit = Credit(
            amount=data['amount'],
            prisoner_dob=prisoner_dob,
            prisoner_number=prisoner_number,
            single_offender_id=single_offender_id,
            prisoner_name=prisoner_name,
            prison=prison,
            reconciled=reconciled,
            owner=owner,
            received_at=data['received_at'],
            resolution=resolution,
            blocked=blocked
        )
        credit.save()
        data['credit'] = credit

    return Transaction.objects.create(**data)
 def create(self, validated_data):
     new_credit = Credit(
         amount=validated_data['amount'],
         prisoner_number=validated_data.pop('prisoner_number'),
         prisoner_dob=validated_data.pop('prisoner_dob'),
         resolution=CREDIT_RESOLUTION.INITIAL)
     new_credit.save()
     validated_data['credit'] = new_credit
     return super().create(validated_data)
Esempio n. 6
0
def save_payment(data,
                 overrides=None,
                 attach_profiles_to_individual_credits=True):
    is_taken = data['status'] == PAYMENT_STATUS.TAKEN
    if is_taken:
        if data.pop('credited', False):
            resolution = CREDIT_RESOLUTION.CREDITED
        else:
            resolution = CREDIT_RESOLUTION.PENDING
    elif data['status'] in (PAYMENT_STATUS.REJECTED, PAYMENT_STATUS.EXPIRED):
        resolution = CREDIT_RESOLUTION.FAILED
    else:
        resolution = CREDIT_RESOLUTION.INITIAL

    prisoner_dob = data.pop('prisoner_dob', None)
    prisoner_number = data.pop('prisoner_number', None)
    prisoner_name = data.pop('prisoner_name', None)
    prison = data.pop('prison', None)
    reconciled = data.pop('reconciled', False)
    owner = data.pop('owner', None)

    billing_address = data.pop('billing_address', None)
    if billing_address:
        billing_address = BillingAddress.objects.create(**billing_address)
        data['billing_address'] = billing_address

    credit_data = dict(
        amount=data['amount'],
        prisoner_dob=prisoner_dob,
        prisoner_number=prisoner_number,
        prisoner_name=prisoner_name,
        prison=prison,
        reconciled=False if not is_taken else reconciled,
        owner=owner,
        received_at=None if not is_taken else data['created'],
        resolution=resolution,
    )
    if overrides:
        credit_data.update(overrides.get('credit', {}))
    credit = Credit(**credit_data)
    credit.save()
    data['credit'] = credit

    payment = Payment.objects.create(**data)
    if attach_profiles_to_individual_credits:
        credit.attach_profiles(ignore_credit_resolution=True)
    return payment
def save_payment(data):
    if data['status'] == PAYMENT_STATUS.TAKEN:
        if data.pop('credited', False):
            resolution = CREDIT_RESOLUTION.CREDITED
        else:
            resolution = CREDIT_RESOLUTION.PENDING
    else:
        resolution = CREDIT_RESOLUTION.INITIAL

    prisoner_dob = data.pop('prisoner_dob', None)
    prisoner_number = data.pop('prisoner_number', None)
    single_offender_id = data.pop('single_offender_id', None)
    prisoner_name = data.pop('prisoner_name', None)
    prison = data.pop('prison', None)
    reconciled = data.pop('reconciled', False)
    owner = data.pop('owner', None)

    billing_address = data.pop('billing_address', None)
    if billing_address:
        billing_address = BillingAddress.objects.create(**billing_address)
        data['billing_address'] = billing_address

    credit = Credit(
        amount=data['amount'],
        prisoner_dob=prisoner_dob,
        prisoner_number=prisoner_number,
        single_offender_id=single_offender_id,
        prisoner_name=prisoner_name,
        prison=prison,
        reconciled=reconciled,
        owner=owner,
        received_at=data['created'],
        resolution=resolution
    )
    credit.save()
    data['credit'] = credit

    return Payment.objects.create(**data)
Esempio n. 8
0
def save_payment(data):
    if data['status'] == PAYMENT_STATUS.TAKEN:
        if data.pop('credited', False):
            resolution = CREDIT_RESOLUTION.CREDITED
        else:
            resolution = CREDIT_RESOLUTION.PENDING
    else:
        resolution = CREDIT_RESOLUTION.INITIAL

    prisoner_dob = data.pop('prisoner_dob', None)
    prisoner_number = data.pop('prisoner_number', None)
    single_offender_id = data.pop('single_offender_id', None)
    prisoner_name = data.pop('prisoner_name', None)
    prison = data.pop('prison', None)
    reconciled = data.pop('reconciled', False)
    owner = data.pop('owner', None)

    billing_address = data.pop('billing_address', None)
    if billing_address:
        billing_address = BillingAddress.objects.create(**billing_address)
        data['billing_address'] = billing_address

    credit = Credit(amount=data['amount'],
                    prisoner_dob=prisoner_dob,
                    prisoner_number=prisoner_number,
                    single_offender_id=single_offender_id,
                    prisoner_name=prisoner_name,
                    prison=prison,
                    reconciled=reconciled,
                    owner=owner,
                    received_at=data['created'],
                    resolution=resolution)
    credit.save()
    data['credit'] = credit

    return Payment.objects.create(**data)