|
Хранение в БД проектов накладных
|
|||
---|---|---|---|
#18+
Добрый день всем! Хочу спросить совета в следующей ситуации: В БД (складской учет) в деталях накладных хранятся Номер докмента (ПК) Код товара (ПК) Партия (ПК) Кол-во Вопрос: Как хранить ПРОЕКТЫ накладных - в них нет понятия "Партия", т.к. он вычисляется в момент акцепта, исходя из актуальных остатков по партиям Сейчас ( в старой структуре) хранится с указанием "партия" =1, хотя такой партии может и не быть -> нарушение DRI. Хочется этого избежать, но не создавать отдельную таблицу для ПРОЕКТОВ с другой структурой. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 17:16 |
|
Хранение в БД проектов накладных
|
|||
---|---|---|---|
#18+
А что такое ПРОЕКТ накладной? -- Tygra's -- ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 18:00 |
|
Хранение в БД проектов накладных
|
|||
---|---|---|---|
#18+
Значит надо завести такое понятие как "состояние накладной". В состоянии "Проект" - это просто набор товаров, ни к чему ни привязанных. Потом какой-нибудь алгоритм переводит накладную в состояние "Обработано" (например) - и в этот момент товар завязывается на партию, "исходя из актуальных остатков по партиям " ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 18:08 |
|
Хранение в БД проектов накладных
|
|||
---|---|---|---|
#18+
Рекомендую вам создать таблицу "Счета", а уже на её основании формировать накладную, "исходя из актуальных остатков по партиям " ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2003, 18:38 |
|
Хранение в БД проектов накладных
|
|||
---|---|---|---|
#18+
2tygra: ПРОЕКТ - это набор кодов товаров и количества, ПЛАНИРУЕМЫХ к проведению в дальнейшем. т.о. нет партий и соответственно других атрибутов, подвязанных на конкретную партию (цена, усл. поставки, поставщик и тд) 2AlexB: Разумеется, такое понятие "статус" присутствует. Остновной вопрос в другом: в проекте НЕТ партий - а я хочу сделать FK (код товара+партия) на таблицу всевозможных партий (справочник). 2Андрей Бабенко: Я несовсем понимаю зачем мне "счета" в складском учете. Если вы имеете в виду "виды движения" (типа приход от поставщика, возврат поставщику, списание, корректировка, возврат от покупателя и т.д.) то они , конечно же, есть. Или вы предлагаете использовать для Проектов отдельные коды движения? Но это не решит поставленную проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2003, 11:47 |
|
Хранение в БД проектов накладных
|
|||
---|---|---|---|
#18+
Как правило документу отгрузки (накладной) предшествует что-то - договор, спецификация, счёт и т.п. на этом этапе часто бывает, что товара какого-то нет.. или нехватает... У вас эта ситуация - "проект накладной", что по сути является счетом... Вот и храните в это счетах, или назовите эту таблицу как вам больше нравится... Как раз нормальный подход, решающий проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2003, 12:13 |
|
Хранение в БД проектов накладных
|
|||
---|---|---|---|
#18+
2 АндрейБабенко: Т.е. Вы предлагаете отдельную таблицу для проектов накладных? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2003, 12:33 |
|
Хранение в БД проектов накладных
|
|||
---|---|---|---|
#18+
Да ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2003, 12:47 |
|
Хранение в БД проектов накладных
|
|||
---|---|---|---|
#18+
Алекс В.Остновной вопрос в другом: в проекте НЕТ партий - а я хочу сделать FK (код товара+партия) на таблицу всевозможных партий (справочник). Я может что-то не понимаю, но если партия это FK - то почему тогда пока накладная это ПРОЕКТ, не держать это поле в состоянии NULL? В этом случае никаких противоречий нет и потом просто останется заполнить поле и все дела ... Andrey ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2003, 16:49 |
|
Хранение в БД проектов накладных
|
|||
---|---|---|---|
#18+
Я может что-то не понимаю, но если партия это FK - то почему тогда пока накладная это ПРОЕКТ, не держать это поле в состоянии NULL? В этом случае никаких противоречий нет и потом просто останется заполнить поле и все дела ... К сожалению, в реальной жизни может оказаться, что не получится выдать весь заказаный товар одной партии... т.е. заказали 100шт. Есть 60шт. партии А и 40шт. партии B... а ещё бывает частичная выдача товара... в предложеном вами варианте придется поболе изголяться, чем иметь отдельну таблицу в которой хранить эти "проекты"... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2003, 17:13 |
|
Хранение в БД проектов накладных
|
|||
---|---|---|---|
#18+
2 Andrey: Спасибо за идею, я об этом не подумал, тк вначале планировал составной ПК, включающий код товара+партия. Если отказаться от ПК, то это возможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2003, 17:20 |
|
Хранение в БД проектов накладных
|
|||
---|---|---|---|
#18+
2 АндрейБабенко: Вы правы, расщепление на партии и будет происходить в 50% случаев при измении статуса проект-> акцепт ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2003, 17:21 |
|
Хранение в БД проектов накладных
|
|||
---|---|---|---|
#18+
есть пример решения задачи следующим образом 1. Таблица Документов 2. Таблица строк документов Здесь может быть сохранен любой документ в любом статусе...например счета или накладные.. вообще - любые типы документов... 3. Есть таблица важная очень - таблица перекрестных ссылок. Если какой либо документ создается путем (частичного использования) из другого - то: эта таблица хранит в себе: 1. Ключ 2. Дата дежурная 3. Тип записи 3. ИД документа основания (источника) Тип документа основания (источника) Номер строки документа основания (источника) Дата документа основания (источника) 4. ИД документа причины (приемника) Тип документа причины (приемника) Номер строки документа причины (приемника) Дата документа причины (приемника) 5 Код задачи (операции) 6. ИД объекта (типа ИД товара, например) Тип объекта (типа разное можно...что угодно... в итоге) 7 Кол-во объекта -- позволяет все узнать "потом" ...сколько "взяли" с проекта...типа... 8 Код единицы измерения объекта 9. Коэф_пересчета единицы к базовой ...в момент учета (проводки)!! Когда мы, например создаем сначала - версии накладных (счетов) то они хранятся в своей базе. Но, когда мы из счета создаем накладную - то в таблицу перекрестных ссылок бы сбрасываем "протокол" - сколько и когда взяли ( и на что). В этой таблице есть избыточная инфо: Дата документа основания (источника) Дата документа причины (приемника) Это сделано для ускорения выборки...уже потом...как то для ршения задачи типа ..узнать сумму Реализации товара....из оплат счетов....когда в отчет попадут данные с учетом Даты основания (счета) и Даты Приемника (платежа)... С такой таблицей надо работать осторожно, следить за "коррективами" задним числом...и если что не так - то грубо удалять в ней строки и снова прописывать.. Так же, можно использовать прямо из нее - ключ - ИД объекта...для быстрого извлечения инфо типа ....сколько отгружено всего если сначала были "проекты"... Но надо понимать, что при базе в миллионы строк - в таком табло будут 10-ки миллионов строк.... Такая табло оказалась удобной для хранения оплат счетов...где в разделе Приемник - просто прописываются ИД платежки....в разделе Онование - ИД строки накладной.....что позволяет потом видеть дебиторов-кредиторов с точностью до товара!!.... А если платежка - ВзаимоЗачет - то это тоже здесь все "идеально" хранится. При записи в это табло - хорошо иметь триггеры...что в доках "пропишут" "чисто итоги"....для быстрого ответа на вопросы о "состоянии на текущий момент"... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2003, 14:09 |
|
|
start [/forum/topic.php?fid=32&fpage=175&tid=1546719]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
72ms |
get topic data: |
20ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
others: | 255ms |
total: | 470ms |
0 / 0 |