8
0
Fork 0

Import from revbank fork

This commit is contained in:
polyfloyd 2025-05-07 00:20:31 +02:00
commit 30c55d21de
6 changed files with 152 additions and 0 deletions

26
bitlair_3dprint Normal file
View file

@ -0,0 +1,26 @@
#!perl
HELP "3dprint <gram>" => "3D-print filament afrekenen";
use Scalar::Util qw(looks_like_number);
sub command :Tab(3dprint) ($self, $cart, $command, @) {
return NEXT if $command ne '3dprint';
return "Gewicht in gram, inclusief supports en purges", \&gram;
}
sub gram($self, $cart, $input, @) {
looks_like_number($input) and $input == int($input) or return REJECT, "Invalid number!";
my $gram = int($input);
return REJECT, "$input: Invalid amount." if $gram <= 0;
my $beneficiary = "3dprinter";
my $amount = 0.10 + $gram * 0.03;
$cart
->add(-$amount, "Given to $beneficiary ($gram g)")
->add_contra($beneficiary, +$amount, "Received from \$you (${gram} g)");
return ACCEPT;
}

17
bitlair_bigmoney Normal file
View file

@ -0,0 +1,17 @@
#!perl
sub command :Tab(bigmoney) {
my ($self, $cart, $command) = @_;
return NEXT if $command ne "bigmoney";
my @list = sort {
(split " ", $b)[1] <=> (split " ", $a)[1]
} grep {
not RevBank::Users::is_hidden($_)
} slurp("accounts");
print join "", @list[0..9];
return ACCEPT;
}

27
bitlair_deposit_methods Normal file
View file

@ -0,0 +1,27 @@
#!perl
sub hook_deposit_methods($class, $message, $hash, @) {
$$message = <<"END";
Selecteer één van de volgende:
'iban': Abort en ga naar >>> https://deposit.bitlair.nl <<<
'cash': Contant geld in de kas
'reimburse': Declaraties van aankopen waar je van tevoren toestemming voor hebt gekregen
-> Stuur een scan van het bonnetje naar treasury\@bitlair.nl en vermeld dat je het bedrag via Revbank hebt geclaimed
-> Gebruik dit niet voor declaraties van meer dan 20 EUR
'other': Iets anders, geef een beschrijving op
END
%$hash = (
cash => { description => "Deposit (Cash)" },
other => { description => "Deposit (%s)", prompts => [ "Description" ] },
reimburse => {
description => "Reimbursement (%s, approval: %s)",
prompts => [
"Please provide a short description",
"Which board member gave approval?",
],
},
);
}

19
bitlair_mqtt Normal file
View file

@ -0,0 +1,19 @@
#!perl
use Cwd ();
use Net::MQTT::Simple;
my $mqtt = Net::MQTT::Simple->new("mqtt.bitlair.nl");
sub command { NEXT }
sub hook_checkout {
my ($class, $cart, $user, $transaction_id) = @_;
my @entries = $cart->entries('product_id') or return;
for my $entry (@entries) {
$mqtt->publish("bitlair/pos/product" => $entry->{description})
for 1..$entry->quantity;
}
}

15
bitlair_nomunnie Normal file
View file

@ -0,0 +1,15 @@
#!perl
use IO::Socket::IP;
use Net::MQTT::Simple "mqtt.bitlair.nl";
sub command { NEXT }
sub hook_user_balance {
my ($class, $user, $old, $delta, $new, $transaction_id) = @_;
return if $new >= -13.37;
return if RevBank::Users::is_hidden($user);
publish "bitlair/bank/shame" => "NO MUNNIE?";
}

48
bitlair_saldo Normal file
View file

@ -0,0 +1,48 @@
#!perl
use POSIX qw(strftime);
sub _box(@lines) {
print(
"#" x 79, "\n",
(map { sprintf("## %-73s ##\n", $_) } @lines),
"#" x 79, "\n"
);
}
sub hook_checkout_done($class, $cart, $account, $transaction_id, @) {
defined $account or return; # hacks like 'undo' don't have an acting user
RevBank::Accounts::is_hidden($account) and return;
my $balance = RevBank::Accounts::balance($account) or return;
my $since = RevBank::Accounts::since($account);
if ($balance < -13.37) {
_box(
"Hoi $account,",
"",
"Je saldo is $balance en dus lager dan toegestaan.",
"",
"Saldo aanvullen kan via https://deposit.bitlair.nl",
"",
"Bedankt!",
"-- Het bestuur",
);
} elsif (
defined $since
and $since =~ /^-\@(.*)/
and $1 lt strftime('%Y-%m-%d_%H:%M:%S', localtime(time() - 14 * 86400))
) {
_box(
"Hoi $account,",
"",
"Je staat al sinds $1 negatief, dus meer dan 2 weken. Deelnemers",
"mogen rood staan, maar niet langdurig.",
"",
"Saldo aanvullen kan via https://deposit.bitlair.nl",
"",
"Bedankt!",
"-- Het bestuur",
);
}
}