Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
 Оплаты договоров  [new]
sergq
Member

Откуда:
Сообщений: 575
Здравствуйте.

допустим есть договор.

есть у него план оплат. в разрезе источников оплат.
источники оплат - справочник. разделен по годам. те ПК там ИД источника оплаты и год.
Соответственно один и тот же источник в разные годы будет иметь разный ПК.

допустим имеем мы в договоре в 2016 году тип оплаты Х. В сумме миллион.
внутри года оплатили 900 тр. с указанием типа оплаты Х. записали в таблице оплат со ссылкой на год и на ИД типа оплаты Х.
Все красиво. баланс подбить не проблема.

образовалась у нас кредиторка.
наступил новый год. и решили оплатить. но в новом году у типа оплаты Х другой ПК. И в плане оплаты прошлого года его нет.
Да и быть не может. тк он из другого года. А может так случиться, что оплатить возможно будет только с типа Y нового года.

Собственно почти голову сломал как же в новом году зарегистрировать оплату по прошлогоднему договору по другому типу оплаты.


Спасибо
24 сен 17, 18:14    [20819070]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
sergq
Member

Откуда:
Сообщений: 575
В голову приходит только регистрация кредиторки по соответствующим договорам в начале года с указанием нового типа оплаты и суммы из справочника текущего года
24 сен 17, 18:16    [20819074]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
vmag
Member

Откуда: г. Одинцово
Сообщений: 2639
sergq
те ПК там ИД источника оплаты и год.


Мне вот интересно, тому кто этот костыль делал, не приходило в голову, что могут платить частями и даже не в этом году?
ПК в виде обычного счетчика в таблице оплат придумать - это наверное уже из области недосягаемого...
24 сен 17, 18:29    [20819091]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
sergq
Member

Откуда:
Сообщений: 575
vmag
sergq
те ПК там ИД источника оплаты и год.


Мне вот интересно, тому кто этот костыль делал, не приходило в голову, что могут платить частями и даже не в этом году?
ПК в виде обычного счетчика в таблице оплат придумать - это наверное уже из области недосягаемого...


согласен. костыль.
Но. может случиться так, что в плане оплат в 2016 году будет стоять источник Х.
А в 2017 году такового источника может просто не оказаться. Будет источник Y. и тут уже без разницы какой ПК. ибо он в любом случае будет другой
24 сен 17, 18:32    [20819097]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
vmag
Member

Откуда: г. Одинцово
Сообщений: 2639
sergq,

Это решается полем Дата_Оплаты...
900 т.р. - Источник Х - 01.06.2016 г.
100 т.р. - Источник Х - 01.02.2017 г.

Из второй строки очевидно, что 100 т.р. свалились из какого-то старого плана, с задержкой в 2017 году, раз Х в 2017 году нет (но однозначно Х был раньше, иначе нельзя бы было выбрать Х вообще),
как то даже говорить про то, что система не может учесть приход денег которые должны были прийти,
но пришли с задержкой или с разбивкой на этапы и с задержкой - стыдновато...
24 сен 17, 18:42    [20819113]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
vmag
Member

Откуда: г. Одинцово
Сообщений: 2639
sergq,

Добавь в ключ еще и дату оплаты...
24 сен 17, 18:44    [20819115]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
sergq
Member

Откуда:
Сообщений: 575
vmag,

у источника Х в разные годы разные ПК.


собственно получится, что в плане оплат будет стоять ПК источника (например) равный 1.

а вот в факте оплат будет два факта. один факт за 2016 год с ПК источника равным 1.
и второй факт. за 2017 год с источником с ПК равным 2.

в итоге баланс получается такой.
по источнику с ПК 1 мы начислили миллион.

А оплатили по сути с двух разных источников.

В итоге надо получить стандартный отчет

ИД источникаПланФакт
110000001000000


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

ИД источникаПланФакт
11000000900000
20100000
24 сен 17, 19:08    [20819132]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 7579
sergq,

Думаю что Вам справочник надо сделать более сложным, из двух таблиц с соотношением 1:N- в одной будет разрез по годам, в другой - нет. В договоре у Вас будет прописана ссылка на родительскую таблицу, в конкретных оплатах - на дочернюю.
24 сен 17, 19:19    [20819148]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
sergq
Member

Откуда:
Сообщений: 575
Кот Матроскин,

Те одина таблица справочника будет содержать просто список всех возможных типов оплат. Эдакий raw справочник. А вторая -только действующие в текущем году .
Кстати так и сделано со справочником )

В плане оплат на raw справочник , а в факте на действующие в текущем году?

Только вот в план должны попасть только те, что действуют в году договора. Сейчас реализовано на ФК. Как раз в ФК год и задействован .
И в фактах оплат тоже был год задействован в ФК

Тогда наверно наоборот . В план оплат - которые действуют в текущем году. Как раз по ФК можно будет отсеивать не действующие в тек году. А в факт -raw.

Проблема в том, что такие случаи очень единичны . И было удобно держать ФК на ид и год действия оплаты. Не добавишь по дурости лишку. А вот кредиторка как раз та лишка и есть
24 сен 17, 19:34    [20819165]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
sergq
Member

Откуда:
Сообщений: 575
sergq,

А вообще как вариант сделать отдельную табличку.
'В 2017 году тип Х 2017 года считать как тип Х 2016 года '

в для "не пересекающихся " типов в неё писать такое.

В 2016 году тип Х 2016 года считать как тип Х 2016 года
Для "одногодок" заполнять её на триггере автоматом

И вот на эту табличку и делать ссылку и в плане и в факте.

Тогда вроде как все красиво получится. Ошибиться сможет только оператор в формировании этого справочника . Но это в редких случаях
24 сен 17, 19:51    [20819191]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 7579
sergq
действующие в текущем году?

Только вот в план должны попасть только те, что действуют в году договора. Сейчас реализовано на ФК. Как раз в ФК год и задействован .
И в фактах оплат тоже был год задействован в ФК

Ну и прекрасно - но группируйте их в этом Вашем отчете "план-факт" не до ссылок дочерних таблиц "тип+ год", а просто до "тип".
Т.е. у Вас 1 запись План ((XXX, 2016), 1000000), 2 записи "Факт" - ((XXX, 2016), 900 000 ) и ((ХХХ, 2017), 100 000), Вы группируете и план и факт по типу ХХХ, и Ваш отчет выглядит
Тип План Факт
ХХХ 10000001000000

И то, что реально в "факте" 2 оплаты с разными ссылками на дочернюю таблицу - не видно.
24 сен 17, 20:35    [20819257]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
sergq
Member

Откуда:
Сообщений: 575
Кот Матроскин
sergq
действующие в текущем году?

Только вот в план должны попасть только те, что действуют в году договора. Сейчас реализовано на ФК. Как раз в ФК год и задействован .
И в фактах оплат тоже был год задействован в ФК

Ну и прекрасно - но группируйте их в этом Вашем отчете "план-факт" не до ссылок дочерних таблиц "тип+ год", а просто до "тип".
Т.е. у Вас 1 запись План ((XXX, 2016), 1000000), 2 записи "Факт" - ((XXX, 2016), 900 000 ) и ((ХХХ, 2017), 100 000), Вы группируете и план и факт по типу ХХХ, и Ваш отчет выглядит
Тип План Факт
ХХХ 10000001000000

И то, что реально в "факте" 2 оплаты с разными ссылками на дочернюю таблицу - не видно.


чуть выше говорил. может быть запланирована оплата Х в 2016, а оплачена с оплаты Y 2017. те "пишем Y, Х в уме". вот в этом случае и расползется
24 сен 17, 20:53    [20819279]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
sergq
Member

Откуда:
Сообщений: 575
те Y это именно наименование оплаты в 2017. а не ИД
24 сен 17, 20:54    [20819282]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
vmag
Member

Откуда: г. Одинцово
Сообщений: 2639
sergq,

Думаю там изначально кто-то накосячил со всей схемой бД...
Интересно бы было взглянуть на цельный кусок того что выше и чуть шире....
По идее:
Договор -> План Оплат...
Ну и вешай на План Оплат -> Оплаты (к одной строке плана может относиться несколько оплат),
а вся эта фигня Х,Y, год - логика чисто для интерфейса, которую всегда можно включить/выключить
показать/спрятать, но зашивать эту логику в схему БД, чтоб потом ни вздохнуть ни пукнуть...
24 сен 17, 21:12    [20819312]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 7579
sergq
те Y это именно наименование оплаты в 2017. а не ИД

Ну так а кто решает, что "тип Y за 2017 год" сойдет за "тип X за 2016 год" - суперпользователь(условно говоря, главбух)? И решает он это именно для одного конкретного договора, или "вообще"?
Мне кажется, тут с концептуальной моделью что-то не так, а проблемы в БД - это только следствие. Т.е. работа в первую очередь для бизнес-аналитика, а не разработчика БД.
24 сен 17, 21:19    [20819327]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
sergq
Member

Откуда:
Сообщений: 575
vmag,

Ну вот захотелось зашить в логику) чтоб ругалось если что не так ввожу. В принципе так и должно быть. Тк если не лочить факты оплаты по типам оплат, то и смысл слегка теряется и ошибок можно наклепать вагон.
Если совсем уж упростить описание задачи.
Надо иметь возможность создать план по одному типу оплаты, а оплатить по другому типу.
Но в отчете по выполнению оплаты чтоб все же считалось по , скажем так, начисленному типу оплаты.

Выглядит это примерно так.
Таблица периодов оплат. С указанием года.
К ней дочерняя. С указанием типа оплаты и суммы. Плановой. Для одного периода может быть несколько типов и сумм.

И есть еще пара таблиц. Которые связывают факты оплаты с конкретным периодом.
В первой таблице ссылка на оплачиваемый период. Тут фк на шапку планов оплат с учетом года. И ссылка на шапку документа оплаты.

И вторая дочерняя — помимо всего прочего ссылка на тело документа оплаты. В нем фигурирует тип. И зачем то сделал ссылку на конкретную строку плана оплаты. Ну видно чтоб знать какая оплата к какому плану оплаты в конкретном периоде соответствует.

Можт конечно и перемудрил.

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

Но когда считается баланс идет выборка из таблицы планов оплат. И потом подскребаются факты оплат в том числе по ид типа оплаты.
Ну и как результат в плане оплат нет типа , который есть в факте. Сумма факта не учитывается.

Согласен. Что то концептуально хромает
25 сен 17, 01:19    [20819561]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
sergq
Member

Откуда:
Сообщений: 575
sergq,

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

Тогда получится если года плана и факта не совпадают, то будет присутствовать значение типа оплаты из плана. Некое сопоставление—трансляция

И при запросе учитывать значение этого поля. Если есть— подменять и ид и текстовое представление типа оплаты из факта в выборке. И тогда будет все более менее красиво.
Хотя все равно кривовато)
25 сен 17, 01:42    [20819568]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 7579
sergq
Если совсем уж упростить описание задачи.
Надо иметь возможность создать план по одному типу оплаты, а оплатить по другому типу.
Но в отчете по выполнению оплаты чтоб все же считалось по , скажем так, начисленному типу оплаты.

Ну это-то вообще несложно - просто суммировать в отчете весь факт по договору, не разбивая ни на какие типы оплаты, а тип оплаты показывать из самого договора или плана.
Но тут имхо смысл графы "тип оплаты" в данном отчете теряется.
25 сен 17, 08:32    [20819662]     Ответить | Цитировать Сообщить модератору
 Re: Оплаты договоров  [new]
Cane Cat Fisher
Member

Откуда:
Сообщений: 1421
sergq
Надо иметь возможность создать план по одному типу оплаты, а оплатить по другому типу.


Если хочется - при вводе оплаты разрешай любой типы оплаты, не обязательно запланированный.
(Могут быть всякие промежуточные контроли, права, списки позволенных несоответствий и т.д, дело вкуса).


sergq
Но в отчете по выполнению оплаты чтоб все же считалось по , скажем так, начисленному типу оплаты.


Этот отчет пусть группируется по начисленному типу оплаты, не обращая внимания на фактический.
(Могут быть и другие отчеты).
25 сен 17, 11:00    [20819971]     Ответить | Цитировать Сообщить модератору
Все форумы / Проектирование БД Ответить