|
|
|
Вариации одного заказа.
|
|||
|---|---|---|---|
|
#18+
Доброго всем времени суток. Общая схема БД сводится к классической Orders - OrderDetails. Но есть одно НО. Заказы, в течении своего времени жизни могут изменяться, то есть в текущий, еще не закрытый заказ могут добавляться новые товары, изменяться существующие (например, на аналоги), удаляться из заказа. Соответственно, каждое изменение заказа должно быть отображено в дереве. Пример: Код: plaintext 1. 2. 3. 4. 5. Как лучше это организовать в БД? пока что идея тупого копирования исходного заказа с изменениями в виде нового заказа и таблица взаимосвязи заказов и подзаказов между собой. Что посоветуете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2008, 09:55 |
|
||
|
Вариации одного заказа.
|
|||
|---|---|---|---|
|
#18+
>> Исходный заказ |_ Изменение первое |_ >> Изменение второе А Вы уверены, что Вам нужно такое "ветвистое" дерево? Может оказаться удобнее, хранить заказ, а ниже - прстым списком изменения. Тогда это еще и хранить проще: "заказ №34" "добавлена позиция 98224" "2 штуки" "цена ..." "дата, время" Триггером легко заполняется само-собой... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2008, 13:38 |
|
||
|
Вариации одного заказа.
|
|||
|---|---|---|---|
|
#18+
Клиенту нужно именно такое ветвистое дерево. Поэтому и пытаюсь найти пусть оптимальной его реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2008, 14:31 |
|
||
|
Вариации одного заказа.
|
|||
|---|---|---|---|
|
#18+
>> Клиенту нужно именно такое ветвистое дерево. Погоди, так а зачем ветви-то хранить? Изменения - они же последовательно идут. После первого - второе, потом - третье... И между первым и вторым появиться не может ничего, или? Тогда моя структура и получается, просто отображается по-другому. Да и не очень ясно, как отображать 275-е изменение... :-) Или под изменением Вы понимаете некую групповую операцию (несколько действий)? Тогда не катит мое предложение... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2008, 14:44 |
|
||
|
Вариации одного заказа.
|
|||
|---|---|---|---|
|
#18+
Сделайте таблицу Заказы, а к ней таблицу ИзменениеЗаказа с полями ИдЗаказа, МоментИзменения, ИдТовара, КоличТовара и т.д. При просмотре изменений делайте запрос с группировкой по МоментИзменения, кстати и историю изменений отследите. Первые данные будут заноситься как с первым МоментомИзменения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2008, 17:07 |
|
||
|
Вариации одного заказа.
|
|||
|---|---|---|---|
|
#18+
Kirill Razuvaev Изменения, конечно, идут последовательно, и между вторым и третьим, например, появиться ничего не может =) Однако изменённый заказ, грубо говоря, "наследуется" от своего исходного, и в нём может быть проведено одновременно несколько изменений (например, в исходном заказе заменили 2 позиции на другие, одну удалили, еще одну добавили. и все наши действия сохраняем как изменение №1). Поэтому, видимо, ничего лучше тупого копирования полного заказа с учётом изменения сделать не удасться :-( RodionAT Подробнее можно вашу схему? Особенно учитывая, что товары в заказе могут не только меняться, но и удаляться из него, и добавляться новые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2008, 17:57 |
|
||
|
Вариации одного заказа.
|
|||
|---|---|---|---|
|
#18+
ну так и введите поле "Версия заказа". при учёте изменений вычисляйте новую версию. вуаля. дерева зачем ростить-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2008, 18:48 |
|
||
|
Вариации одного заказа.
|
|||
|---|---|---|---|
|
#18+
Если в какой то момент изменения нужно снять товар (часть товара) то введите строку с отрицательным количеством, а в поле Комментарий напишите "Товар снят по причине ...". Количество товара на конкретный момент будет определяться не из таблицы ИзмененияЗаказа, а из запроса к ней. Запрос сгруппировкой по КодТовара и суммированием по полю Количество. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2008, 08:30 |
|
||
|
Вариации одного заказа.
|
|||
|---|---|---|---|
|
#18+
NoNameRОбщая схема БД сводится к классической Orders - OrderDetails. Но есть одно НО. Заказы, в течении своего времени жизни могут изменяться Это никакое не НО. Иметь в системе заказы и не иметь возможности их корректировать, мягко говоря, не жизнеспособно. Так что именно по такой же схеме и реализуются корректировки заказов (заголовок-состав). NoNameRСоответственно, каждое изменение заказа должно быть отображено в дереве Я бы не был столь уверенным апологетом подобных "деревянных" конструкций. Чтобы собрать по заказу сводные данные (например, количество по каждой номенклатуре), необходимо, чтобы каждая корректировка заказа имела ссылку на исходный заказ, пусть даже формально она корректирует какую-то другую корректировку. В принципе, для расчета доступного остатка к исполнению заказа этого достаточно. У нас, например, нет связи между корректировками заказа. Если хотите - можете их сделать, но пользы от них немного, разве что блокировать разутверждение корректировки, если у нее есть дочерняя корректировка. Ну или Ваше любимое дерево нарисовать, если уж так все в него уперлось. Ибо заказ это такая полуабстрактная сущность, что в его корректировке может появиться вообще что угодно, если это допускается бизнесом. Итого, достаточно сделать связь (хоть ссылку в самой корректировке на заказ, хоть через дополнительную табличку - в рамках топика это не принципиально) между корректировкой заказа и родительским заказом, ее будет достаточно для расчета сводного заказа с учетом всех утвержденных корректировок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2008, 10:40 |
|
||
|
Вариации одного заказа.
|
|||
|---|---|---|---|
|
#18+
Клиенту нужно, чтобы в любой момент можно было просмотреть заказ, каким он был во время N-ной корректировки, если всего корректировок было M. В вашей схеме это можно реализовать, если я правильно её понял. Но теперь вопрос, который мне немного не ясен: какие именно данные хранить в корректировке? Только исправления? Тогда как в ней отобразить, что такая-то позиция была удалена из заказа? Как отражать изменение количества или цена на ту или иную позицию? Неужели хранить в каждой из позиций ссылку на неё саму в исходном заказе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2008, 17:34 |
|
||
|
Вариации одного заказа.
|
|||
|---|---|---|---|
|
#18+
NoNameRКлиенту нужно, чтобы в любой момент можно было просмотреть заказ, каким он был во время N-ной корректировки, если всего корректировок было M. В вашей схеме это можно реализовать, если я правильно её понял. Можно. Это вопрос того, какие коректировки учитываются, а какие нет. Можно отсекать их по номеру, по дате, по моменту утверждения и т.п. NoNameRНо теперь вопрос, который мне немного не ясен: какие именно данные хранить в корректировке? Только исправления? Да. NoNameRТогда как в ней отобразить, что такая-то позиция была удалена из заказа? Отрицательным количеством. NoNameRКак отражать изменение количества или цена на ту или иную позицию? Либо двумя строками (первая удаляет позицию заказа, вторая создает новую), либо дополнительным признаком, что строка замещает строку заказа полностью. NoNameRНеужели хранить в каждой из позиций ссылку на неё саму в исходном заказе? Да. Связь по строкам также обязана быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2008, 18:00 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35643116&tid=1543579]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
146ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 420ms |

| 0 / 0 |
