|
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 11
|
|
Расчёт пени09.02.2015, 08:06. Показов 5412. Ответов 24
Метки нет (Все метки)
Приветствую Вас, форумчане!
Проблема следующая. Компания занимается реализацией авто в рассрочку. Есть три таблицы - График, Касса, Клиенты. У каждого клиента есть свой график, по кассе отражаются его платежи. Хочу создать отчёт для расчёта пени со столбцами - №, Дата, Начислено, Оплачено, Долг, Начало периода, Конец периода, Размер пени в день, Количество дней в периоде, Сумма пени. Расчёт осуществляется по периодам. Периоды формируются исходя из двух событий - дата оплаты по графику, дата фактической оплаты. Проблема в столбце Конец периода, который равен значению Начало периода следующей записи. Уникального поля нет, так как данные берутся с разных таблиц. Прошу помощи в реализации отчёта - как получить данные поля Начало периода следующей записи? Заранее благодарю за внимание!
0
|
|
| 09.02.2015, 08:06 | |
|
Ответы с готовыми решениями:
24
Расчёт пени Запрос на вычислении пени Расчет пени на текущую сумму долга |
|
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
|
|
| 09.02.2015, 08:46 | |
|
Пени начисляются на общий долг? Тогда возможно подойдет запрос К_Долги_ во вложении (в конструкторе не открывайте, можете испортить, только SQL).
1
|
|
|
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 11
|
|
| 09.02.2015, 08:58 [ТС] | |
|
ltv_1953, как вы это сделали? ))) Не могу пока понять логику. Не могли бы вы объяснить в общих чертах хотя бы?
Огромное Вам спасибо за решение!
0
|
|
|
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
|
|
| 09.02.2015, 09:14 | |
|
Запрос К_Суммы_: в нем клиенты, даты изменения долга (было начисление или/и платеж), сумма - начисление с плюсом (увеличивает долг), платеж - с минусом (уменьшает долг).
Запрос К_Долги_: в нем К_Суммы_ джойнится сам с собой по клиенту (=) и по дате (<), делается группировка по клиенту и дате (По), вычисляется сумма долга на дату С и максимальная предыдущая дата (С). Вроде все получается. И учтите, при расчете пени, что дату По нужно уменьшить на 1, так как с нее начинается следующий период.
1
|
|
|
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 11
|
|
| 09.02.2015, 09:15 [ТС] | |
|
ltv_1953, а как можно перенести данные запроса К_Долги_ в отчёт "Пени" ?
0
|
|
|
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
|
|
| 09.02.2015, 09:35 | |
Сообщение было отмечено Saga как решение
Решение
Джойнить с запросом Пени, ну и немного изменить поля в отчете (дату заменил на фамилию, убрал накопление, уменьшил дату По на 1, ставку пени забил 0,5%).
1
|
|
|
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 11
|
|
| 09.02.2015, 12:22 [ТС] | |
|
Благодарю Вас от всей души! Буду разбираться!
Добавлено через 2 часа 45 минут В отчёте "Пени", строка №2 и строка №3 по столбцу "Сумма пени" выдают одинаковую сумму из-за того, что дата одна и та же. А нельзя заджойнить запрос "Пени" с самим собой, добавив строку с текущей датой? Смысл в том, чтобы формировать отчёт по текущую дату.
0
|
|
|
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 11
|
|
| 09.02.2015, 12:43 [ТС] | |
|
Нашел снимок отчёта, который должен получиться в итоге. Насчёт дней в периоде Вы правы, во вложении он некорректно считает. В остальном это то, что я должен получить в итоге.
0
|
|
|
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
|
|
| 09.02.2015, 13:39 | |
|
Можно изобразить что-то похожее.
Но такие отчеты - совмещение деталей расчета долга (может же быть и не один платеж в одну дату - наличными, с карты, ... ) с расчетом пеней по периоду лучше делать с предварительным формированием дополнительной таблицы для отчета.
0
|
|
|
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
|
|
| 09.02.2015, 13:56 | |
|
Хотя, используя то, что в отличии от продаж, начисление может быть только одно за дату, можно сделать так.
0
|
|
|
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 11
|
|
| 09.02.2015, 14:19 [ТС] | |
|
Я понял. Примерно как во вложении? Создаю временную таблицу, добавляю в неё данные из запроса "Пени" и объединяю с собой со сдвигом на +1 по id.
Теперь проблема только в формировании строки с последней оплаты или начисления по текущую дату. Как это можно реализовать не подскажете?
0
|
|
|
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
|
||
| 09.02.2015, 14:32 | ||
|
Нет, сложнее. Я такие таблицы (для сверки долга с клиентами) формирую с обработкой в наборах данных, учитывая разные отсрочки и т.д..
А Вам того, что в последней версии (Пени3) должно хватить. Можно еще все вычисления перенести в запрос, добавить группу Фамилия и считать итоги пеней по Фамилиям. Добавлено через 5 минут
0
|
||
|
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 11
|
||
| 09.02.2015, 14:35 [ТС] | ||
|
Да, вроде хватает, но у меня последняя запись выпадает. Должна быть строка №26 с "Дата начала"=20.05.2013 и "Дата конца" = текущая дата. Не знаю как прикрутить к запросу текущую дату.
Добавлено через 1 минуту
0
|
||
|
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
|
|
| 09.02.2015, 14:55 | |
|
Смотрите во вложении:
1
|
|
|
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 11
|
|
| 10.02.2015, 06:39 [ТС] | |
|
Спасибо большое за участие! Несколько месяцев не мог реализовать данный блок.
Добавлено через 15 часов 41 минуту Доброго Вам дня! Проверяю данные и нашёл одну нестыковку. В запросе "К_Долги_" теряется одна запись (запись с последней датой) на сумму 176 429,28. Не поможете вернуть?
0
|
|
|
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
|
|
| 10.02.2015, 07:01 | |
|
Угу. Ведь же исходно искали полные интервалы, а только потом прилепили текущую дату. Нужна еще запись с интервалом (макс. дата, текущая дата). Посмотрю днем.
0
|
|
|
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
|
|
| 10.02.2015, 07:38 | |
|
Удалось сделать быстро - последняя добавляется в UNION, а предпоследняя - как в 3 версии. Смотрите и обязательно проверьте.
1
|
|
|
0 / 0 / 0
Регистрация: 29.01.2014
Сообщений: 11
|
|
| 10.02.2015, 09:07 [ТС] | |
|
Благодарствую, а то я начал вставлять новую запись.
Добавлено через 1 час 6 минут В "Запросе Для_Отчета_1" подправил "IIf([Начислено]>0,Null,[Ставка]*[Интервал]*[Долг]) AS Пени1" на "IIf([Долг]<0,Null,[Ставка]*[Интервал]*[Долг]) AS Пени1". Думаю так правильнее. Но тогда в отчет "Пени" сбивается поле "Сумма пени" по строке №2 из-за того, что "Окончание периода" должно быть не "20.02.2012", а "20.01.2012". При сдвиге он берёт дату только больше даты начала периода. Получается без уникального поля сдвиг делаем по дате и если дата окончания периода текущей записи равна дате начала периода следующей записи - считает неправильно.
0
|
|
|
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
|
|
| 10.02.2015, 11:18 | |
|
Спецобработка, когда в дате только оплата.
1
|
|
| 10.02.2015, 11:18 | |
|
Помогаю со студенческими работами здесь
20
Расчёт стоимости со скидкой Расчёт средневзвешенных записей Расчёт платёжки за электроинергию ibm db2 расчёт производных параметров Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|