Счет-фактура из нескольких заказов?

#php #mysql #database #database-design #data-structures

#php #mysql #База данных #база данных-дизайн #структуры данных

Вопрос:

Мне нужен способ создавать счет-фактуру из нескольких заказов каждый месяц?

В таблице tbl_order у меня есть список заказов от клиента.

 tbl_order table

OrderID (PK)
ShopID (FK)
CustomerID (FK)
Statu
Total
OrderDate
  

Допустим, я хочу создать счет-фактуру за период: с 1 по 31 мая с tbl_order.ShopID = 2

(Оттуда я могу отправить счет-фактуру в магазин / компанию о комиссионных, которые они мне должны, и т.д. Когда я получаю с них комиссионные — мне нужен способ обновить статус счета)

В счете-фактуре должен быть номер счета-фактуры и дата счета-фактуры, в счете-фактуре будет несколько идентификаторов заказа.

Нужно ли мне создавать таблицу счетов, если да, то каким должен быть дизайн таблицы?

Ответ №1:

Вам понадобятся 2 таблицы.

Таблица счетов.

 InvoiceID (PK)
InvoiceDate
InvoicePrice
InvoiceBtw
ect. etc.
  

Таблица ссылок между заказами и счетами-фактурами.
Таким образом, вы можете отслеживать, какой заказ обрабатывается в каком счете.

 InvoiceID (FK to tbl_invoices.InvoiceID)
OrderID (FK to tbl_orders.OrderID)
  

Комментарии:

1. В таблице счетов должно быть поле OrderID (K)? Значит, в таблице счетов-фактур может быть несколько строк OrderID с одинаковым номером счета-фактуры?

2. В таблице счетов-фактур не должно быть информации о заказе, поскольку счет-фактура имеет отношение «один к нескольким» к заказам. Для этого используется tbl_invoiceorders, который является второй таблицей.

3. @user622378: OrderId Во 2-й таблице для этого достаточно. Также нет необходимости иметь его в Invoice таблице.

4. Нет, это не так, информация уже доступна в таблице tbl_invoiceorders , поэтому сохранение ее также в таблице заказов приведет к дублированию данных в вашей базе данных.

5. Да — это был бы отличный выбор. Например, вы могли бы генерировать счета за последние месяцы в первый понедельник каждого месяца.

Ответ №2:

Да, вам потребуется таблица счетов.

Структура может быть:

 InvId (Autonumber) 
InvNumber (varchar (10))
InvOrderId (int(11))
InvStatus (int(11))
InvDateCreated (DateTime)
InvDateModified (DateTime)
  

Надеюсь, это поможет

Комментарии:

1. Спасибо. Так, например, InvNumber будет одним и тем же номером с несколькими строками с разным номером InvOrderId? (1, 123, 4, 0, ДАТА, DATE) (2, 123, 5, 0, ДАТА, DATE) (3, 123, 6, 0, ДАТА, DATE)

2. Да, но не чувствуйте себя ограниченным только цифрами в накладной.

3. Я не вижу, где InvOrderId это могло бы помочь. Счет-фактура будет ссылаться на несколько заказов. Что можно было бы добавить, так это Year-Month (где 2011-05 будет храниться) или ReferenceDateStart и ReferencesDateEnd где будут храниться 2011-05-01 и 2011-05-31 .

4. Также потребуется поле ShopId , чтобы мы знали, какому магазину был выставлен счет.

5. Допустим, счет оплачен (или завершен), поэтому я должен обновлять каждую строку InvStatus одним и тем же номером InvNumber?