РазделыСтатьиРазработка сайтов → Складской учет на сайте

Недавно пришлось решать задачу складского учета на сайте.

Цели:
1. Скрипт должен знать не только о наличии товара, но и вести учет по его количеству, в том числе разделение 1 товара по складам.
2. Управление должно быть удобным.
3. Учет должен быть простым, и не создавать лишней нагрузки на БД.


Я не люблю изобретать велосипеды в такой области как коммерция, они все уже изобретены.
Велосипед можно только улучшить. Например перенести локальный учет в интернетok

Поэтому за основу взят складской учет реального склада, поля в основном скопированы из реальной Карточки складского учета.

Таким образом, товар приходуется по карточкам, карточка заводится на каждый приход товара.
В учетной карточке показывается последнее движение товара по складу.
При нажатии на ссылку "подробнее" будет отображено все движение товара по карточке.

Пока готово создание и редактирование приходов/расходов.
Самое интересное было решить задачу на яваскрипте — приход/расход/остаток, то есть играясь одним параметром, можно изменять другиеpleasantry

Правила игры «Баланс»:
1. Приход/расход/остаток не могут быть отрицательными.
2. Остаток не редактируется, а вычисляется в зависимости от прихода, расхода и начального количества.
3. Расход не может быть большим, чем приход+остаток, что следует из п. 1.

Если в БД уже введены какие-либо склады или контрагенты, они должны вставляться в поле из некоего выпадающего списка. Если таких ещё нет, в поле вставляется новое значение, которое потом будет выведено в списке подсказкой из БД.

Циферки рядом с именем объекта — его ИД в базе (часто полезно знать).

Код, чтобы посмотреть как это работает:

Складской учет

Редактировать карточку учета

Склад Объект Дата Документ Контрагент Приход Расход Остаток Комментарии


Структура БД, кому интересно:
Код:

CREATE TABLE `inventory` (

  `
idint(11NOT NULL AUTO_INCREMENT COMMENT \'Номер записи\',
  `warehouse` varchar(255) NOT NULL COMMENT \'Склад\',
  `itemid` int(11) NOT NULL COMMENT \'Объект\',
  `date` varchar(20) NOT NULL COMMENT \'Дата записи\',
  `document` varchar(255) NOT NULL COMMENT \'Документ\',
  `contractor` varchar(255) NOT NULL COMMENT \'Контрагент\',
  `parish` int(11) NOT NULL COMMENT \'Приход\',
  `expense` int(11) NOT NULL COMMENT \'Расход\',
  `residue` int(11) NOT NULL COMMENT \'Остаток\',
  `comment` text NOT NULL COMMENT \'Комментарий\',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT=\'Складской учёт\'
Для списания неактуальных записей нужно завести аналогичную таблицу, с отличием в том, что `id` в ней не PRIMARY и не AUTO_INCREMENT Эта таблица понадобится в дальнейшем для просмотра движения по реальной карточке товара.
Копируется запись в другую таблицу просто, запросом:
Код:

"INSERT INTO `".$table_to."` SELECT * FROM `".$table_from."` WHERE id='".$id."';";

Если есть вопросы — задавайте, отвечу.
23.05.2013 14:50 Автор/источник: Den1xxx

Комментировать

Вы не залогинены! Регистрация

Устал читать? Напиши! Или позвони +375 29 5344286. На связи по будним дням с 800 до 1700.