PDA

Просмотр полной версии : как сделать оплату наличными



zedserver
13.04.2010, 10:01
Подскажите как сделать оплату наличными?

DimaK
13.04.2010, 11:35
Используйте метод оплаты - банк. Назовите его как оплата наличными.

SRK
14.04.2010, 03:10
а планируется ли сделать просто оплату наличными? как то банковские реквизиты не совсем то, что хотелось бы видеть для данного варианта.

Stekov
30.05.2010, 19:39
Согласен, "Наличными в офисе" или "Наличными курьеру" часто используемый вариант.

AlexVB
02.06.2010, 21:27
Кому нужна была оплата наличными, вот написал тестовый модуль. Используйте на свой страх и риск.

создаем файл /usr/local/ispmgr/etc/billmgr_mod_cash.xml следующего содержания:


<?xml version="1.0" encoding="UTF-8"?>
<mgrdata>

<metadata name="company.paymethod.edit_cash" type="form">
<form>
<field name="name">
<input type="text" name="name" empty="no"/>
</field>
<field name="minamount">
<input type="text" name="minamount"/>
</field>

</form>
<jscript>
document.frm.func.value = 'company.paymethod.edit';
</jscript>
</metadata>

<metadata name="credit.pay.cash" type="form">
<form>
<field name="amount">
<input type="text" name="amount" readonly="yes"/>
</field>
</form>
</metadata>

<lang name="en">
<messages name="company.paymethod.edit_cash">
<msg name="title">Параметры</msg>
<msg name="name">Название метода оплаты</msg>
<msg name="minamount">Минимальная сумма платежа</msg>
</messages>
<messages name="company.paymethod">
<msg name="module_cash">Наличные</msg>
</messages>
<messages name="company.paymethod.edit">
<msg name="cash">Наличные</msg>
</messages>
<messages name="credit.pay.cash">
<msg name="title">Параметры</msg>
<msg name="amount">Сумма платежа</msg>
</messages>
</lang>


<lang name="ru">
<messages name="company.paymethod.edit_cash">
<msg name="title">Параметры</msg>
<msg name="name">Название метода оплаты</msg>
<msg name="minamount">Минимальная сумма платежа</msg>
</messages>
<messages name="company.paymethod">
<msg name="module_cash">Наличные</msg>
</messages>
<messages name="company.paymethod.edit">
<msg name="cash">Наличные</msg>
</messages>
<messages name="credit.pay.cash">
<msg name="title">Параметры</msg>
<msg name="amount">Сумма платежа</msg>
</messages>
</lang>

</mgrdata>


Затем создайте файл /usr/local/ispmgr/sbin/pmcash следующего содержания:


#!/opt/perl/bin/perl

use strict;
use encoding "utf-8-strict";

use XML::LibXML;
use DBD::mysql;


# CONFIG BEGIN

my $dbUser = "";
my $dbPass = "";
my $dbName = "";
my $dbHost = "";

# CONFIG END

use feature "switch";

foreach my $value (@ARGV)
{
given($value)
{
when("feature")
{
print "pmtune pmvalidate crtune crget";
}

when("pmvalidate")
{
pmvalidate();
}

when("pmtune")
{
pmtune();
}

when("crtune")
{
crtune();
}

when("crget")
{
crget();
}
}
}

sub GetInputXml
{
my $buffer;

while(<STDIN>)
{
$buffer .= $_;
}

return $buffer;
}

sub pmvalidate
{
print "pmok";
}

sub pmtune
{
print GetInputXml();
}

sub crtune
{
print GetInputXml();
}

sub crget
{
my $proc = XML::LibXML->new();
my $doc = $proc->parse_string(GetInputXml());
my $root = $doc->getDocumentElement();

my @xelid = $doc->getElementsByTagName('elid');
my $elid = $xelid[0]->textContent;

my $conn = DBI->connect("dbi:mysql:database=$dbName;host=$dbHost", $dbUser, $dbPass);

my $query="SELECT cr.nativeamount, cr.state, cu.iso, type.params FROM credit cr \
JOIN companycrtype type ON type.id=cr.type JOIN currency cu ON cu.id=type.currency WHERE cr.id= ? LIMIT 1";


my $st = $conn->prepare($query);
$st->execute($elid);

my $result = $st->fetchrow_hashref();

$st->finish();
$conn->disconnect();

my $elem = $doc->createElement("amount");

$elem->appendText(sprintf("%.2f %s", $result->{nativeamount}, $result->{iso}));
$root->appendChild($elem);

print $root->toString();
}



При этом у вас должен быть perl не ниже v5.10.0, установлены модули XML::LibXML и DBD::mysql, нужно поменять путь к интерпретатору на ваш, указать ваши настройки для соединения с базой, и сделать файл исполняемым.

Затем останавливаем billmgr:


killall billmgr

Удаляем кеш XML:

rm -rf /usr/local/ispmgr/var/.xmlcache/

И заходим в bill manager.

Теперь в способах оплаты можно добавлять тип платежа "Наличные". Подтверждать каждый платеж нужно из под админа.

Если у вас не только billmanager стоит на этой машине, то нужно все панели остановить перед удалением кеша XML или удалить только подкаталог billmgr.

makcumka
04.11.2010, 04:58
AlexVB насколько данный модуль актуален для BILLmanager-Advanced 4.0.46 ?

чистка кеша не помогает, панель кривится а логах

Nov 4 00:18:42 [ 4663] WARNING No menu for level 7 found

и соответственно вопрос к разработчикам, когда что-то подобное появится в биллинге с вашей стороны?

azzepis
03.02.2011, 17:18
и соответственно вопрос к разработчикам, когда что-то подобное появится в биллинге с вашей стороны?

тоже очень актуален данный вопрос, или подскажите, как (согласно вашим рекомендациям в документации), если переназвать метод "Банк", убрать лишние данные, которые выводяться клиенту.
либо, как ещё один вариант, как администртор может пополнить клиентский баланс в админке?

pockettanker
10.02.2011, 15:51
Присоединяюсь ко всему выше сказанному.

dnshost
20.02.2011, 04:32
Действительно, необходима оплата наличными

Braba
23.02.2011, 03:50
тот скриптик, который выложил AlexVB работает, никаких ошибок!
ISP Pro и BillManager в связке.

Александра
12.03.2011, 00:28
Сделали по приведённому выше способу. Вариант "Наличные" при создании нового способа оплаты есть, однако при попытке создания вот такая ошибка: " Lock wait timeout exceeded; try restarting transaction".

Не подскажите, с чем может быть связано?