Вопрос

Если счета могут быть аннулированы, должны ли они использоваться в качестве котировок?

у меня есть Invoices таблицы, созданные из инвентаря, связанного с Job или Order. Отказ Я мог бы иметь Quotes Таблица как на полпути, между инвентаризом и счетами, но ощущение, что у меня будет дублирующиеся структуры данных и логику, просто чтобы обрабатывать «это цитата?» кусочек.

С перспективы бизнеса, цитаты являются Разное из счетов: цитата отправляется до предпринимательства, а счет-фактура отправляется после того, как он будет завершен, и оплата должна быть предоставлена, но как представлять это в моем репозитории и модели.

  • Что такое элегантный способ хранить и управлять цитатами и счетами в базе данных?

Редактировать: указано Job === Order Для этого конкретного экземпляра.

Это было полезно?

Решение

Есть 3 подхода:

  1. Храните счета и цитаты в отдельных таблицах.

    Это хороший дизайн, если счета-фактуры и цитаты имеют несколько полей в дублировании (в противном случае, используйте опцию № 3 с 3 таблицами), и если между ними есть 1-много или многие отношения между ними (для 1-1, используют опцию # 2 ).

    Это также хороший выбор, если общепринято, что «общая» информация между двумя может фактически мутировать, когда цитата становится счетным фактом (хотя некоторые из этих мутаций должны быть правильно обрабатываться с отдельными полями / таблицами, такими как прикладные скидки и т. Д. .).

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

  2. Храните их в том же таблице, с дополнительным флагом «Счет или цитата» и любые дополнительные поля с обоих хранимых. Это можно сделать с помощью счетов, так и цитаты в различных строках, либо с ними совместные строки (с флагом, имеющим «оба» ценность).

    Последний (тот же ряд может быть как счетом, так и цитатой) - хороший выбор Если они сопоставлены с 1 по 1, И есть несколько полей, которые отличают два.

    Первые (отдельные строки для счетов и цитат) не имеют большого хорошего дизайна в целом и лучше сделать с вариантами # 3 или # 1.

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

    Это хороший выбор, если счеты и цитаты сопоставлены 1-1, или если они 1-много, но каждый из многих счетов имеет ровно одинаковые значения поля для того, что являются общими полями. В противном случае используйте # 1.

    Может быть сделано небольшое изменение этой опции, когда несколько кавычек превращаются в один счет. Это добавляет 4-й стол, которая представляет собой сопоставление между набором кавычек и выздоравливая (или набор счетов, если он получает это сложное) для них. Опять же, предположение здесь заключается в том, что существует значительная часть общей информации между всеми цитатами и счетам, связанными / объединенными вместе, в противном случае просто пойти с # 1.

Другие советы

Цитаты более аналогичны приказам. Я видел несколько дистрибутивных / розничных систем с таблицей заказа, который имеет логический флаг имени что-то вроде Isquote. Это может показаться простым, так как он делает его тривиальным, чтобы превратить цитату в приказ. Мне никогда не понравилось, потому что заказы, которые выходят из кавычек, не всегда точно так же, как указаны. В результате как системы теряют информацию, которые могут иметь некоторое использование (то есть отчет, который сравнивает цитаты на заказы). Поэтому я предпочитаю системы, где цитата и таблицы заказов примерно одинаковы, но отдельно. В системах распределения это часто приводит к таблицам, подобным подобным зарванию, упорядоченностью (относится к таблице товара / инвентаризации), QUOTEHELDER и COMPLEY. У вас также могут быть таблица для моделирования отношений, в которых одна цитата может отображаться на несколько заказов.

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

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

Одноместный продукт, а услуги игнорируются, для простоты.

А. Цитата продаж это предложение Продать хорошее для цены во время окна времени (дата диапазона) на другую сторону. Этот актив не нужно еще не существовать. Вы можете процитировать спецификацию актива (хорошее).

Цитата должна истекать в какой-то момент, и может быть или не может быть принято до истечения срока действия.

А. заказ клиента это обязательство Продать хорошее по цене на свидание другую сторону. Это может быть создано из принятой цитаты.

Порядок или цитата могут иметь условия оплаты, такие как «Вы можете оплатить нам через 30 дней после доставки».

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

Заказ на продажу приводит к приобретение (взять из инвентаря, сделать или купить) физического актива, а затем отгрузка физического актива, который может или не может закончиться доставкой. Иногда клиент «позвонит» на поставщиком, чтобы взять актив.

Вообще говоря, актив должен быть переведен прежде чем вы сможете считать строку заказа как доход (Это зависит от условий доставки, может быть при отгрузке или доставке или между ними).

Заказ на продажу может быть отменил (Например, некоторые отрасли имеют периоды охлаждения).

А. счет-фактура продажи это запрос на оплату для заказанных продуктов. Это может произойти до доставки, при доставке или после доставки или не происходит вообще (например, так, как если бы в очереди в McDonald). Заказ может иметь один или несколько счетов, а счет может быть для нескольких заказов.

Счет, надеюсь, приводит к одному или нескольким платежи, которые применяемый чтобы учетная запись. Отказ Оплата часто приводит к одному или нескольким поступления платежа. Отказ Оплата не обязательно такая же, как доход, если использование учета начисления.

Я бы порекомендовал быть максимально гибким. Используйте следующие таблицы

Таблица работы, таблица счета, таблица цитаты

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

В последней системе я работал над единственным разницей между цитатами и счетами (с точки зрения БД) был флагом на таблице, указав, была ли указана цитата Клиентом (в какой момент был создан другое утверждение со всеми информация, за исключением того, что это был счет вместо цитаты)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top