Поиск

Привет, Гость

Войти
Идентификация
Я забыл свой пароль
Регистрация

Чтобы сайт планомерно развивался, бывает достаточно правильно назначить ответственного.

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

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



Цели:

1. Скрипт должен знать не только о наличии товара, но и вести учет по его количеству, в том числе разделение 1 товара по складам.

2. Управление должно быть удобным.

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





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

Велосипед можно только улучшить. Например перенести локальный учет в интернетok



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



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

В учетной карточке показывается последнее движение товара по складу.

При нажатии на ссылку "подробнее" будет отображено все движение товара по карточке.



Пока готово создание и редактирование приходов/расходов.

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



Правила игры «Баланс»:

1. Приход/расход/остаток не могут быть отрицательными.

2. Остаток не редактируется, а вычисляется в зависимости от прихода, расхода и начального количества.

3. Расход не может быть большим, чем приход+остаток, что следует из п. 1.



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



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



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

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

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

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




Структура БД, кому интересно:
Код:
php CREATE TABLE `inventory` (

  `id` int(11) NOT 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."';";
Если есть вопросы — задавайте, отвечу.
Дата 2013-05-23 15:50:41

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

Вы не залогинены!

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