Биллинговая система Nodeny

Главная категория => Разработка => Тема начата: neta от 08 Сентября 2012, 12:46:43



Название: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: neta от 08 Сентября 2012, 12:46:43
Добрый день.
Необходим перловый скрипт или модуль для вывода абонентов которые не платят более месяца за весь период, вывести список абонентов помесячно, правильнее сказать со статусом доступ запрещен.

Спасибо.


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: Belos от 08 Сентября 2012, 13:33:48
Клиенты - фильтр - кому запрещен доступ


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: neta от 08 Сентября 2012, 13:49:29
Мне нужно вывести за весь период помесячно.

в Январе 2012 были отключены
....
....
....
....
....

в Феврале 2012 были отключены
....
....
....
....
....


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: stix от 08 Сентября 2012, 15:24:00
принципиально перловый скрипт?


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: neta от 10 Сентября 2012, 09:55:53
Не принципиально, на любом, даже на php будет лучше.


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: stix от 10 Сентября 2012, 10:19:01
фактически нужно вывести список абонентов, которым был присвоем state=off
типо в мае - state=off было сделано тем то, в июне - тем то.
а что если потом был state=on ?
тогда нужно смотреть еще были ли после этого платежи и включался ли доступ обратно.
так?


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: 0xbad0c0d3 от 10 Сентября 2012, 10:40:52
эээммм...
Код:
SELECT u.id,u.name,u.ip FROM users u
INNER JOIN pays p ON p.mid=u.id
WHERE p.type=50 AND ((p.category=410 AND p.reason LIKE 'Включен ли доступ: да -> нет') OR
p.category=423) AND
p.time>=unix_timestamp('2012-06-01') AND p.time<unix_timestamp('2012-07-01')
GROUP BY u.id


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: stix от 10 Сентября 2012, 16:27:47
А вот так можно на скорую руку сделать на PHP
если суть да, то можно сделать по-человечески


Код:
<!DOCTYPE HTML>
<html>
<body>
<center>
<form action="#" method="post">
С какого месяца:<input type="month" name="monthfrom" />
По какой месяц:<input type="month" name="monthto" />
<input type="submit" />
</form>
</center>
<br>
</body>
</html>

<?php
$monthfrom 
$_POST['monthfrom'] . "-01";
$monthto $_POST['monthto'] . "-01";
$dbhostname="yourhost";
$dbuser="yourdblogin";
$dbpassword="yourdbpassword";
$dbname="yourdb";
$con mysql_connect($dbhostname,$dbuser,$dbpassword);
if (!
$con)
        {
        die(
'Could not connect: ' mysql_error());
        }
mysql_select_db($dbname$con);

$result mysql_query("SELECT u.id,u.name,u.ip FROM users u INNER JOIN pays p ON p.mid=u.id WHERE p.type=50 AND ((p.category=410 AND p.reason LIKE 'Включен ли доступ: да -> нет') OR p.category=423) AND p.time>=unix_timestamp('$monthfrom') AND p.time < unix_timestamp('$monthto') GROUP BY u.id");

$data = array();
while(
$row mysql_fetch_array($result))
  {
        
$data[] = $row;
  }
echo 
"<center>";
        for (
$i=0$i<count($data); $i++)
        {

        echo 
$data[$i]['id'] . "\t - " $data[$i]['name'] . "\t - " $data[$i]['ip'] . "<br><br>";
        }
echo 
"</center>";
mysql_close($con)
?>



Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: stix от 10 Сентября 2012, 16:29:29
в Opere работает нормально
в IE,Mozilla и Chrome не оч хорошо календарь работает
это особенности HTML5

ха, кроме оперы нигде не работает ))

если че, можно вводить в формате
2012-07 например


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: 0xbad0c0d3 от 10 Сентября 2012, 17:11:43
и было бы не плохо делать mysql_escape_string, для передаваемых значений в запрос. Все равно, что пользуются только админы, мало ли что у них на уме, может они давно ненавидят компанию )))


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: stix от 10 Сентября 2012, 20:44:22
Код:
$monthfrom = strip_tags($_POST['monthfrom']);
$monthfrom = htmlspecialchars($monthfrom );

$monthto= strip_tags($_POST['monthto']);
$monthto= htmlspecialchars($monthto);
ну раз пошла такая пьянка, то еще так )

еще можно влепить регулярное выражение на проверку только цифр


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: stix от 10 Сентября 2012, 21:01:36
и так

Код:
$sqlstr = "SELECT u.id,u.name,u.ip FROM users u INNER JOIN pays p ON p.mid=u.id WHERE p.type=50 AND ((p.category=410 AND p.reason LIKE 'Включен ли доступ: да -> нет') OR p.category=423) AND p.time>=unix_timestamp('$monthfrom') AND p.time < unix_timestamp('$monthto') GROUP BY u.id"

$escsqlstr = mysql_escape_string($sqlstr);


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: neta от 11 Сентября 2012, 10:46:59
Низкий поклон всем откликнувшимся.


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: neta от 11 Сентября 2012, 11:32:34
фактически нужно вывести список абонентов, которым был присвоем state=off
типо в мае - state=off было сделано тем то, в июне - тем то.
а что если потом был state=on ?
тогда нужно смотреть еще были ли после этого платежи и включался ли доступ обратно.
так?

Да, верно, необходимо вывести абонентов у которых в мае был присвоен статус state=off и это был последний статус, больше он не оплачивал услуги.
Задача чтобы вывести всех абонентов за заданный месяц котрые были отключены и более не оплачивали, продолжают быть не активны до текущего времени.


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: 0xbad0c0d3 от 11 Сентября 2012, 15:38:42
Код:
SELECT u.id,u.name,u.ip FROM users u
INNER JOIN pays p ON p.mid=u.id
WHERE p.type=50 AND ((p.category=410 AND p.reason LIKE 'Включен ли доступ: да -> нет') OR
p.category=423) AND
p.time>=unix_timestamp('2012-06-01') AND p.time<unix_timestamp('2012-07-01') AND u.state='off'
GROUP BY u.id


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: stix от 11 Сентября 2012, 22:02:21
фактически нужно вывести список абонентов, которым был присвоем state=off
типо в мае - state=off было сделано тем то, в июне - тем то.
а что если потом был state=on ?
тогда нужно смотреть еще были ли после этого платежи и включался ли доступ обратно.
так?

Да, верно, необходимо вывести абонентов у которых в мае был присвоен статус state=off и это был последний статус, больше он не оплачивал услуги.
Задача чтобы вывести всех абонентов за заданный месяц котрые были отключены и более не оплачивали, продолжают быть не активны до текущего времени.

в php сам поменяешь переменные?

и проверки не забудь.
надо было бы еще систему авторизации сделать...
пара-тройка функций для $_SESSION, а то мало ли.....


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: neta от 17 Сентября 2012, 22:05:22
Вся неделя была перегружена.
Спасибо, завтра буду ковырять.


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: 0xbad0c0d3 от 17 Сентября 2012, 22:45:26
Кстати, вот недавно сделал для марктологов, простите за такие слова, я знаю их все "любят" )) свистелочку, номейк, который выбирает абнов (нужные нам поля) и складвает это все в файл csv и они там седят на него, простите еще раз - оргазмируют )))
P.S. Номейк переписан с расширеннным функционалом, где-то на форуме писал про него и кажется даже выкладывал. Но сейчас там просто монстр )) с поддержкой переменных, собственных запросов и вставке данных из запросов, сгенерированных динамически...


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: stix от 17 Сентября 2012, 22:48:40
походу те, кто смогут разобраться в нем - смогут сделать сделать свой номейк ))

тут важно понимание SQL....с перлом конечно не у всех хорошо


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: 0xbad0c0d3 от 17 Сентября 2012, 22:52:49
Код:
<file>/tmp/users.csv</file>
<mode>655</mode>
<template>2</template>
<fields>fio,paket,grp,paket_name,paket_price,grp_name,state,mid</fields>
<query>
        SELECT u.*,p2.price paket_price,p2.name paket_name,g.* FROM users u
        INNER JOIN plans2 p2
        INNER JOIN user_grp g
        ON u.paket=p2.id AND u.grp=g.grp_id
        WHERE u.mid=0 AND u.grp NOT IN (9,10)
</query>
ID;ФИО;Группа;Тариф;Цена тарифа;Статус;Улица;Дом;Блок;Квартира;Телефон;
<filtr><id>;<fio>;<grp_name>;<paket_name>;<paket_price>;<state>;sql:SELECT name_street FROM p_street WHERE street=<dopdata-p_street:street:name_street>;;<dopdata-_adr_house>;<dopdata-_adr_block>;<dopdata-_adr_room>;<dopdata-_adr_telefon>;
</filtr>
Вот примерчик


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: smallcms от 17 Сентября 2012, 23:39:09
P.S. Номейк переписан с расширеннным функционалом, где-то на форуме писал про него и кажется даже выкладывал.
Олвейс ин ма майнд (http://code.google.com/p/nodeny49modules/wiki/NoMakePowerSQL), за что благодарим неистово. :)


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: versus от 18 Сентября 2012, 07:14:14
монстры !!!


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: neta от 20 Сентября 2012, 14:35:13
Код:
SELECT u.id,u.name,u.ip FROM users u
INNER JOIN pays p ON p.mid=u.id
WHERE p.type=50 AND ((p.category=410 AND p.reason LIKE 'Включен ли доступ: да -> нет') OR
p.category=423) AND
p.time>=unix_timestamp('2012-06-01') AND p.time<unix_timestamp('2012-07-01') AND u.state='off'
GROUP BY u.id

Огромное спасибо за труды и внимание, если есть возможность, помогите.
Не совсем так как мне нужно, в данном случае выводит всех пользователей которые получили статус u.state='off' за период с 06 по 07 месяц, но в том числе выводит тех кто в будущем оплатит услугу, в следующем месяце или через месяц, мне необходимо вывести только тех кто за указанный период получил статус OFF и больше не оплачивал услуги. статус больше не менялся.

За ранее спасибо всем!


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: 0xbad0c0d3 от 20 Сентября 2012, 17:10:53
тут, как бы, так и есть!
Код:
AND u.state='off'
это значит - доступ запрещен, на текущий момент!


Название: Re: Необходим скрипт для вывода абонентов у которых доступ запрещен помесячно
Отправлено: neta от 21 Сентября 2012, 08:16:47
Так но не так, я не правильно объяснил, мне нужно выбрать пользователей которые больше не работают, которые отключились, те кто перешли в статус офф и больше не платили, вывести по месяцам, в с 06 месяца по 07 месяц отключилось к примеру 10 пользователей, с 07 по 08 месяц 15 пользователей.

Данный скрипт выводит тех у кого отключался интернет за период с 06 по 07 месяц и сейчас тоже выключен, но он выключился у кого вчера, у кого два дня назад и тд, но перед этим он работал потому как они его оплачивали, просто их выключало в период с 07 по 08 месяц и сейчас они выключены, таких пользователей очень много, у нас большинство приходят тогда когда у них заканчиваются деньги и их отключит, к тому же не сразу а часть приходит через несколько дней.
Нужно вывести пользователей у которых за период с 07 по 08 месяц последним бы статус выключен и более не менялся, необходимо выделить тех пользователей которые отключились от интернета в указанный период месяца.