Я не совсем уверен, почему к товару прикреплен «период» вместо самого заказа.План № 1, кажется, подразумевает, что вы можете иметь открытый «заказ», который состоит из «деталей», которые могут быть добавлены и оплачены в течение нескольких лет.Это кажется очень неправильным и должно сделать бухгалтерский учет кошмаром.План № 2 на самом деле не намного лучше.
Вообще говоря, Заказ состоит из одной транзакции с датой покупки или контракта.Эта транзакция может включать несколько деталей, но все же это одна транзакция.Он представляет собой единое соглашение, заключенное в определенный момент времени между покупателем и продавцом.Если новые предметы приобретаются, создается новый заказ ... С учетом этого ни одна из таблиц не работает.
В отношении счетов-фактур.К заказу может быть прикреплен один или несколько счетов.Целью счетов-фактур является применение к ним платежей.Для небольших транзакций существует связь один к одному между счетами и заказами.
В более крупных транзакциях может быть несколько счетов, которые применяются к одному заказу.Например, если вы заключили договор на «3 простых платежа по 199,99 $ ...».В этом случае у вас будет 3 счета на 199,99 долларов США, каждый из которых будет применен к одному заказу на общую сумму 599,97 долларов США;и каждый срок платежа в разные периоды времени.
В таблице счетов должно быть как минимум идентификатор заказа, номер счета, дата счета, сумма счета, дата оплаты, идентификатор транзакции (для кредитной карты), номер чека (очевидно)), Поля «Полученная сумма» и «Дата получения».
Если вы хотите получить больше удовольствия от реального мира, то у вас будет дополнительно таблица платежей, в которой будет храниться номер счета-фактуры, полученная сумма (или возвращенная сумма),Дата получения, идентификатор транзакции и номер чека.Если вы пойдете по этому пути, удалите эти поля из таблицы счетов-фактур.
Теперь, если вам нужно поддерживать повторяющиеся платежи (например, хостинг в Интернете), тогда у вас будет другая таблица под названием «Контракты»."и" ContractDetails "или что-то подобное.В этих таблицах будут храниться данные контракта (аналогично заказам и деталям заказа, но с указанием даты начала, даты окончания и повторяющегося периода).При достижении следующего расчетного периода данные будут использоваться для создания заказа и создания соответствующих счетов-фактур.