Как сделать списание товаров?
|
|
xaramamburu | Дата: Воскресенье, 25.09.2011, 12:33 | Сообщение # 1 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| Списание можно сделать аналогично расходу, для этого создайте в самой базе две таблицы, первая для хранения списка документов о списании, а вторая - список списываемых продуктов. По структуре таблицы должны быть аналогичны, соответствующим таблицам расхода. Создаете формы, аналогичные формам расхода, а в последнюю форму выбора продуктов для списания, подгружайте в место запроса остатки данные о приходе, также можете подсветить продукты с просроченным сроком хранения или отфильтровать их. Далее в датамодуле создаете запрос списание, аналогичный запросу расход и изменяете запрос остатки и остатки_копия с учетом запроса списание.
|
|
| |
Avatar | Дата: Понедельник, 17.10.2011, 08:21 | Сообщение # 2 |
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
| Здравствуйте. У меня такая проблема, после инвентаризации продуктов, возникло расхождение фактических остатков и остатков, которые выдает программа. Можно ли, в данной программе склад, предусмотреть редактирование остатков? И существуют ли другие способы получения и хранения остатков? Извините, если вопрос задал не в этой теме.
Andrey
|
|
| |
xaramamburu | Дата: Понедельник, 17.10.2011, 16:06 | Сообщение # 3 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| В той реализации базы склад, которая выложена в уроках на сайте, остатки не хранятся в базе, а вычисляются путем суммирования прихода минус суммированный расход. Поэтому, чтобы что-то исправить, нужно править приход или расход. Либо в базу добавить дополнительную таблицу поправок аналогичную таблице storage (склад), которую нужно учитывать при составлении запроса по остаткам. В эту таблицу нужно будет вносить номер продукта, количество на которое поправляете и цену за единицу, но цена за единицу должна вычисляться путем деления суммы цены поправки на количество поправки и вноситься в базу. Например остатки по мясу 5 кг на 1000р, а у вас на складе 4,5кг на 900р. значит вам необходимо занести поправку по мясу на -0,5кг на -100р. В результате цена за единицу будет равна -100/0,5=200р и эта цена должна быть введена в поле price таблицы поправок.
Существуют ли другие способы получения и хранения остатков?
Всего известно три способа получения и хранения остатков:
1. Остатки не хранятся в базе данных. При необходимости получения остатка на некоторую дату суммируются все движения продуктов, произошедшие ранее даты получения остатков. Из достоинств данного способа можно выделить: минимальный объем базы, простота получения остатков. Из недостатков: низкая скорость чтения остатков, при большом количестве движений продуктов и огромном количестве продуктов на складе система начинает сильно тормозить при вычислении остатков. Данный способ используется в программе склад, описанной в уроках на сайте.
2. Хранение движений продуктов и остатков продуктов. В каждом движении продуктов хранится также и остаток, который возникает по вычислениям после совершения данного движения продуктов. В результате остатки получаются чтением последней записи, дата которой максимально близка к дате получения остатков. Достоинства: высокая скорость чтения остатков. Недостатки: огромный объем базы данных т.к. мы сохраняем остатки после каждой операции над продуктами. Данный способ может использоваться на складах или магазинах с большой текучкой товара и где необходимо оперативно получать остатки о товаре.
3. Хранение движений продуктов и создания среза по остаткам на определенную дату Остатки хранятся обычно в отдельной таблице (хотя возможно и совмещение) и с заданной периодичностью - например, на начало каждого месяца. Остатки получаются путем чтения записи на начало периода и суммированием всех движений продуктов за период. Данный способ является чем то средним между первым и вторым. Данный способ используется в 1С.
|
|
| |
serega444 | Дата: Понедельник, 10.06.2013, 10:22 | Сообщение # 4 |
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
| Здравствуйте! А как узнать по какой цене товар нужно списать? Например: был куплен товар по одной цене, в другом месяце он же был куплен по другой цене и т.д. Как это отследить?
|
|
| |
xaramamburu | Дата: Понедельник, 10.06.2013, 11:17 | Сообщение # 5 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| serega444, В этой версии склада идет работа со средней ценой (одинаковый товар из разных партий складывается, находится общее количество и общая стоимость, а затем вычисляется средняя цена), поэтому и расход и списание идет по средней цене прихода. Если хотите работать с реальной ценой товара, нужно по другому организовывать расход. Т.е. в расходе хранить id прихода, id товара и количество и исходя из этого формировать остаток. Тогда вы будете знать сколько товара из какой партии было израсходовано и сколько там осталось, а цена товара в каждой партии будет оставаться раной цене прихода. ))))
|
|
| |
serega444 | Дата: Понедельник, 10.06.2013, 14:42 | Сообщение # 6 |
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
| xaramamburu, как сложно то( У вас случайно нету какой-нибудь простенькой базы для примера? Не могу найти в интернете примера организации партийного учета в бд...(
Сообщение отредактировал serega444 - Понедельник, 10.06.2013, 14:42 |
|
| |
xaramamburu | Дата: Понедельник, 10.06.2013, 22:05 | Сообщение # 7 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| serega444, Есть этот же самый пример, но с учетом реальной стоимости товара и учета партий.)))
|
|
| |
Джон | Дата: Четверг, 14.11.2013, 12:52 | Сообщение # 8 |
Рядовой
Группа: Пользователи
Сообщений: 1
Статус: Offline
| Можешь подсказать как сделать таблицу с колонками: "Наименование товара", "Код товара", "Ед.изм.", ""Остаток на начало мес", " Приход", "Расход", "Остаток на конец мес."???
|
|
| |
xaramamburu | Дата: Суббота, 16.11.2013, 13:15 | Сообщение # 9 |
Полковник
Группа: Администраторы
Сообщений: 240
Статус: Offline
| Ну вообще для таких целей нужно делать что то типа регистра движений товаров по месяцам плюс таблицу остатков на конец месяца по месяцам, чтоб каждый раз эти остатки не вычислять, ну а далее просто делается SQL запрос по этим таблицам. Ну а в нашем случае все это намного сложнее, но в любом случае все это делается с помощью SQL запросов. В данном случае вам надо сделать запрос на получение остатков на начало текущего месяца, затем запрос на получение прихода за текущий месяц, плюс запрос на получение расхода за текущий месяц, ну и соответственно все это запросом в одну таблицу. Все это наверное можно сделать одним большим сложным запросом или по частям как у меня в уроке происходит вычисление остатков.))))
|
|
| |
|