|
@@ -89,7 +89,7 @@ async sub command_info
|
|
|
my $uid = $fsa->note("uid");
|
|
my $uid = $fsa->note("uid");
|
|
|
my $client = await $abon_client->get_p($info, "client", "/client/$uid");
|
|
my $client = await $abon_client->get_p($info, "client", "/client/$uid");
|
|
|
reply($info,
|
|
reply($info,
|
|
|
- sprintf("<u>%s</u>: %d", _("Лицевой счет"), $client->{uid}),
|
|
|
|
|
|
|
+ sprintf("<u>%s</u>: %d", _("Номер учетной записи"), $client->{uid}),
|
|
|
sprintf("<u>%s</u>: %s", _("Логин"), $client->{login}),
|
|
sprintf("<u>%s</u>: %s", _("Логин"), $client->{login}),
|
|
|
sprintf("<u>%s</u>: %s", _("ФИО"), $client->{fio}),
|
|
sprintf("<u>%s</u>: %s", _("ФИО"), $client->{fio}),
|
|
|
sprintf("<u>%s</u>: %s", _("Адрес"), $client->{address}),
|
|
sprintf("<u>%s</u>: %s", _("Адрес"), $client->{address}),
|
|
@@ -147,14 +147,94 @@ async sub command_service
|
|
|
reply($info, @list);
|
|
reply($info, @list);
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+######################################
|
|
|
|
|
+
|
|
|
async sub command_transfer
|
|
async sub command_transfer
|
|
|
{
|
|
{
|
|
|
my ($fsa, $info) = @_;
|
|
my ($fsa, $info) = @_;
|
|
|
- reply($info, _("Введите лицевой счет пользователя, которому вы хотите перевести деньги со своего счета"));
|
|
|
|
|
|
|
+ reply($info, _("Введите номер личного счета пользователя, которому вы хотите перевести деньги со своего собственного счета"));
|
|
|
|
|
|
|
|
$fsa->delete_note("xfer_to");
|
|
$fsa->delete_note("xfer_to");
|
|
|
$fsa->delete_note("xfer_amount");
|
|
$fsa->delete_note("xfer_amount");
|
|
|
- $fsa->state("xfer_needs_uid");
|
|
|
|
|
|
|
+ $fsa->delete_note("xfer_fio");
|
|
|
|
|
+
|
|
|
|
|
+ return needs_input(
|
|
|
|
|
+ fsa => $fsa,
|
|
|
|
|
+ name => "xfer_to",
|
|
|
|
|
+ item => _("номер личного счета"),
|
|
|
|
|
+ process => _("перевод денег"),
|
|
|
|
|
+ );
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+async sub verify_xfer_to
|
|
|
|
|
+{
|
|
|
|
|
+ my ($fsa, $target_uid, $info) = @_;
|
|
|
|
|
+ my $uid = $fsa->note("uid");
|
|
|
|
|
+
|
|
|
|
|
+ return _("Номер личного счета должен состоять из цифр") unless $target_uid =~ /^\d+$/;
|
|
|
|
|
+ return _("Нельзя перевести деньги себе самому") if $uid==$target_uid;
|
|
|
|
|
+
|
|
|
|
|
+ my $res = await $abon_client->get_p($info, "client", "/client/$target_uid");
|
|
|
|
|
+ return _("Абонент") . " $target_uid " . _("отключен") if $res->{disabled};
|
|
|
|
|
+
|
|
|
|
|
+ $fsa->note(xfer_fio => $res->{fio});
|
|
|
|
|
+ return undef;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+async sub use_xfer_to
|
|
|
|
|
+{
|
|
|
|
|
+ my ($fsa, $target_uid, $info) = @_;
|
|
|
|
|
+ my $uid = $fsa->note("uid");
|
|
|
|
|
+
|
|
|
|
|
+ my $nick = $fsa->note("xfer_fio");
|
|
|
|
|
+ my @fio = split(/\s+/, $nick);
|
|
|
|
|
+ if (@fio)
|
|
|
|
|
+ {
|
|
|
|
|
+ my $f = shift(@fio);
|
|
|
|
|
+ $nick = join(" ", (substr($f, 0, 1) . ".", @fio));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ reply(
|
|
|
|
|
+ $info, _("Получатель денег: ") . $nick,
|
|
|
|
|
+ _("Теперь введите сумму, которую хотите перевести"),
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ return needs_input(
|
|
|
|
|
+ fsa => $fsa,
|
|
|
|
|
+ name => "xfer_amount",
|
|
|
|
|
+ item => _("сумму"),
|
|
|
|
|
+ process => _("перевод денег"),
|
|
|
|
|
+ );
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+sub verify_xfer_amount
|
|
|
|
|
+{
|
|
|
|
|
+ my ($fsa, $amount, $info) = @_;
|
|
|
|
|
+ my $uid = $fsa->note("uid");
|
|
|
|
|
+
|
|
|
|
|
+ $amount =~ s/,/./g;
|
|
|
|
|
+ $amount =~ s/[^\d\.]//g;
|
|
|
|
|
+ my $tmp = $amount;
|
|
|
|
|
+ my $count = $amount =~ tr/.//;
|
|
|
|
|
+
|
|
|
|
|
+ return _("Вы ввели неправильную сумму") if !$amount || $count>1;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+async sub use_xfer_amount
|
|
|
|
|
+{
|
|
|
|
|
+ my ($fsa, $amount, $info) = @_;
|
|
|
|
|
+ my $uid = $fsa->note("uid");
|
|
|
|
|
+ my $to_uid = $fsa->note("xfer_to");
|
|
|
|
|
+
|
|
|
|
|
+ reply_with($info, {
|
|
|
|
|
+ inline_menu => [[
|
|
|
|
|
+ { text=>_("Подтвердите перевод"), callback_data=>"\x00/transfer" },
|
|
|
|
|
+ ]]
|
|
|
|
|
+ },
|
|
|
|
|
+ sprintf("%.2f %s %s %d", $amount, $config->{currency}->{human}, _(" на счет абонента"), $to_uid),
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ return "command";
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async sub callback_transfer
|
|
async sub callback_transfer
|
|
@@ -164,6 +244,7 @@ async sub callback_transfer
|
|
|
|
|
|
|
|
my $to_uid = $fsa->delete_note("xfer_to");
|
|
my $to_uid = $fsa->delete_note("xfer_to");
|
|
|
my $amount = $fsa->delete_note("xfer_amount");
|
|
my $amount = $fsa->delete_note("xfer_amount");
|
|
|
|
|
+ $fsa->delete_note("xfer_fio");
|
|
|
|
|
|
|
|
unless ($to_uid && $amount)
|
|
unless ($to_uid && $amount)
|
|
|
{
|
|
{
|
|
@@ -335,6 +416,30 @@ sub command_support
|
|
|
|
|
|
|
|
##################################################
|
|
##################################################
|
|
|
|
|
|
|
|
|
|
+sub needs_input(%args)
|
|
|
|
|
+{
|
|
|
|
|
+ my $name = $args{name};
|
|
|
|
|
+ my $fsa = $args{fsa};
|
|
|
|
|
+
|
|
|
|
|
+ $fsa->delete_note($name);
|
|
|
|
|
+ $fsa->note(input_name => $name);
|
|
|
|
|
+ $fsa->note(input_again => _("Введите заново ") . $args{item} . _(" или нажмите Отмена, чтобы прервать ") . $args{process});
|
|
|
|
|
+ $fsa->note(input_process => $args{process});
|
|
|
|
|
+ $fsa->state("needs_input");
|
|
|
|
|
+ return "needs_input";
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+sub cancel_input
|
|
|
|
|
+{
|
|
|
|
|
+ my ($fsa, $info) = @_;
|
|
|
|
|
+ $fsa->delete_note($fsa->delete_note("input_name"));
|
|
|
|
|
+ $fsa->delete_note("input_again");
|
|
|
|
|
+ reply($info, ucfirst($fsa->delete_note("input_process")) . " " . _("отменён"));
|
|
|
|
|
+ $fsa->state("command");
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+##################################################
|
|
|
|
|
+
|
|
|
sub format_wd($rec, $cur)
|
|
sub format_wd($rec, $cur)
|
|
|
{
|
|
{
|
|
|
return _("бесплатно") if $rec->{dayly} == 0 && $rec->{monthly} == 0;
|
|
return _("бесплатно") if $rec->{dayly} == 0 && $rec->{monthly} == 0;
|
|
@@ -355,6 +460,7 @@ sub parse_error
|
|
|
return "$e->{code} $e->{message} $e->{body}";
|
|
return "$e->{code} $e->{message} $e->{body}";
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
1;
|
|
1;
|
|
|
|
|
|
|
|
# локализация
|
|
# локализация
|