Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
ilshatkin Member Откуда: Сообщений: 177 |
Необходимо реализовать партионный учет. Есть идея сделать так: Будет таблица в которой будут помещаться партии при оприходовании
таким образом записалось бы два оприходования товара '76' по 10 шт и 20 шт с соответствующими себестоимостями. допустим выбран метод списания FIFO Вот например, будет продажа 15 штук и мне нужно в этой таблице убрать с оприходования '1' 10 штук и 5 с оприходования '2'. Логика думаю понятна. Каким образом можно прописать такую логику. Буду очень признателен за помощь в решении задачии. |
||||||||||||||||
16 май 14, 02:59 [16024683] Ответить | Цитировать Сообщить модератору |
Guf Member Откуда: Новосибирск Сообщений: 658 |
ilshatkin, А у Вас каждую сделку надо обрабатывать сразу? У меня есть реализация для одного пользователя пачки сделок за прошедший период. Если у Вас сделки обрабатываются в моменте, то придется крепко подумать, возникают всякие эффекты связанные с параллельным доступом. |
16 май 14, 07:20 [16024803] Ответить | Цитировать Сообщить модератору |
ilshatkin Member Откуда: Сообщений: 177 |
Да, хочу реализовать, чтобы обрабатывалось сразу. Да, есть риск коллизии, но учитывая что на данный момент и много вперед в будущем проводить операции (продажи, перемещения и т.п.) по одному складу будет один пользователь, то можно пока этим не заморачиваться, не супермаркет. Подскажите, пожалуйста, как реализовали Вы. |
||
16 май 14, 12:47 [16026699] Ответить | Цитировать Сообщить модератору |
ПрестарелыйЗаяц
Guest |
Не выдумывайте свой велосипед, посмотрите как это сделано в любой учетной системе. Все на самом деле просто. 1) Выбираете остатки на дату 2) Сортируете в порядке ФИФО/ЛИФО - дата создании партии. 3) Списываете. Механизмов реализации массу, равно как и проблем которые вы будете выгребать, вроде отрицательных остатков и прочее. |
16 май 14, 13:14 [16026950] Ответить | Цитировать Сообщить модератору |
ilshatkin Member Откуда: Сообщений: 177 |
отрицательных остатков у меня нет, потому что перед списанием проверяется наличие и при недостатке, предлагается оприходовать необходимое количество. вот мне как раз не понятно как списывать? в моем примере, чтобы алгоритм понял что надо всю первую партию и часть со второй. |
||
16 май 14, 14:08 [16027470] Ответить | Цитировать Сообщить модератору |
ПрестарелыйЗаяц
Guest |
Да как угодно, например: 1) вы можете получить рекордсет с выборкой и обходить рекордсет на клиенте списывая. 2) Можно пройти курсором в запросе формируя таблицу того, что можно списать. 3) Либо построить выборку отдельным запросом. Выбирайте какой вариант предпочитаете. |
16 май 14, 15:42 [16028112] Ответить | Цитировать Сообщить модератору |
ПрестарелыйЗаяц
Guest |
Вопрос вдогонку, не проще ли использовать готовый инструмент, тот же 1С ? |
16 май 14, 15:46 [16028134] Ответить | Цитировать Сообщить модератору |
ilshatkin Member Откуда: Сообщений: 177 |
ага, спасибо, сделал курсором |
||
17 май 14, 03:08 [16030387] Ответить | Цитировать Сообщить модератору |
ilshatkin Member Откуда: Сообщений: 177 |
у меня свой лунопарк с блэкджеком и дамами)) |
||
17 май 14, 03:09 [16030389] Ответить | Цитировать Сообщить модератору |
ssserge Member Откуда: Одесса Сообщений: 401 |
А вопрос, между прочим, очень актуальный. Лет 10 или болше назад работал в очень крупной фирме. И когда, например, человек покупал 1000 саморезов, я ему в накладной мог сделать с пяток позиций по одной отпускной цене;) ЗЫ. А сам "мышкой" ковырял, выбирая товар... Благо дело, тогда про ФИФО/ЛИФО никто не задумывался. ЗЫ. А реально ли сделать спиание товара "на автомане", учитиывая ФИФО/ЛИФО? Чтоб оператору не париться, пардон? |
17 май 14, 05:12 [16030498] Ответить | Цитировать Сообщить модератору |
ilshatkin Member Откуда: Сообщений: 177 |
Не очень понял Вашу мысль, но как бы в той ветке я как раз таки и советуюсь как на автомате делать списания, учитывая ФИФО/ЛИФО. Столкнулся со следующим тонким местом при партионном списывании при обрабатывании сделки сразу. Если проводить операцию задним числом, то если уже были проведены другие операции после даты проводимой операции, то списание партий будет не корректным в плане последовательности. Можно написать компенсирующую функцию, которая бы проверяла такой случай и перераскидывала списания, но как то пока не охота это делать. |
||
17 май 14, 22:29 [16031710] Ответить | Цитировать Сообщить модератору |
ilshatkin Member Откуда: Сообщений: 177 |
так же еще, при ведении себестоимости простым средне-арифметическим методом можно делать списание количества и любой себестоимости, то при партионным придется разделить списания на списание по количеству с соответствующей себестоимостью из партий и переоценка стоимости остатков |
17 май 14, 22:34 [16031715] Ответить | Цитировать Сообщить модератору |
ПрестарелыйЗаяц
Guest |
У последовательности есть признак актуальности. Когда списывают данные предвдудщим числом, точка актуальности перемещается на это место. Позже регламентным заданием раз в какой то период происходит пересписание с точки актуальности и дальше. Последний пост непонятно, что вы имеет ввиду под переоценкой стоимости остатков. Зачем вам переоценивать стоимость остатков, и как она влияет на партионный учет и списание по партиям? |
17 май 14, 23:31 [16031805] Ответить | Цитировать Сообщить модератору |
ilshatkin Member Откуда: Сообщений: 177 |
Имел в виду, что при средне-арифметическом расчете с/с у пользователя есть свобода списания количества с любой себестоимостью, тем самым проведя своего рода переоценку оставшегося товара. Но это не стандартная штука. |
||
19 май 14, 15:37 [16037408] Ответить | Цитировать Сообщить модератору |
ПрестарелыйЗаяц
Guest |
Среднеариметическая себестоимость это какая? Списание по скользящему среднему? Тогда почему меняется себестоимость и зачем переоценка? Списание должно идти не по произвольной а по скользящей средней на момент списания. |
21 май 14, 00:06 [16045614] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |