Начисление процентов на остаток - PullRequest
1 голос
/ 28 апреля 2019

У меня есть 3 таблицы счетов-фактур, платежей и процентных ставок. Для простоты я представляю каждую из таблиц следующим образом.

Таблица счетов-фактур имеет следующие столбцы (InvNum является первичным ключом)

    +--------------+-------------+---------------+
    | InvNum       | InvDate     |  InvAmt       |
    +--------------+-------------+---------------+
    |  123         |   2017-03-09|   15000       |
    |  456         |   2017-01-13|   20000       |
    +--------------+-------------+---------------+

Таблица платежей выглядит следующим образом (InvNum в таблице платежей - это внешний ключ, который ссылается на таблицу счетов-фактур выше

 +--------------+------------+----------+
    | payment_date | InvNum     |  amount  |
    +--------------+------------+----------+
    | 2017-08-10   |  123       |   5000   |
    | 2017-08-15   |  456       |   3000   |
    | 2017-09-15   |  123       |   3000   |
    | 2017-10-11   |  456       |   4000   |
    | 2017-10-16   |  123       |   3500   |
    | 2017-11-10   |  123       |   3000   |
    | 2017-11-15   |  456       |   2500   |
    +--------------+------------+----------+

My InterestRate выглядит примерно так

    +--------------+-------+
    | ResetDate  |  IntRate|
    +--------------+--------+
    |  2016-01-01|   10     |
    |  2017-06-08|   10.25  |
    |  2017-11-03|   10.67  |
    |  2018-05-03|   10.83  |
    |  2018-07-29|   10.72  |
    |  2019-01-01|   10.67  |
    +------------+----------+

Мне нужно рассчитать проценты по каждому Счету после рассмотрения каждого платежа и окончательного остатка по счету (в случае, если он не был полностью оплачен). Финальный стол должен выглядеть примерно так

  InvNum    IntFrom    IntTo      Amount  IntRate  Interest  Payment  Balance
   123     2017-03-09 2017-06-07  15000   10         xxx      0        15000
   123     2017-06-08 2017-08-10  15000   10.25      yyy      5000     10000
   123     2017-08-11 2017-09-15  10000   10.25      zzz      3000      7000
   123     2017-09-16 2017-10-16  7000    10.25      aaa      3500      3500
   123     2017-10-17 2017-11-02  3500    10.67      bbb      0         3500
   123     2017-11-03 2017-11-15  3500    10.67      ccc      2500      1000
   123     2017-11-16 2018-05-02  1000    10.67      ddd      0         1000
   123     2018-05-03 2018-07-28  1000    10.83      eee      0         1000
   123     2018-07-29 2018-12-31  1000    10.72      fff      0         1000
   123     2019-01-01  (today)    1000    10.67      ggg      0         1000

Я не показал результаты инв # 456. Но желаемое решение должно сгруппировать каждый из счетов в таблице счетов.

Таким образом, в действительности при расчете процентов учитываются платежи по каждому счету (перечислены в таблице платежей), а также изменяющиеся процентные ставки (перечислены в таблице InterestRate). Не менее важным является тот факт, что проценты на остаток средств по каждому счету (1000 для инв. № 123) должны рассчитываться до даты выполнения запроса.

Одна из проблем, с которой я также сталкиваюсь, заключается в том, как я могу записать вышеупомянутые результаты в таблицу. Будет ли это означать удаление и повторное создание таблицы каждый раз, когда вы запускаете запрос (поскольку каждый раз, когда дата меняет сумму процентов на остаток, будет происходить изменение). Таким образом, если только процент по балансу на счет-фактуру не может быть обновлен, это (должно?) Обязательно означает, что таблицу необходимо удалить и заново создать. В качестве альтернативы, результаты должны просматриваться с помощью запроса просмотра.

Я надеюсь, что смог сформулировать свою проблему удовлетворительно.

Большое спасибо за то, что уделили мне время и внимание

...