|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
Здравствуйте, Вот возник вопрос. У меня есть БД на access. Есть 3 таблицы 1.Поступление Код товара, количество, цена, дата, код склада 2.Списание Код товара, количество,дата, код склада 3.Перемещение со склада на другие склады Код товара, количество,дата, код склада отправителя, код склада получателя Дело в том, что мне нужно знать состояние склада по цене о том количестве и цене которая осталась. Не просто по цене товара а по цене, и количестве что осталась на складе, так как цена меняется. Количество меняется по списанию и поступлению в кубометрах и не в ровном количестве так как ведётся учёт кубометров брёвен и досок. Мне нужна подсказка как организовать модель либо написать код на VB с пересчётом в дополнительную таблицу. Какие идеи братцы? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2020, 13:44 |
|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
IRagnarok, цена товара на складе - средневзвешенная, цена товара по приходу LIFO. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2020, 15:09 |
|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
Спасибо, про ЛИФО прочитал. А как это реализуется в Access? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2020, 16:02 |
|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
IRagnarok, стоимость остатков сложили с приходом и поделили все на общее количество. а реализуется это сложнее чем обычно. поскольку нужно иметь ввиду 2 цены - для прибыли цена на складе, для прогнозов и пр. цена последнего прихода. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2020, 21:48 |
|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
Первым пришел - первым ушел - это FIFO (first in, first out), а не LIFO... Хотя бы Вики почитали... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2020, 00:45 |
|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
d7i, Действительно. На самом деле реализация очень сложна запросами и я видел что кто то использует Tsql. Я решил написать vb код который перенесёт данные в дополнительную хранимую таблицу и я смогу узнать цену по остаткам, но что на конкретную дату пока не придумал как реализовать таблицу, в которую будет вносить данные мой код. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2020, 06:08 |
|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
IRagnarok, Сталкивался с подобной задачей в 2010 в СУБД Оракл. Год имеет значение в том смысле, что было тогда в Оракле, может теперь есть и в Аксцессе. Там радиоактивные отходы помещались в контейнеры и удалялись. Они там разного типа. И заказчик хотел иметь возможность знать состояние на контейнера на дату. Тут как бы межстрочные вычисления (навигация), которые не предполагает реляционная модель данных. Поэтому чтобы остаться в рамках SQL нужны какие-то дополнительные его расширения. У Оракла уже тогда были аналитические ф-ии. Но не просто аналитические ф-ии, а возможность создавать пользовательские. Эти ф-ии как бы реализовывают некоторые возможности межстрочных вычислений, но стандартных для этой задача не хватило. Я даже назвал ф-ю типа POPUP (точно уже не помню). Т.е. как вариант, посмотреть в последних версиях аксцесса есть ли аналитические ф-ии вообще, и поддерживаются ли пользовательские. Или еще что-то эдакое в плане запросов в Аксцессе. Например, в Аксцессе в QBE было, например, эдакое - запросы, возвращающие кросс таблицы. Может и еще что-то налабали. Иначе, скорее всего, придется переходить к решениям, выходящим за рамки SQL, QBE: наверное, получать Рекордсеты в VB(Васик) и ходить в циклах там между строками. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2020, 10:07 |
|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
Не надо городить огороды с пользовательскими функциями. Всё равно всё не так просто... Хотя, метод FIFO легко организуется средствами SQL. Добавьте таблицу склада (остатков). Там, кроме прочих, должны быть поля цены прихода (закупки), количества, номер партии (по сути, порядковый номер), ссылка на документ прихода и т.д. (что понадобиться по логике). При приходе, если есть остатки того же предмета, всё равно создается новая запись и её номер партии увеличивается на 1 от максимального по остаткам этого предмета. Если остатков нет, номер партии равен 1. При расходе выбирается предмет с меньшим номером партии (элементарной сортировкой остатков по предмету). Если по текущей строке остатков недостаточно, также выбирается следующая строка. И т.д. и т.п. Естественно, при расходе нужные строки склада модифицируюся (уменьшается количество). При достижении нулевого количества, строка удаляется. Это всё элементарная база построения попредметного учета с документопотоком. Для начала достаточно таблиц: - предметы (объекты) - склад - заголовки документов - строки документов - справочники (коды документов, субъекты и т.п.) К субъектам относятся места хранения, клиенты, поставщики и т.п. Все документы - приходные, расходные, вспомогательные (перемещения и т.п.) храняться в указанных таблицах. Цепочки последовательности документов (история документопотока) организуются через ссылку на предыдущий документ в заголовке документа. Строки документов не дублируюся, а привязаны к заголовку последнего документа. Это, очень коротко, основные вехи... просто небольшой толчок для осмысления задачи... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2020, 12:59 |
|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
d7i, Вроде, там на дату: надо ответь сколько оставалось в любой момент в прошлом. Т.е. тогда, вроде, надо хранить историю состояний склада. И поддерживать. Если я правильно понял. В моем случае пользовательская функция оказалась самым "ленивым" решением. Ведь информация уже есть в схеме. Остается ее извлечь как-то. Впрочем, написал просто про возможный вариант. Не настаиваю. Проектировщик часто стоит перед альтернативами. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2020, 13:38 |
|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
d7i, народ использует FIFO ,партионный учет-но это уровень курсовиков, здесь же речь как про разработку - а это по другому. в бизнесе используется последняя цена прихода - а это "Last in First Out" - LIFO. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2020, 13:51 |
|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
aleckoв бизнесе используется последняя цена прихода - а это "Last in First Out" - LIFO. А текущее налоговое законодательство это разрешает? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2020, 14:09 |
|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
alecko, Думаю FIFO больше подойдёт, так как у меня пришла доска по одной цене в кубометрах(посчитаем как количество) А потом пришла такая же по другой цене в кубометрах. На складе даже при одинаковых параметрах это будет 2 разных доски с 2 разными ценами в остатках, а при продаже/использовании будет списываться первая по приходу доска. Допустим: Опустим сейчас дату Приход: Доска 2.5 кубометра 100 руб Доска 3 кубометра 150 руб Продажа: Доска 4 кубометра = ? (тут уже идёт 2.5 доски за 100 руб и 1.5 доски за 150 руб) Количество то нечётное. Я решил написать код который будет генерировать подтаблицу к продажам и разбивать остатки партий прихода до нужного количества. Использую Vb скрипт. Даже если это ЛЕНИВОЕ решение то поверьте, организовав всё через вычисляемые таблицы они долго не прослужат, так как информации очень много и МОЖНО найти решение, но потом база будет тупо виснуть от такого "Велосипеда" ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2020, 14:24 |
|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
IRagnarok, 1. Таблица склада позволяет легко получать текущее состояние (остатки) предметов. 2. Прошлые состояния (на любую дату) получают алгебраическим суммированием текущих остатков и истории движения (документы и их строки). Приход вычитается, расход прибавляется. Естественно, что в заголовках документов (движение) есть дата. Если у Вас боевая, а не учебная задача, то указанная Вами структура, мягко говоря, нерациональна. У Вас три указанные таблицы (см. первое сообщение) являются, по сути, строками документов. Их можно объединить в одну таблицу. Но нужна ещё таблица заголовков, номенклатура (предметы), склад, справочные таблицы (как я и писал). Тогда и всякие FIFO легко строить. И не надо никаких вычисляемых таблиц. Всё делается хранимыми процедурами и довольно быстро. P.S. Рассждения здесь о том, что бизнесу нужна только последняя цена закупки, мне вообще кажутся какой-то дичью... Для оперативного расчета цены продажи нужна средневзвешенная цена закупки. Все более-менее серьезные системы учета (продажи) работают по средневзвешенной цене. Не в обиду было сказано... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2020, 14:52 |
|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov А текущее налоговое законодательство это разрешает? для текущего налогового законодательства есть средневзвешенная цена остатков, LIFO исключительно для зарабатывания денег-счета, кп, прогнозы изменения цен и пр. IRagnarok, т.е доски из одной партии, цена которых привязана скажем к баксу, купленные в разное время это 2 разных доски? что-то здесь не то. Это пока цветочки, Вы ещё доберетесь до момента, когда склад получателя вернет часть продукции отправителю. тем не менее успехов в разработке. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2020, 17:15 |
|
принцип склада первым пришёл, первым ушёл
|
|||
---|---|---|---|
#18+
авторЕсть 3 таблицы 1.Поступление Код товара, количество, цена, дата, код склада 2.Списание Код товара, количество,дата, код склада 3.Перемещение со склада на другие склады Код товара, количество,дата, код склада отправителя, код склада получателя это все 1 таблица ID операции, Тип Операции, Номер_Накладной, Дата, пользователь а уже в таблице накладных у вас и цена и код склада Для каждого изменения цены делайте таблицу переоценки ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2020, 22:11 |
|
|
start [/forum/topic.php?fid=32&msg=39948740&tid=1539859]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 18ms |
total: | 153ms |
0 / 0 |