Закажите бесплатную презентацию продуктов РосБизнесСофт прямо сейчас!
Складской учет позволяет вести количественный учет товара на складах организации. Количественный учет в Системе ведется только по «Номенклатуре» с видом «Товар» (НЕ УСЛУГА).
После добавления новой «Номенклатуры» поменять ее вид уже нельзя.
Активация функций складского учета происходит в меню “Настройки” — “Общие настройки” — “Складской учет” (галочка). По умолчанию данная галочка стоит в Системе.
Менять количество товара в любом складском документе через редактирование “Табличной части” нельзя и заменять товар тоже. Редактирование строки “Табличной части” идет только путем удалением и добавление заново товара табличную часть документа. Это необходимо для корректной работы складских регистров.
Чтобы завести остатки товара на склад необходимо создать новую «Приходную накладную» и добавить товар.
Если остатки товара загружаются в систему, например через CSV, то разработчик должен через код создать новый документ «Приходная накладная», далее строку в табличную часть «Номенклатура», а также запись в регистр «Складского учета» методом stockIncrease (см. ниже).
Чтобы работать со складом необходимо подключить trait Stock в классе на закладке “Сценарий (PHP-код)» в любой форме:
use \Applications\Stock\Enlist as Stock;
С версии Системы 21.06 класс, отвечающий за работу склада, находится в «Форме списка» в справочнике «Склад» по адресу:
/configurator/references.storehouses/?formname=stock/list
Пример использования класса для версии 21.06 и выше:
Stock::getNumber();
В более ранних версиях класс находится в ядре Системы и подключается:
use \Kernel\Actions\Stock;
Пример использования класса для версии 20.09 и ниже:
$this->getNumber();
или
self::getNumber();
Для более быстрого знакомство с модулем «Склад» рекомендуем искать интересующий метод по формам в Конфигураторе (в шапке находится поисковая строка).
Где:
Возвращаемый результат:
(int) или массив: [0 => количество на складе, 1 => всего в резерве]
Пример использования:
Stock::stockGetNumber($productID, $storehouseId);
Увеличение товара на складе складским документом.
Где:
Результат вызова:
["status" => "success", "message" => ""];
Пример использования:
Stock::stockIncrease ($this->structure, $this->structure->product->id, $this->structure->owner->storehouse->id, $this->structure->number, $this->structure->price_nds, $this->structure->gtd->id);
Уменьшение товара на склада складским документом.
Где:
Результат вызова:
["status" => "success", "message" => ""];
Пример использования:
Stock::stockDecrease($this->structure, $this->structure->product->id, $this->structure->owner->storehouse->id, $this->structure->number, $this->structure->price_nds, $this->structure->gtd->id);
Используется при удалении строки из «Табличной части» складского документа (Отгрузки, Прихода и т.д.). Также вызывается при удалении документа целиком (по каждой строке табличной части). По факту количество товара на складе автоматически добавляется или уменьшается (запись в «Складском регистре» принимаем флаг visible=»0″).
Где:
Результат вызова:
["status" => "success", "message" => ""];
Пример использования:
Stock::stockDetele($object);
Данный метод позволяет рассчитать себестоимость продаваемого (списанного, перемещенного) товара по методу FIFO.
Где:
Возвращаемый результат:
(double)
Пример использования:
Stock::stockGetProfit($position, $storehouse, $number, $gtd, $price);
Где:
Возвращаемый результат:
true или false
Где:
Пример использования:
Stock::stockCheckControl($productId, $storehouseId, $number, $gtdId);
Позволяет узнать, ведется ли складской учет в системе или нет.
Возвращаемый результат:
true или false
Пример использования:
Stock::stockOnlyCheck();
Если включен контроль и у номенклатуры указан минимальный остаток, то при списании номенклатуры у пользователям с флагом MIN_BALANCE будут отправлены уведомления, а также создаться автоматом “Заявка на закупку” (documents.purchase).
Возвращаемый результат:
true или false
Пример использования:
Stock::stockCheckBalance();
Автоматически рассчитывает значения полей документа, если такие есть (total, nds, profit) и для табличных частей если такие есть (nds, nds_procent, profit, total).
Где:
Пример использования:
Stock::recountDocument($this->structure); Stock::recountDocument($this->structure, true, "sets");
Этот метод используется в документе «Счет», когда в счете товара «А» 10 шт, а отгружено 3 шт, то выводится поле в таб. части «10/3″. Значение «3» — результат работы данной функции.
Где:
Возвращаемый результат: количество отгруженного уже товара
(int)
Пример использования:
Stock::stockGetCountDispatched($position);
Метод используется для получения массива доступного товара с разбиением по ГТД (Группировка по «ГТД»), основная логика списания прописана в каждом документе.
Где:
Возвращаемый результат:
(Array)
Пример использования:
Stock::stockGetFIFOLines($productId, $storehouseId, $number)
Для резервирования товара на складе используется объект «Резервы» (registers.reserve). При создании нового резерва необходимо учитывать доступное количество товара на выбранном складе. В резерв ставиться только определенный товар и на определенном складе. Резерв товара по умолчанию присутствует в модуле «Счета» (documents.orders). При постановке товара в резерв в «Счете» создается также запись в регистре «Резервы» (registers.reserve) с необходимым количеством товара (положительное число).
Если резерв по товару в «Счете» был изменен в большую сторону, то в регистре появляется новая запись со знаком «плюс» на измененное количество (было «2», сделали «5», в резерв попадает «+3»). Если резерв был изменен в меньшую сторону, то в регистр должна попасть запись со знаком «минус» (было «5», сделали «3», в регистр попадет «-2»). Если товар был в счете изменен, то резерв со старого товара снимается, а на новый товар резерв ставиться. Если происходит отгрузка по «Счету», то резерв снимается с отгруженных позиций.
Важно! Если по счету был резерв, счет отгрузили, и потом отгрузку удалили, то резерв в «Счете» автоматически не восстанавливается!
Добавление товара в резерв на определенном складе. Обычно резервирование товара происходит в документе “Счет” или “Ремонте”.
Где:
Возвращаемый результат:
Объект новой записи из регистра “Reserve” (“Registers.reserve”)
Пример использования:
Stock::reserveAdd($this->structure, $this->structure->number);
Удаление резерва товара со склада. Обычно резерв снимается при отгрузки товара.
Важно: При удалении отгрузки или строки табличной части резерв обратно не ставится.
Где:
Возвращаемый результат:
Возвращает объект записи из registers.reserve.
Пример использования:
Stock::reserveOut($this->structure, $this->structure->number);
Где:
Возвращаемый результат:
(int) — количество зарезервированного товара
Пример использования:
Stock::reserveSearch($this->structure, $this->structure->owner->storehouse->id, $this->structure->product->id)
Где:
Возвращаемый результат:
Возвращает массив резервов.
Пример использования:
Stock::reserveGetOrders($this->structure->id, $storehouseId);
Пример использования представлен на форме:
/products_reserve/edit