IMStock (OC 2.3) — Товароучёт (Складской учёт)

IMStock (OC 2.3) — Товароучёт (Складской учёт)

Накладные, списания, закупочная цена (себестоимость). В общем, IMStock (OC 2.3) Товароучёт (Складской учёт).

Совместим с OpenCart: 2.3.x.x,
Совместим с OcStore: 2.3.x.x,
Цена
2499р.
Загружен: 22.02.2023
devimirochnik Россия портфолио
Товаров: Рейтинг: Продаж:
Название файла Имя файла Дата Действие
IMStock(2.3)_1.0.0.zip opencart_file_7912.zip 2023-02-22 23:02:46 Платный файл
IMStock(2.3)_1.1.0.zip opencart_file_5534.zip 2023-12-29 00:12:00 Платный файл
* Возможность скачивания появится после покупки

До нормализации ситуации вна Украине, модули для Украины не продаются (касается также и технической поддержки). Как ситуация нормализуется, продажи и техническая поддержка восстановятся. Не касается ХО, ЗО, ЛНР, ДНР, так как это часть РФ.

Обращаю ваше внимание, что в моих модулях нет каких-то "вшитых гадостей". Ключи не требуют подключения к интернету. Поэтому у тех, кто приобрел модуль ранее, проблем с лицензией (и т.п.) не возникнет.

-------------------------------------------------------------------------------

 

IMStock (OC 2.3) — Товароучёт (Складской учёт)

Версию для OpenCart (ocStore) 3 можно найти тут:

https://shop.opencart-russia.ru/imstock3

Что даёт владельцу интернет-магазина возможность вести учёт поступления и списания товара в купе с их закупочной ценой (себестоимостью)? Возможность вести собственными силами учёт товара в одном месте.

Вам не нужно где-то отдельно хранить накладные и списания (сервисы, специальные программы и т.п.), а потом ещё настраивать импорт, ну или выполнять ручную корректировку количества товаров. С модулем IMStock вы можете вести учёт прямо в опенкарте.

В текущий момент модуль относительно небольшой, но если будет интерес, то и модуль будет расти.

-------------------------------------------------------------------------------

Так же вам может быть интересен модуль IMReport (OC 2.3) - Расширенная отчетность продаж и заказов:

https://shop.opencart-russia.ru/imreport23

-------------------------------------------------------------------------------

 

Демо OpenCart 2.3 (demo / demo).

Ссылка - http://oc2302rs.im-cloud.ru/admin/index.php?route=extension/module/IMStock

 

Возможности модуля

1. Накладные и Списания товара.

2. Учёт себестоимости (закупочной цены) товаров. Также себестоимость сохраняется в заказах. В текущей версии без опций.

 

Накладные

У накладных существует два статуса:

1. Создано. Присваивается при создании накладной. Такие накладные можно смотреть, редактировать, удалять и переводить в статус «Завершено»

2. Завершено. Такие накладные можно только смотреть.

ВАЖНО! Накладную из статуса «Завершено» нельзя обратно вернуть в статус «Создано» или удалить. Для вычета товара необходимо воспользоваться Списанием товара.

При изменении статуса из «Создано» в «Завершено» происходит применение товарных позиций, указанных в накладной, в соответствии с формулами.

Формула для количества:

Qact = Qreal + Qpos

Qact – актуальное количество товара.

Qreal – текущее количество товара.

Qpos – количество товара, указанное в позиции накладной.

Формула для закупочной цены (себестоимости):

Вариант 1. Если количество товара в карточке было положительным

PPact = (Qreal * PPreal + Qpos * PPpos) / (Qreal + Qpos)

PPact – актуальная закупочная цена (себестоимость).

Qreal – текущее количество товара.

PPreal – текущая закупочная цена товара.

Qpos – количество товара, указанное в позиции накладной.

PPpos – закупочная цена товара, указанная в позиции накладной.

Вариант 2. Если количество товара в карточке было меньше или равно нулю

PPact = PPpos

PPact – актуальная закупочная цена (себестоимость).

PPpos – закупочная цена товара, указанная в позиции накладной.

Примечание: Закупочная цена выставляется из позиции потому, что физически товаров по текущей себестоимости нет, они восполняются из позиции накладной по указанной закупочной цене.

 

Дополнительные моменты:

1. Цена товара, указанная в позиции накладной, не может быть отрицательной, но может быть равной 0 (скажем, если товар в качестве акции был предоставлен).

2. Количество товара, указанное в позиции накладной, должно быть положительным (не может быть нулевым или отрицательным).

3. Учитывайте, что модуль в текущей версии не рассчитан на полноценный учёт предзаказа (так как это требует достаточно много времени). Т.е. формула-то корректная при отрицательном количестве, но, например, если закупочная цена при пополнении из накладной будет отличаться от той, что была в предзаказе, и заказ уже помечен как выполненный (соответственно, количество товара на складе стало отрицательное), то необходим перерасчёт себестоимости заказа, так как у части товара физически иная закупочная цена. Поэтому в текущей версии подразумевается, что реальное списание товара из заказа происходит только в тот момент, когда товара на складе достаточно (как вариант, учтите это при настройке статусов в магазине). И тому подобные моменты.

Пример для понимания. Скажем, купили 100 шт. с закупочной ценой 50 руб, а на складе было всего 50 шт. Но заказ перешёл в статус «Сделка завершена» и товар был списан (в карточке стало -50 шт.). Потом добавили ещё 100 шт., но с закупочной ценой 75 руб. В такой ситуации реальная себестоимость заказа выше, так как 50 шт. было с ЗЦ 50 руб (те, что были в карточке), а недостающие 50 шт. уже с ЗЦ 75 руб. (те, что из накладной).

 

Накладные выгрузка и загрузка CSV

Вы можете выгружать в CSV накладные, а так же создавать последующие накладные из файла CSV. Для этого в накладных существует отдельная кнопка для выгрузки, а в списке накладных для загрузки.

Когда вы загружаете накладную, то поиск соответствующих товаров может происходить по идентификатору (id), названию (name), модели (model) или артикулу (sku).

 

Особенности

1. При формировании CSV у описания перевод строк необходимо делать через конструкцию "\n" (без кавычек). Это если вручную писать текст описания.

2. Точка с запятой является разделителем, поэтому если такой символ где-то используется, то его необходимо заменять конструкцией //semi//. Скажем, было «Какой-то текст; Какой-то текст», то должно стать «Какой-то текст//semi// Какой-то текст».

3. В CSV первая строка и первая ячейка это Поставщик. Вторая строка и первая ячейка это описание. Третья строка это заголовок. Все последующие строки это товары. Порядок строк в накладной определяется порядком следования строк в CSV.

Заголовок строк выглядит следующим образом:

product_id;product_name;product_model;product_sku;quantity;purchase_price

Данные необходимо заполнять в соответствующем порядке. К примеру:

11;Товар А;Модель А;Артикул А;10;100.5

4. Учитывайте, что поиск по названию происходит в том языке, который используется в админке и формируется в том же. Это важно, так как если формировали CSV в одном языке, а импортировали в другом, то поиск по названию может ничего не дать.

5. Если при загрузке для строки находится несколько товаров (поиск по названию, модели или артикулу), то вставка не происходит.

6. Если количество меньше или равно нулю, то строка не вставляется. Также если стоимость отрицательная, то строка не вставляется.

 

Списания

У списаний существует два статуса:

1. Создано. Присваивается при создании списания. Такие списания можно смотреть, редактировать, удалять и переводить в статус «Завершено»

2. Завершено. Такие списания можно смотреть и переводить обратно в статус «Создано».

При изменении статуса из «Создано» в «Завершено» происходит применение товарных позиций, указанных в списании, в соответствии с формулами.

Формула для количества:

Qact = Qreal - Qpos

Qact – актуальное количество.

Qreal – текущее количество товара.

Qpos – количество товара, указанное в позиции списания.

Формула для закупочной цены (себестоимости):

PPact = PPreal

PPact – актуальная закупочная цена (себестоимость)

PPreal – текущая закупочная цена товара

При изменении статуса из «Завершено» в «Создано» происходит применение товарных позиций, указанных в списании, в соответствии с формулами.

Формула для количества:

Qact = Qreal + Qpos

Qact – актуальное количество.

Qreal – текущее количество товара.

Qpos – количество товара, указанное в позиции списания.

Формула для закупочной цены (себестоимости):

Вариант 1. Если количество товара в карточке было положительным

PPact = (Qreal * PPreal + Qpos * PPpos) / (Qreal + Qpos)

PPact – актуальная закупочная цена (себестоимость).

Qreal – текущее количество товара.

PPreal – текущая закупочная цена товара.

Qpos – количество товара, указанное в позиции списания.

PPpos – закупочная цена товара, указанная в позиции списания.

Вариант 2. Если количество товара в карточке было меньше или равно нулю

PPact = PPpos

PPact – актуальная закупочная цена (себестоимость).

PPpos – закупочная цена товара, указанная в позиции списания.

Примечание: Закупочная цена выставляется из позиции потому, что физически товаров по текущей себестоимости нет, они восполняются из позиции списания по указанной закупочной цене.

 

Дополнительные моменты:

1. Цена товара в позиции сохраняется из карточки товара.

2. Количество товара в позиции должно быть положительным (не может быть нулевым или отрицательным).

3. Чтобы было удобнее редактировать Списание, позиции, в которых количество товара больше, чем реальное количество, подкрашиваются красненьким. Позиции, в которых количество товара равно реальному количеству, подкрашиваются жёлтеньким.

4. Если статус списания «Создано», то отображаются актуальные количество товара, его закупочная цена, обычная цена и наименование. Если статус списания «Завершено», то отображаются значения, которые были сохранены в момент изменения статуса списания (перед его применением). Скажем, было 10 шт. товара, списывается 5 шт. В сохраненном виде будет 5 шт. списано и 10 шт., которые были перед списанием, хотя реально стало 5 шт. товара. Это специально сделано, чтобы в последующем было проще анализировать списание.

5. Учитывайте, что модуль в текущей версии не рассчитан на полноценный учёт предзаказа (так как это требует достаточно много времени). Т.е. формула-то корректная при отрицательном количестве, но, например, если закупочная цена при возврате из списания будет отличаться от той, что была в предзаказе, а заказ уже помечен как выполненный (соответственно, количество товара на складе стало отрицательное), то необходим перерасчёт себестоимости заказа, так как у части товара физически иная закупочная цена. Поэтому в текущей версии подразумевается, что реальное списание товара из заказа происходит только в тот момент, когда товара на складе достаточно (как вариант, учтите это при настройке статусов в магазине). И тому подобные моменты.

Пример для понимания. Скажем, купили 100 шт. с закупочной ценой 50 руб, а на складе было всего 50 шт. Но заказ перешёл в статус «Сделка завершена» и товар был списан (в карточке стало -50 шт.). Потом вернули из списания ещё 100 шт., но с закупочной ценой 75 руб. В такой ситуации реальная себестоимость заказа выше, так как 50 шт. было с ЗЦ 50 руб (те, что были в карточке), а недостающие 50 шт. уже с ЗЦ 75 руб. (те, что были возвращены).

 

Списания выгрузка и загрузка CSV

Вы можете выгружать в CSV списания, а так же создавать последующие списания из файла CSV. Для этого в списаниях существует отдельная кнопка для выгрузки, а в списке списаний для загрузки.

Когда вы загружаете списание, то поиск соответствующих товаров может происходить по идентификатору (id), названию (name), модели (model) или артикулу (sku).

 

Особенности

1. При формировании CSV у описания перевод строк необходимо делать через конструкцию "\n" (без кавычек). Это если вручную писать текст описания.

2. Точка с запятой является разделителем, поэтому если такой символ где-то используется, то его необходимо заменять конструкцией //semi//. Скажем, было «Какой-то текст; Какой-то текст», то должно стать «Какой-то текст//semi// Какой-то текст».

3. В CSV первая строка и первая ячейка это Пояснение. Вторая строка и первая ячейка это описание. Третья строка это заголовок. Все последующие строки это товары. Порядок строк в списании определяется порядком следования строк в CSV.

Заголовок строк выглядит следующим образом:

product_id;product_name;product_model;product_sku;quantity;product_quantity;product_purchase_price;product_price

Заголовки product_quantity;product_purchase_price;product_price являются информационными (заполняются при выгрузке CSV) и поэтому их не обязательно заполнять для загрузки.

Данные необходимо заполнять в соответствующем порядке. К примеру:

11;Товар А;Модель А;Артикул А;10

4. Учитывайте, что поиск по названию происходит в том языке, который используется в админке и формируется в том же. Это важно, так как если формировали CSV в одном языке, а импортировали в другом, то поиск по названию может ничего не дать.

5. Если при загрузке для строки находится несколько товаров (поиск по названию, модели или артикулу), то вставка не происходит.

6. Если количество меньше или равно нулю, то строка не вставляется.

 

Учёт закупочной цены (себестоимости) в заказах

Закупочная цена (себестоимость) сохраняется как для отдельных товаров в заказе, так и в самом заказе (суммарная).

Сохранение закупочной цены товаров в заказе происходит в четырёх случаях. В момент стандартных создания или редактирования заказа. В момент, когда товар списывается из карточки (при соответствующем изменении статуса заказа). В момент, когда товар возвращается в карточку (при соответствующем изменении статуса заказа).

Пересчёт закупочной цены заказа происходит, когда сохраняется закупочная цена товаров этого заказа, а так же при любом изменении статуса заказа. Пересчёт в данном случае это суммирование того, что указано в позициях товаров.

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

При изменении статуса заказа в тот, при котором происходит возврат товара стандартным механизмом опенкарта, количество товара корректируется стандартным образом, а закупочная цена товара рассчитывается по формуле.

Формула для закупочной цены (себестоимости):

Вариант 1. Если количество товара в карточке было положительным

PPact = (Qreal * PPreal + Qporder * PPporder) / (Qreal + Qporder)

PPact – актуальная закупочная цена (себестоимость).

Qreal – текущее количество товара.

PPreal – текущая закупочная цена товара.

Qporder – количество товара, указанное в позиции заказа.

PPporder – закупочная цена товара, указанная в позиции заказа.

Вариант 2. Если количество товара в карточке было меньше или равно нулю

PPact = PPporder

PPact – актуальная закупочная цена (себестоимость).

PPporder – закупочная цена товара, указанная в позиции заказа.

Примечание: Закупочная цена выставляется из позиции потому, что физически товаров по текущей себестоимости нет, они восполняются из позиции заказа по указанной закупочной цене.

 

Дополнительные моменты:

1. Если товар не вычитается (в карточке товара указано не вычитать со склада), то количество товара и закупочная цена (себестоимость) остаются неизменными.

2. Учитывайте, что модуль в текущей версии не рассчитан на полноценный учёт предзаказа (так как это требует достаточно много времени). Т.е. формула-то корректная при отрицательном количестве, но, например, не происходит учёта предыдущих заказов.

Пример для понимания. Заказали 100 шт. с закупочной ценой 50 руб. На складе было 100 шт., т.е. они и списались. Потом поставили товар с ценой 75 руб, ещё 50 шт. На складе стало 50 шт. с ЗЦ 75 рублей. Потом оформили второй заказ с 100 шт. товара с закупочной ценой 75 руб. В карточке товара стало -50 шт. Потом первый заказ полностью вернули и из этого товара в реальности пополнили второй заказ. В такой ситуации себестоимость второго заказа не 100 шт. * 75 руб, а (50 шт. * 75 руб + 50 шт. * 50 руб).

3. Учитывайте, что стандартное редактирование заказа в админке может приводить к возврату и, соответственно, перерасчёту закупочной цены (себестоимости). Пример того, почему это важно. Скажем, вы установили модуль, но в старых-то заказах закупочной цены не было и поэтому у товаров нулевые значения себестоимости (модуль-то не знает какая в то время была себестоимость товаров). Соответственно, при возврате модуль будет считать, что у товаров в заказе была нулевая закупочная цена, и это повлияет на закупочную цену в карточке товаров.

 

Как перенести данные закупочной цены (себестоимости) из других полей - инструкция

В момент установки модуля к таблице product добавляется поле purchase_price с типом DECIMAL (15, 4) .

Если у вас ранее было аналогичное поле с сохранёнными закупочными ценами (себестоимостью), то ничего делать не нужно (модуль не заменит поле). Единственно, важно убедиться, что тип поля DECIMAL (15, 4) — это важно для точности расчётов.

Если у вас ранее было поле с закупочной ценой, но с другим названием, то для переноса необходимо выполнить следующий SQL-запрос (но обязательно прочтите инструкцию полностью):

------------------------

update `oc_product` set `purchase_price` = `[Field]`

------------------------

Вместо [Field] вставьте то поле, которое вы использовали ранее.

Например, для поля cost запрос будет следующим:

------------------------

update `oc_product` set `purchase_price` = `cost`

------------------------

Как видите, это очень просто, но обязательно прочтите дальше!

Несколько важных моментов:

1. Обязательно сделайте бэкап (стандартная практика для любых случаев)!

2. Если товаров много, то может потребоваться соответствующее время. Учитывайте это.

3. Учтите, что в запросе нужно заменить префикс, если при установке вы изменили стандартный префикс "oc_".

Примечание: Данный инструмент специально не добавлен в модуль, чтобы обычный пользователь не мог случайно перезатереть данные.

 

Особенности

1. Если у пользователя нет доступа к модулю (к основному контроллеру), то себестоимость в админке в заказах для пользователя не отображается, но расчёты себестоимости происходят.

2. Важно! Чтобы осуществлялся корректный подсчёт закупочной цены (себестоимости) в заказе, лицензия модуля должна быть активной, т.е. введены ключи или действует период 5 дней для ввода ключей после установки модуля (не демо, не триал и т.п.). Иначе при включенных модификаторах модуля сохраняются нулевые значения закупочной цены (себестоимости) заказа и его товаров (в те моменты, когда это предусмотрено модулем). Сделано так по той причине, что иначе может возникать некорректный расчёт (как при частичном, так и при полном отключении расчётов). Ну или вы можете отключить модификаторы модуля (ocmod), тогда никаких расчётов модуль не будет осуществлять.

3. Если вы планируете указывать много позиций в накладных и списаниях, то необходимо увеличить php параметр max_input_vars, так как при действиях с накладными и списаниями передаётся большое количество полей. Когда тестировал, то для порядка 1500 позиций значения в 10000 было вполне достаточно.

4. Учитывайте, что в накладных и списаниях сохраняются актуальные данные только при действиях (например, сохранить и завершить). В частности, в списках списаний может отображаться неактуальная сумма закупочной цены. Происходит это потому, что количество элементов в накладных и списаниях может быть большим и, соответственно, отображение списка накладных и списаний с полноценным пересчётом приводило бы к достаточно большой нагрузке на базу данных.

5. В текущей версии модуль не подразумевает закупочную цену у опций, учитывайте это.

6. Модуль подразумевает, что у товаров должно быть выставлено поле «Вычитать со склада» (Включено вычитание).

7. В случае если у товара не выставлено поле «Вычитать со склада» (Отключено вычитание), то накладные и списания нельзя использовать для такого товара. Однако поле «Закупочная цена» все равно сохраняется в заказе. Но при этом не корректируется закупочная цена товара в те моменты, когда происходит возврат товара на склад (изменение статуса заказа, при котором товар с включенным вычитанием был бы возвращен и была бы пересчитана закупочная цена).

8. Требуется, чтобы в настройках сайта было выставлено mbstring.func_overload 0. Если вы не знаете как это сделать , то уточните в вашем хостинге. В большинстве случаев по умолчанию это значение 0 (вам, как клиенту, ничего не нужно делать), но в некоторых хостингах выставляют значение 2. Это актуально в тех случаях, если у вас возникли проблемы с ключами и активацией модуля.

9. Требуется boostrap и jquery

 

Установка, переустановка и использование

0. Сделайте бэкап сайта — это стандартная рекомендация для любых ситуаций, когда вы меняете или корректируете что-либо в сайте, которая позволяет в случае чего экономить кучу времени, сил и нервов.

1. Распакуйте архив и скопируйте в корень сайта каталоги «admin» и «system». Не волнуйтесь, никакие файлы не будут заменены.

2. Откройте админку и установите модуль (переустановите). Это обязательно нужно сделать, чтобы были созданы необходимые таблицы модуля и добавлены необходимые поля в стандартные таблицы опенкарта.

3. Откройте Установку расширений и последовательно загрузите файлы "imstock_menu_fast_link.ocmod.xml" и "imstock_purchase_price.ocmod.xml ". После чего обновите модификаторы. Если переустанавливаете модуль (следующие версии), то необходимо удалить предыдущие модификаторы перед установкой.

4. Откройте в админке модуль (редактирование).

5. Пользуйтесь.

Первая установка (или повышении версии) может происходить медленно, так как создаются необходимые индексы в БД.

 

Лицензия и использование

Сделано для версий OpenCart 2.3.0.2, ocStore 2.3.0.2-2.3.0.2.3

Лицензия распространяется только для одного сайта (одного интернет-магазина). Т.е. 1 домен + все поддомены = 1 оплата. Лицензия не выписывается для TLD и прочих доменов, которые подразумевают, что пользователи могут создавать поддомены. Например, нельзя в качестве домена указать RU или COM.RU.

Лицензия для тестового домена выписывается только в том случае, когда видно, что данный тестовый домен не может быть использован для реального сайта (интернет-магазина).

Купив модуль, вы автоматически соглашаетесь с текстом лицензии.

Модуль имеет принцип распространения "as is" ("Как есть").

Ввод лицензионного ключа необходимо осуществить в течение 5 дней после установки модуля. Лицензионный ключ состоит из двух частей.

Ключи необходимо вводить так, как они были присланы, без лишних пробелов и символов.

Запрещается несанкционированное использование, копирование, перепродажа, передача модуля третьим лицам, а также иные способы распространения, в том числе в ознакомительных целях.

Если у вас русский домен, то необходимо указывать то имя, которое указано в config.php в корне сайта.
 

История версий

Версия 1.1.0

- Импорт/Экспорт накладных и списаний.

- Различные правки

Версия 1.0.0

- Выход модуля

 

IMStock (OC 2.3) — Товароучёт (Складской учёт) IMStock (OC 2.3) — Товароучёт (Складской учёт) IMStock (OC 2.3) — Товароучёт (Складской учёт) IMStock (OC 2.3) — Товароучёт (Складской учёт) IMStock (OC 2.3) — Товароучёт (Складской учёт) IMStock (OC 2.3) — Товароучёт (Складской учёт) IMStock (OC 2.3) — Товароучёт (Складской учёт) IMStock (OC 2.3) — Товароучёт (Складской учёт) IMStock (OC 2.3) — Товароучёт (Складской учёт) IMStock (OC 2.3) — Товароучёт (Складской учёт) IMStock (OC 2.3) — Товароучёт (Складской учёт) IMStock (OC 2.3) — Товароучёт (Складской учёт) IMStock (OC 2.3) — Товароучёт (Складской учёт) IMStock (OC 2.3) — Товароучёт (Складской учёт)

Дополнительные опции товара

* Адрес сайта:
Тестовый домен:

Написать отзыв

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

Если комментарии не отобразились по какой то причине, то вы можете прочитаь их на отдельной технической странице комментариев

После просмотра, пожалуйста сообщите нам о возможной проблеме через форму обратной связи.

Оставить комментарий



Примечание: HTML разметка не поддерживается! Используйте обычный текст.

Введите код, указанный на картинке: