Воскресенье, 22.10.2017, 05:33
Приветствую Вас Гость

Не ошибается тот, кто ничего не делает.
Но и ничего не делать - ошибка.

Эмиль Кроткий

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Delphi » Форум по программе Склад » Как сделать списание товаров? (Реализации модуля списания товара.)
Как сделать списание товаров?
xaramamburuДата: Воскресенье, 25.09.2011, 12:33 | Сообщение # 1
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Списание можно сделать аналогично расходу, для этого создайте в самой базе две таблицы, первая для хранения списка документов о списании, а вторая - список списываемых продуктов. По структуре таблицы должны быть аналогичны, соответствующим таблицам расхода. Создаете формы, аналогичные формам расхода, а в последнюю форму выбора продуктов для списания, подгружайте в место запроса остатки данные о приходе, также
можете подсветить продукты с просроченным сроком хранения или отфильтровать их. Далее в датамодуле создаете запрос списание, аналогичный запросу расход и изменяете запрос остатки и остатки_копия с учетом запроса списание.
 
AvatarДата: Понедельник, 17.10.2011, 08:21 | Сообщение # 2
Рядовой
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Offline
Здравствуйте. У меня такая проблема, после инвентаризации продуктов, возникло расхождение фактических остатков и остатков, которые выдает программа. Можно ли, в данной программе склад, предусмотреть редактирование остатков? И существуют ли другие способы получения и хранения остатков? Извините, если вопрос задал не в этой теме.

Andrey
 
xaramamburuДата: Понедельник, 17.10.2011, 16:06 | Сообщение # 3
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: 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
Репутация: 0
Статус: Offline
Здравствуйте! А как узнать по какой цене товар нужно списать?  
Например: был куплен товар по одной цене, в другом месяце он же был куплен по другой цене и т.д. Как это отследить?
 
xaramamburuДата: Понедельник, 10.06.2013, 11:17 | Сообщение # 5
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
serega444,
В этой версии склада идет работа со средней ценой (одинаковый товар из разных партий складывается, находится общее количество и общая стоимость, а затем вычисляется средняя цена), поэтому и расход и списание идет по средней цене прихода. Если хотите работать с реальной ценой товара, нужно по другому организовывать расход. Т.е. в расходе хранить id прихода, id  товара и количество и исходя из этого формировать остаток. Тогда вы будете знать сколько товара из какой партии было израсходовано и сколько там осталось, а цена товара в каждой партии будет оставаться раной цене прихода. ))))
 
serega444Дата: Понедельник, 10.06.2013, 14:42 | Сообщение # 6
Рядовой
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Offline
xaramamburu, как сложно то( У вас случайно нету какой-нибудь простенькой базы для примера? Не могу найти в интернете примера организации партийного учета в бд...(

Сообщение отредактировал serega444 - Понедельник, 10.06.2013, 14:42
 
xaramamburuДата: Понедельник, 10.06.2013, 22:05 | Сообщение # 7
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
serega444
Есть этот же самый пример, но с учетом реальной стоимости товара и учета партий.)))
 
ДжонДата: Четверг, 14.11.2013, 12:52 | Сообщение # 8
Рядовой
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
Можешь подсказать как сделать таблицу с колонками: 
"Наименование товара", "Код товара", "Ед.изм.", ""Остаток на начало мес", " Приход", "Расход", "Остаток на конец мес."???
 
xaramamburuДата: Суббота, 16.11.2013, 13:15 | Сообщение # 9
Полковник
Группа: Администраторы
Сообщений: 240
Репутация: 26
Статус: Offline
Ну вообще для таких целей нужно делать что то типа регистра движений товаров по месяцам плюс таблицу остатков на конец месяца по месяцам, чтоб каждый раз эти остатки не вычислять, ну а далее просто делается SQL запрос по этим таблицам. Ну а в нашем случае все это намного сложнее, но в любом случае все это делается с помощью SQL запросов. В данном случае вам надо сделать запрос на получение остатков на начало текущего месяца, затем запрос на получение прихода за текущий месяц,  плюс запрос на получение расхода за текущий месяц, ну и соответственно все это запросом в одну таблицу. Все это наверное можно сделать одним большим сложным запросом или по частям как у меня в уроке происходит вычисление остатков.))))
 
Форум » Delphi » Форум по программе Склад » Как сделать списание товаров? (Реализации модуля списания товара.)
Страница 1 из 11
Поиск:


Copyright MyCorp © 2017Конструктор сайтов - uCoz