forum.bitel.ru
http://forum.bitel.ru/

Монитор статуса
http://forum.bitel.ru/viewtopic.php?f=22&t=4832
Страница 1 из 1

Автор:  max [ 26 ноя 2010, 21:04 ]
Заголовок сообщения:  Монитор статуса

Скажите как вывести все договора по которым не поступило оплаты за текущий месяц? если это в текущем функционале незя сделать то можно в ТУДУ?

Автор:  skyb [ 27 ноя 2010, 07:09 ]
Заголовок сообщения:  Re: Монитор статуса

2 или 3 раза писал уже про этот скрипт

Автор:  max [ 28 ноя 2010, 16:49 ]
Заголовок сообщения:  Re: Монитор статуса

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

Автор:  skyb [ 28 ноя 2010, 16:56 ]
Заголовок сообщения:  Re: Монитор статуса

а в группах то чаво плохого? :) а так только автоудаление договоров в комплекте идет, но этого мало
за это мерси.
беру плюсиками :-)

Автор:  max [ 29 ноя 2010, 01:21 ]
Заголовок сообщения:  Re: Монитор статуса

так как у нас группа компаний биллинг обслуживает сразу несколько ООО, и как следствие идёт привязка на группы, исходя из этого формируется и шаблон договора в карточках, в общем много чего завязано, и трогать противопоказано.

Автор:  skyb [ 29 ноя 2010, 05:46 ]
Заголовок сообщения:  Re: Монитор статуса

если интересно --- сейчас доделал и тестирую подобный скрип, только там CRM плагин используется

Автор:  max [ 29 ноя 2010, 10:59 ]
Заголовок сообщения:  Re: Монитор статуса

а можно поподробней?

Автор:  skyb [ 29 ноя 2010, 13:14 ]
Заголовок сообщения:  Re: Монитор статуса

max писал(а):
а можно поподробней?

конечно :)
viewtopic.php?f=19&t=4538

Автор:  max [ 29 ноя 2010, 22:34 ]
Заголовок сообщения:  Re: Монитор статуса

и всётаки хотелось бы иметь данный функционал в мониторе статуса, так как есть клиенты которых отключать не нада, а скрипту собственно пофиг вип это клиент или нет :)

Автор:  Администратор [ 30 ноя 2010, 12:27 ]
Заголовок сообщения:  Re: Монитор статуса

Если просто вывести, то:
Код:
SELECT contract.title, payment.id FROM contract
LEFT JOIN contract_payment AS payment ON contract.id=payment.cid AND payment.dt>='2010-11-01' AND payment.dt<'2010-12-01'
HAVING payment.id IS NULL

Автор:  max [ 30 ноя 2010, 22:01 ]
Заголовок сообщения:  Re: Монитор статуса

дык сделали бы галочку в мониторе статуса с таким кодом так как при выборе строки с договором он сам не открывается, и приходится пользоваться поиском по номеру что бы понять что это за клиент! было бы круто если бы сделали, за код спасибо....

Автор:  max [ 30 ноя 2010, 22:06 ]
Заголовок сообщения:  Re: Монитор статуса

сразу встречный вопрос а как можно игнорировать закрытые договора или договора?

Автор:  Phricker [ 01 дек 2010, 12:26 ]
Заголовок сообщения:  Re: Монитор статуса

contract.date2 is null
contract.id in ('xxx', 'xxx')

Автор:  max [ 01 дек 2010, 19:33 ]
Заголовок сообщения:  Re: Монитор статуса

Phricker писал(а):
contract.date2 is null
не работает эта строчка

Автор:  Phricker [ 01 дек 2010, 19:37 ]
Заголовок сообщения:  Re: Монитор статуса

max писал(а):
Phricker писал(а):
contract.date2 is null
не работает эта строчка

Код:
SELECT contract.title, payment.id, contract.date2  FROM contract
LEFT JOIN contract_payment AS payment ON contract.id=payment.cid AND payment.dt>='2010-11-01' AND payment.dt<'2010-12-01'
where contract.date2 is null
HAVING payment.id IS NULL

Вроде так. Если не так прошу сильно не пинать сейчас голова забита совсем другим

Автор:  max [ 08 дек 2010, 02:02 ]
Заголовок сообщения:  Re: Монитор статуса

да, спасибо, работает... жаль что не отписались девелоперы

Автор:  max [ 18 дек 2010, 21:02 ]
Заголовок сообщения:  Re: Монитор статуса

скажите пожалуйста, а как в этом коде:
Код:
SELECT contract.title, payment.id, contract.date2  FROM contract
LEFT JOIN contract_payment AS payment ON contract.id=payment.cid AND payment.dt>='2010-12-01' AND payment.dt<'2010-12-31'
where contract.date2 is null
HAVING payment.id IS NULL

сделать ещё проверку на id группы договора?
просто сейчас попадает в выборку много договоров из группы "расторгнутых и закрытых"

Автор:  Phricker [ 20 дек 2010, 12:11 ]
Заголовок сообщения:  Re: Монитор статуса

max писал(а):
скажите пожалуйста, а как в этом коде:
Код:
SELECT contract.title, payment.id, contract.date2  FROM contract
LEFT JOIN contract_payment AS payment ON contract.id=payment.cid AND payment.dt>='2010-12-01' AND payment.dt<'2010-12-31'
where contract.date2 is null and contract.gr = gr&(1<<1) # где вторая 1 является кодом группы из справочника "группы договоров"
HAVING payment.id IS NULL

сделать ещё проверку на id группы договора?
просто сейчас попадает в выборку много договоров из группы "расторгнутых и закрытых"

Wiki - Разные SQL запросы

Автор:  max [ 20 дек 2010, 19:21 ]
Заголовок сообщения:  Re: Монитор статуса

сорри, но я не сильно шарю в скуэкле, как объединить эти два куска кода?
Код:
Поиск договоров с группой 7:

SELECT * FROM contract WHERE gr&(1<<7) > 0

и
Код:
SELECT contract.title, payment.id, contract.date2  FROM contract
LEFT JOIN contract_payment AS payment ON contract.id=payment.cid AND payment.dt>='2010-12-01' AND payment.dt<'2010-12-31'
where contract.date2 is null and contract.gr = gr&(1<<1) # где вторая 1 является кодом группы из справочника "группы договоров"
HAVING payment.id IS NULL

Автор:  Phricker [ 20 дек 2010, 20:33 ]
Заголовок сообщения:  Re: Монитор статуса

max писал(а):
сорри, но я не сильно шарю в скуэкле, как объединить эти два куска кода?
Код:
Поиск договоров с группой 7:

SELECT * FROM contract WHERE gr&(1<<7) > 0

и
Код:
SELECT contract.title, payment.id, contract.date2  FROM contract
LEFT JOIN contract_payment AS payment ON contract.id=payment.cid AND payment.dt>='2010-12-01' AND payment.dt<'2010-12-31'
where contract.date2 is null and contract.gr = gr&(1<<1) # где вторая 1 является кодом группы из справочника "группы договоров"
HAVING payment.id IS NULL

Читать выше я же написал :) В цитате уже готовый код

Автор:  max [ 20 дек 2010, 23:17 ]
Заголовок сообщения:  Re: Монитор статуса

спс, не заметил....

Автор:  max [ 25 янв 2011, 18:22 ]
Заголовок сообщения:  Re: Монитор статуса

поясните пожалуйста несведующему
я вот выполняю этот код:
Код:
SELECT contract.title, payment.id, contract.date2  FROM contract
LEFT JOIN contract_payment AS payment ON contract.id=payment.cid AND payment.dt>='2011-01-01' AND payment.dt<'2011-01-31'
where contract.date2 is null and contract.gr = gr&(1<<3) # где вторая цифра является кодом группы из справочника "группы договоров"
HAVING payment.id IS NULL

получаем скриншот который приаттачен
при этом возникает четыре вопроса у меня
1. что за Newcontract в первой строчке? его на самом деле нет! и причём он светится в каждой выводимой группе!
2. что за колонка id? и можно сделать так что бы она не выводилась?
3. почему выводится колонка date2? как сделать чтобы не выводилась?
4. в ходе работы с результатом обнаружился большой процент ложных срабатываний, и появилась необходимость добавить ещё одно условие: а именно баланс на начало месяца должен быть меньше нуля, подскажите пожалуйста как это написать в запросе?
Заранее спасибо.

Вложения:
.JPG
.JPG [ 65.39 КБ | Просмотров: 9716 ]

Автор:  max [ 28 янв 2011, 01:28 ]
Заголовок сообщения:  Re: Монитор статуса

up

Автор:  Phricker [ 28 янв 2011, 12:29 ]
Заголовок сообщения:  Re: Монитор статуса

max писал(а):
1. что за Newcontract в первой строчке? его на самом деле нет! и причём он светится в каждой выводимой группе!
2. что за колонка id? и можно сделать так что бы она не выводилась?
3. почему выводится колонка date2? как сделать чтобы не выводилась?
4. в ходе работы с результатом обнаружился большой процент ложных срабатываний, и появилась необходимость добавить ещё одно условие: а именно баланс на начало месяца должен быть меньше нуля, подскажите пожалуйста как это написать в запросе?
Заранее спасибо.



Как много вопросов :)
1) Ну это ваш договор созданный без шаблона. Ищите его.
2) Колонка ID - это ID платежа совершенного (в вашем случае не совершенного) в системе
3) Колонка date2 - дата закрытия договора
(по вышесказанному вам наверное стоит заглянуть сюда и еще вот сюда, где, наверное, для начала посмотреть вот это Справка по языку манипуляции данными SQL (DML SQL))
4)
Код:
SELECT contract.title, contract.comment, payment.id, contract.date2, contract_balance.summa1
FROM contract_balance, contract
LEFT JOIN contract_payment AS payment ON contract.id=payment.cid AND payment.dt>='2011-01-01' AND payment.dt<'2011-01-31'
where contract.date2 is null and contract.gr = gr&(1<<3) and contract_balance.cid = contract.id and contract_balance.summa1 <0
HAVING payment.id IS NULL

Вроде так. Хотя честно говоря я уже забыл о чем этот скрипт :D

Автор:  max [ 29 янв 2011, 00:57 ]
Заголовок сообщения:  Re: Монитор статуса

Phricker писал(а):
Как много вопросов :)
1) Ну это ваш договор созданный без шаблона. Ищите его.
2) Колонка ID - это ID платежа совершенного (в вашем случае не совершенного) в системе
3) Колонка date2 - дата закрытия договора
(по вышесказанному вам наверное стоит заглянуть сюда и еще вот сюда, где, наверное, для начала посмотреть вот это Справка по языку манипуляции данными SQL (DML SQL))
4)
Код:
SELECT contract.title, contract.comment, payment.id, contract.date2, contract_balance.summa1
FROM contract_balance, contract
LEFT JOIN contract_payment AS payment ON contract.id=payment.cid AND payment.dt>='2011-01-01' AND payment.dt<'2011-01-31'
where contract.date2 is null and contract.gr = gr&(1<<3) and contract_balance.cid = contract.id and contract_balance.summa1 <0
HAVING payment.id IS NULL

Вроде так. Хотя честно говоря я уже забыл о чем этот скрипт :D

У меня есть возражения и появились ещё вопросы!
1. Нет этого договора! Причём эта строчка кочует из результата в результат независимо от тотго какую группу договоров я подставляю в запрос!
2. Понятно, но как убрать отображение её в результате?
3. Аналогично 2, с вашими ссылками буду знакомиться сенкс!
4. Ваш запрос выдаёт что то совсем не то (см аттач), изначально идея была вывести все номера договоров и их название по которым не было приходов за определённый период, и баланс которых на начало месяца меньше нуля, с учётом групповой принадлежности договора.
Заранее спасибо.

Вложения:
результат.JPG
результат.JPG [ 153.4 КБ | Просмотров: 9683 ]

Автор:  max [ 31 янв 2011, 14:50 ]
Заголовок сообщения:  Re: Монитор статуса

up

Автор:  max [ 02 фев 2011, 22:44 ]
Заголовок сообщения:  Re: Монитор статуса

up

Автор:  Phricker [ 02 фев 2011, 23:48 ]
Заголовок сообщения:  Re: Монитор статуса

Код:
SELECT cnt.title, cnt.comment, bal.summa1
  FROM contract_balance AS bal,
          contract AS cnt
       LEFT JOIN
          contract_payment AS pay
       ON cnt.id = pay.cid AND pay.dt BETWEEN '2011-01-01' AND '2011-01-31'
 WHERE     pay.id IS NULL
       AND cnt.date2 IS NULL
       AND cnt.gr = gr & (1 << 3)
       AND bal.cid = cnt.id
       AND bal.yy = '2011'
       AND bal.mm = '1'
       AND bal.summa1 < 0
ORDER BY cnt.title

Попробуйте. Сначала выложил версию без проверки на минусовой баланс :) Потом вспомнил пришлось удалять сообщение и делать новое.

Прим: Период менять в двух местах
Цитата:
AND bal.yy = '2011'
AND bal.mm = '1'
отвечает за период балансов
Цитата:
pay.dt BETWEEN '2011-01-01' AND '2011-01-31'
за период платежей

Автор:  Phricker [ 02 фев 2011, 23:52 ]
Заголовок сообщения:  Re: Монитор статуса

Ах да... Про NEW CONTRACT.
В этот скрипт попадают и те договора которые совсем без группы.
Изображение
Все эти три договора без группы :) Можно добавить конечно пункт
Код:
and cnt.gr <> 0
, но это уже по желанию

Автор:  max [ 03 фев 2011, 19:10 ]
Заголовок сообщения:  Re: Монитор статуса

спасибо то что нада!

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/