Есть задача: выписывать счета периодические по месяцам. Выбор месяца и года ставлю из списка с множественным выбором (например: ноябрь 2015, декабрь 2015, январь 2015 и т.д.). Нужно чтобы при выписывании счета в списке оставались те месяца по которым счет ещё не выставлялся.
Вопрос: как сделать неактивным (или вообще удалять) из поля типа список ненужные месяца при редактировании счёта?


Сообщений в теме: 3
#1
Отправлено 16 Октябрь 2015 - 15:54
#2
Отправлено 17 Октябрь 2015 - 23:55
Лучше эти периоды (месяц-год) сделать в отдельной таблице и связать ее с основной через поле типа "связь". Тогда это будет поле не со множественным выбором, а выпадающий список периодов.
По мере того, как будут выписываться счета, необходимо в этой дополнительной таблице на выбранный период ставить "флаг" . Для этого создать там как "флаг" поле со списком "Да/Нет", а также фильтр по этом полю.
Через вычисления надо будет каждый раз в поле "флаг" ставить "Да", чтобы при выписке следующего счета уже использованный ранее период (месяц-год) отсутствовал в выпадающем списке.
Получается, что на каждого Клиента нужно будет создавать такую отдельную дополнительную таблицу, что не рационально.
Представляется, что можно создать общую для всех Клиентов таблицу периодов и создать фильтр по полю связи Клиент с основной таблицей.
Таким образом, при выборе Клиента таблица периодов из которой будет выбирать период (месяц-год) для выписки счета будет отфильтрована только для одно выбранного Клиента и в ней будут только ранее не использованные периоды.
По мере того, как будут выписываться счета, необходимо в этой дополнительной таблице на выбранный период ставить "флаг" . Для этого создать там как "флаг" поле со списком "Да/Нет", а также фильтр по этом полю.
Через вычисления надо будет каждый раз в поле "флаг" ставить "Да", чтобы при выписке следующего счета уже использованный ранее период (месяц-год) отсутствовал в выпадающем списке.
Получается, что на каждого Клиента нужно будет создавать такую отдельную дополнительную таблицу, что не рационально.
Представляется, что можно создать общую для всех Клиентов таблицу периодов и создать фильтр по полю связи Клиент с основной таблицей.
Таким образом, при выборе Клиента таблица периодов из которой будет выбирать период (месяц-год) для выписки счета будет отфильтрована только для одно выбранного Клиента и в ней будут только ранее не использованные периоды.
Сообщение отредактировал Tony999: 17 Октябрь 2015 - 23:56
Умные сайты на заказ
https://info.crm-master.info
https://info.crm-master.info
#3
Отправлено 21 Октябрь 2015 - 11:17
А как тогда можно будет выбирать несколько месяцев? Например мне нужно в одном счёте вставить и ноябрь 2015 и декабрь 2015
#4
Отправлено 24 Октябрь 2015 - 17:45
В у вас суммы каждый месяц по каждому клиенту одинаковые или разные?
Вообще-то я бы сделал так:
1. Таблица типовых периодов оплаты (12 записей помесячно) с полем типа список "включать/не включать".
2. Таблица клиентов с полем "Аренда" типа список "Считать/Не считать"
3. Таблица счетов с полями "Клиент", "Типовой период", "Статус счета"
В "Статусе счета" список "Не наступил/Наступил/Выставлен/Оплачен"
Алгоритм:
1. Зашли в типовые периоды оплаты и поменяли поле на "включать" по всем месяцам, которые нужно включать в счета на оплату.
2. Нажали кнопку дополнительного действия "Сформировать счета"
3. В алгоритме "Сформировать счета" SELECTом перебираем выбранные месяца, внутри которых клиентов со статусом "Выставлять", внутри которого смотрим, есть ли в таблице "счета" такой счет, у которого в этом году совпали и клиент и период. Если нет, то создаем.
4. Открываем запись из таблицы "Клиенты" и подключаем подтаблицу "Счета" с фильтром "Статус не равен оплачено". Получаем все не оплаченные ранее и за отчетные месяца счета клиента.
В общем где-то так. А вот практическая реализация уже в личке и за деньги.
Вообще-то я бы сделал так:
1. Таблица типовых периодов оплаты (12 записей помесячно) с полем типа список "включать/не включать".
2. Таблица клиентов с полем "Аренда" типа список "Считать/Не считать"
3. Таблица счетов с полями "Клиент", "Типовой период", "Статус счета"
В "Статусе счета" список "Не наступил/Наступил/Выставлен/Оплачен"
Алгоритм:
1. Зашли в типовые периоды оплаты и поменяли поле на "включать" по всем месяцам, которые нужно включать в счета на оплату.
2. Нажали кнопку дополнительного действия "Сформировать счета"
3. В алгоритме "Сформировать счета" SELECTом перебираем выбранные месяца, внутри которых клиентов со статусом "Выставлять", внутри которого смотрим, есть ли в таблице "счета" такой счет, у которого в этом году совпали и клиент и период. Если нет, то создаем.
4. Открываем запись из таблицы "Клиенты" и подключаем подтаблицу "Счета" с фильтром "Статус не равен оплачено". Получаем все не оплаченные ранее и за отчетные месяца счета клиента.
В общем где-то так. А вот практическая реализация уже в личке и за деньги.
Количество пользователей, читающих эту тему: 4
0 пользователей, 4 гостей, 0 анонимных