diff --git a/lib/AccessSystem/Schema/Result/Person.pm b/lib/AccessSystem/Schema/Result/Person.pm index 3c4deca..a25d284 100644 --- a/lib/AccessSystem/Schema/Result/Person.pm +++ b/lib/AccessSystem/Schema/Result/Person.pm @@ -601,14 +601,14 @@ sub add_debit { } if($amount =~/\D/) { return (0, 'Amount must be a positive integer of pence'); - } elsif($self->balance_p < $amount) { + } elsif($self->balance_p + 500 < $amount) { return (0, 'Not enough money for that transaction'); } else { my $tr = $self->create_related('transactions', { reason => $reason, amount_p => -1*$amount, }); - + return (1, 'Success', $self->balance_p); } } diff --git a/lib/AccessSystem/TelegramBot.pm b/lib/AccessSystem/TelegramBot.pm index 31391e9..cea66e2 100644 --- a/lib/AccessSystem/TelegramBot.pm +++ b/lib/AccessSystem/TelegramBot.pm @@ -1004,13 +1004,17 @@ sub pay ($self, $text, $message, $args = undef) { } elsif ($args->[1] eq 'cancel') { ## ended selections - cancel whole thing delete $self->waiting_on_response->{$message->from->id}; - return $message->answer('Canceled'); + return $message->reply('Cancelled'); } elsif ($args->[1] eq 'pay') { ## ended selections create transaction delete $self->waiting_on_response->{$message->from->id}; - my ($status, $msg) = $member->add_debit($waiting->{total}, - join(",",@{$waiting->{products}})); - return $message->answer($msg); + my ($status, $msg, $bal) = $member->add_debit( + $waiting->{total}, + join(",",@{$waiting->{products}})); + if($bal < 0) { + $msg = 'Paid: Your balance is now negative, £5 is the maximum you can go below 0, please pay some in. Use /balance to check.'; + } + return $message->reply($msg); } } else { $self->waiting_on_response->{$message->from->id} = {